summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
Diffstat (limited to 'Build')
-rw-r--r--Build/source/libs/gd/ChangeLog5
-rw-r--r--Build/source/libs/gd/Makefile.am3
-rw-r--r--Build/source/libs/gd/Makefile.in8
-rw-r--r--Build/source/libs/gd/README2
-rwxr-xr-xBuild/source/libs/gd/configure20
-rw-r--r--Build/source/libs/gd/libgd-PATCHES/ChangeLog9
-rw-r--r--Build/source/libs/gd/libgd-PATCHES/TL-Changes4
-rw-r--r--Build/source/libs/gd/libgd-PATCHES/patch-01-win3224
-rw-r--r--Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall10
-rw-r--r--Build/source/libs/gd/libgd-src/CMakeLists.txt28
-rw-r--r--Build/source/libs/gd/libgd-src/ChangeLog462
-rw-r--r--Build/source/libs/gd/libgd-src/Makefile.am6
-rw-r--r--Build/source/libs/gd/libgd-src/README10
-rw-r--r--Build/source/libs/gd/libgd-src/README.md41
-rw-r--r--Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM2685
-rw-r--r--Build/source/libs/gd/libgd-src/VMS/README.VMS142
-rwxr-xr-xBuild/source/libs/gd/libgd-src/bootstrap.sh54
-rw-r--r--Build/source/libs/gd/libgd-src/cmake/modules/AC_HEADER_STDC.cmake49
-rw-r--r--Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake4
-rw-r--r--Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake (renamed from Build/source/libs/gd/libgd-src/cmake/modules/FindVPX.cmake)65
-rw-r--r--Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake12
-rw-r--r--Build/source/libs/gd/libgd-src/config/Makefile.am14
-rw-r--r--Build/source/libs/gd/libgd-src/config/gdlib-config.in195
-rw-r--r--Build/source/libs/gd/libgd-src/config/gdlib.pc.in22
-rw-r--r--Build/source/libs/gd/libgd-src/config/getver.pl42
-rw-r--r--Build/source/libs/gd/libgd-src/config/test-driver139
-rw-r--r--Build/source/libs/gd/libgd-src/configure.ac795
-rw-r--r--Build/source/libs/gd/libgd-src/docs/README.CMAKE86
-rw-r--r--Build/source/libs/gd/libgd-src/docs/README.JPN78
-rw-r--r--Build/source/libs/gd/libgd-src/docs/README.TESTING132
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html193
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html113
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html53
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html81
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html57
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html63
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html54
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html124
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html59
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html56
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html83
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html65
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html77
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html45
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html53
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html49
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html51
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html59
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html49
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html51
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html70
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html47
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html39
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html45
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html108
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html89
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html1
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html34
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html34
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html34
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html46
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html34
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html42
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html34
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js841
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js1526
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js152
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html15
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html20
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css828
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl116
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.ndbin0 -> 7 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.ndbin0 -> 26 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd96
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.ndbin0 -> 8 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.ndbin0 -> 8 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.ndbin0 -> 187 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.ndbin0 -> 3159 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.ndbin0 -> 122 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.ndbin0 -> 64315 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt99
-rwxr-xr-xBuild/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh51
-rw-r--r--Build/source/libs/gd/libgd-src/examples/CMakeLists.txt12
-rw-r--r--Build/source/libs/gd/libgd-src/examples/Makefile498
-rw-r--r--Build/source/libs/gd/libgd-src/m4/ax_append_flag.m471
-rw-r--r--Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4122
-rw-r--r--Build/source/libs/gd/libgd-src/m4/ax_openmp.m4109
-rw-r--r--Build/source/libs/gd/libgd-src/m4/ax_pthread.m4634
-rw-r--r--Build/source/libs/gd/libgd-src/m4/ax_require_defined.m437
-rw-r--r--Build/source/libs/gd/libgd-src/m4/visibility.m4104
-rw-r--r--Build/source/libs/gd/libgd-src/m4/w32.m422
-rw-r--r--Build/source/libs/gd/libgd-src/netware/get_exp.awk74
-rw-r--r--Build/source/libs/gd/libgd-src/netware/get_ver.awk56
-rw-r--r--Build/source/libs/gd/libgd-src/src/CMakeLists.txt112
-rw-r--r--Build/source/libs/gd/libgd-src/src/Makefile.am165
-rw-r--r--Build/source/libs/gd/libgd-src/src/annotate.c11
-rw-r--r--Build/source/libs/gd/libgd-src/src/circletexttest.c4
-rw-r--r--Build/source/libs/gd/libgd-src/src/config.h.cmake66
-rw-r--r--Build/source/libs/gd/libgd-src/src/config.hin272
-rw-r--r--Build/source/libs/gd/libgd-src/src/entities.html1362
-rw-r--r--Build/source/libs/gd/libgd-src/src/entities.tcl100
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd.c539
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd.h17
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_bmp.c22
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_color_map.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_color_match.c6
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_crop.c13
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_filename.c2
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_filter.c60
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_gd.c6
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_gd2.c67
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_gif_out.c12
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_intern.h2
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_interpolation.c748
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_io_dp.c12
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_io_file.c6
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_io_ss.c6
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_io_stream.cxx290
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_jpeg.c24
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_nnquant.c16
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_png.c113
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_rotate.c56
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_ss.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_tga.c171
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_tiff.c89
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_topal.c45
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_transform.c15
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_version.c15
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_wbmp.c30
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_webp.c262
-rw-r--r--Build/source/libs/gd/libgd-src/src/gd_xbm.c39
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfontg.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfontl.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfontmb.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfonts.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfontt.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdft.c45
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdfx.c39
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdhelpers.c3
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdkanji.c21
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdpp.cxx544
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdtest.c96
-rw-r--r--Build/source/libs/gd/libgd-src/src/gdtestft.c2
-rw-r--r--Build/source/libs/gd/libgd-src/src/webpimg.c905
-rw-r--r--Build/source/libs/gd/libgd-src/src/webpimg.h181
-rw-r--r--Build/source/libs/gd/libgd-src/src/webpng.c448
-rw-r--r--Build/source/libs/gd/libgd-src/tests/CMakeLists.txt40
-rw-r--r--Build/source/libs/gd/libgd-src/tests/Makefile.am457
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c18
-rw-r--r--Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.pngbin217 -> 257 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am25
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c74
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2bin0 -> 512 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2bin0 -> 1676 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c21
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2bin0 -> 67108882 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdhelpers.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c12
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c37
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c40
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.pngbin0 -> 2668 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.pngbin0 -> 2144 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c71
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.pngbin0 -> 11853 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.pngbin0 -> 1219 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c67
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c22
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am16
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c24
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c34
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.pngbin0 -> 137 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c21
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.pngbin0 -> 713 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am12
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.pngbin0 -> 1014 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am18
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c47
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.pngbin0 -> 1425 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c19
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am29
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c16
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c29
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c75
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.pngbin0 -> 4697 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c53
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c27
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.pngbin30195 -> 49446 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.pngbin34731 -> 100262 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.pngbin36734 -> 124364 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.pngbin36631 -> 134440 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.pngbin36759 -> 124364 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.pngbin34775 -> 100262 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.pngbin30955 -> 49446 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.pngbin35010 -> 100262 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.pngbin36899 -> 124364 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.pngbin37111 -> 134440 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.pngbin36771 -> 124364 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.pngbin34593 -> 100262 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.pngbin30299 -> 49446 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c30
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.pngbin6363 -> 2371 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpgbin10619 -> 0 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.pngbin0 -> 49446 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c31
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c21
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c21
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c34
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c95
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c382
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h40
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am25
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00005.c14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00006.c17
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00060.c12
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00066.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00181.c24
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00227.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am21
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c60
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.pngbin0 -> 2088 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpegbin0 -> 18938 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/Makemodule.am20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/bug00011.c9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/bug00033.c10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/bug00086.c3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/bug00088.c15
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/png_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/test_config.h.in12
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt12
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am15
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00084.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00084.tgabin0 -> 9018 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00247.c14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00247.tgabin0 -> 74 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c19
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tgabin0 -> 36 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00248.c14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00248.tgabin0 -> 816 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c16
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tgabin0 -> 816 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c84
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c20
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/bug00111.c25
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c50
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xpm/color_name.c6
-rw-r--r--Build/source/libs/gd/libgd-src/thumbs.bat37
-rwxr-xr-xBuild/source/libs/gd/libgd-src/thumbs.sh320
-rw-r--r--Build/source/libs/gd/libgd-src/windows/Makefile.vc400
-rw-r--r--Build/source/libs/gd/libgd-src/windows/gentest.bat35
-rw-r--r--Build/source/libs/gd/libgd-src/windows/libgd.rc118
-rw-r--r--Build/source/libs/gd/libgd-src/windows/msys/Makefile2
-rw-r--r--Build/source/libs/gd/libgd-src/windows/msys/README.MSYS.md130
-rw-r--r--Build/source/libs/gd/libgd-src/windows/msys/deps.mk2
-rw-r--r--Build/source/libs/gd/libgd-src/windows/readme.md20
-rw-r--r--Build/source/libs/gd/libgd-src/windows/run_tests.bat10
-rw-r--r--Build/source/libs/gd/version.ac2
421 files changed, 16672 insertions, 8826 deletions
diff --git a/Build/source/libs/gd/ChangeLog b/Build/source/libs/gd/ChangeLog
index 7afcc5167f1..c32e3c9bba7 100644
--- a/Build/source/libs/gd/ChangeLog
+++ b/Build/source/libs/gd/ChangeLog
@@ -1,3 +1,8 @@
+2016-12-23 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import libgd-2.2.3.
+ * Makefile.am, version.ac: Adapted.
+
2016-02-16 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
* Makefile.am, configure.ac: New convention.
diff --git a/Build/source/libs/gd/Makefile.am b/Build/source/libs/gd/Makefile.am
index da84cea3366..1c13740ecf9 100644
--- a/Build/source/libs/gd/Makefile.am
+++ b/Build/source/libs/gd/Makefile.am
@@ -74,8 +74,7 @@ libgd_a_SOURCES = \
@GD_TREE@/src/gdkanji.c \
@GD_TREE@/src/gdtables.c \
@GD_TREE@/src/gdxpm.c \
- @GD_TREE@/src/wbmp.c \
- @GD_TREE@/src/webpimg.c
+ @GD_TREE@/src/wbmp.c
$(libgd_a_OBJECTS): config.force
diff --git a/Build/source/libs/gd/Makefile.in b/Build/source/libs/gd/Makefile.in
index 07e2e0643d8..32a8f1defa3 100644
--- a/Build/source/libs/gd/Makefile.in
+++ b/Build/source/libs/gd/Makefile.in
@@ -157,7 +157,7 @@ am_libgd_a_OBJECTS = @GD_TREE@/src/gd.$(OBJEXT) \
@GD_TREE@/src/gdfx.$(OBJEXT) @GD_TREE@/src/gdhelpers.$(OBJEXT) \
@GD_TREE@/src/gdkanji.$(OBJEXT) \
@GD_TREE@/src/gdtables.$(OBJEXT) @GD_TREE@/src/gdxpm.$(OBJEXT) \
- @GD_TREE@/src/wbmp.$(OBJEXT) @GD_TREE@/src/webpimg.$(OBJEXT)
+ @GD_TREE@/src/wbmp.$(OBJEXT)
libgd_a_OBJECTS = $(am_libgd_a_OBJECTS)
am_gdtest_OBJECTS = gdtest-gdtest.$(OBJEXT)
gdtest_OBJECTS = $(am_gdtest_OBJECTS)
@@ -667,8 +667,7 @@ libgd_a_SOURCES = \
@GD_TREE@/src/gdkanji.c \
@GD_TREE@/src/gdtables.c \
@GD_TREE@/src/gdxpm.c \
- @GD_TREE@/src/wbmp.c \
- @GD_TREE@/src/webpimg.c
+ @GD_TREE@/src/wbmp.c
@build_TRUE@dist_check_SCRIPTS = libgd.test
@build_TRUE@TESTS = libgd.test
@@ -838,8 +837,6 @@ clean-noinstLIBRARIES:
@GD_TREE@/src/$(DEPDIR)/$(am__dirstamp)
@GD_TREE@/src/wbmp.$(OBJEXT): @GD_TREE@/src/$(am__dirstamp) \
@GD_TREE@/src/$(DEPDIR)/$(am__dirstamp)
-@GD_TREE@/src/webpimg.$(OBJEXT): @GD_TREE@/src/$(am__dirstamp) \
- @GD_TREE@/src/$(DEPDIR)/$(am__dirstamp)
libgd.a: $(libgd_a_OBJECTS) $(libgd_a_DEPENDENCIES) $(EXTRA_libgd_a_DEPENDENCIES)
$(AM_V_at)-rm -f libgd.a
@@ -906,7 +903,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/src/$(DEPDIR)/gdtables.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/src/$(DEPDIR)/gdxpm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/src/$(DEPDIR)/wbmp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/src/$(DEPDIR)/webpimg.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
diff --git a/Build/source/libs/gd/README b/Build/source/libs/gd/README
index 138b40a858b..7cedac7adc4 100644
--- a/Build/source/libs/gd/README
+++ b/Build/source/libs/gd/README
@@ -1,4 +1,4 @@
- Building libgd-2.1.1 as part of the TL tree
+ Building libgd-2.2.3 as part of the TL tree
=========================================
This directory libs/gd/ uses a proxy Makefile.am to build the gd library
diff --git a/Build/source/libs/gd/configure b/Build/source/libs/gd/configure
index e94f95ac41f..d6eee516a48 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.1.1.
+# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.2.3.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='gd (TeX Live)'
PACKAGE_TARNAME='gd--tex-live-'
-PACKAGE_VERSION='2.1.1'
-PACKAGE_STRING='gd (TeX Live) 2.1.1'
+PACKAGE_VERSION='2.2.3'
+PACKAGE_STRING='gd (TeX Live) 2.2.3'
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.1.1 to adapt to many kinds of systems.
+\`configure' configures gd (TeX Live) 2.2.3 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.1.1:";;
+ short | recursive ) echo "Configuration of gd (TeX Live) 2.2.3:";;
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.1.1
+gd (TeX Live) configure 2.2.3
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.1.1, which was
+It was created by gd (TeX Live) $as_me 2.2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3831,7 +3831,7 @@ fi
# Define the identity of the package.
PACKAGE='gd--tex-live-'
- VERSION='2.1.1'
+ VERSION='2.2.3'
cat >>confdefs.h <<_ACEOF
@@ -6569,7 +6569,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by gd (TeX Live) $as_me 2.1.1, which was
+This file was extended by gd (TeX Live) $as_me 2.2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6635,7 +6635,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-gd (TeX Live) config.status 2.1.1
+gd (TeX Live) config.status 2.2.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/gd/libgd-PATCHES/ChangeLog b/Build/source/libs/gd/libgd-PATCHES/ChangeLog
index bb889a51005..3f42e531be3 100644
--- a/Build/source/libs/gd/libgd-PATCHES/ChangeLog
+++ b/Build/source/libs/gd/libgd-PATCHES/ChangeLog
@@ -1,3 +1,12 @@
+2016-12-23 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import libgd-2.2.3 source tree from:
+ https://github.com/libgd/libgd/releases
+ * patch-01-win32: Adapted.
+ * patch-02-no-stdcall: Adapted.
+ * patch-03-ceill: Removed.
+ * patch-04-double-semicolon: Removed.
+
2015-01-15 Peter Breitenlohner <peb@mppmu.mpg.de>
* patch-04-double-semicolon: Build fix for Visual Studio 2010,
diff --git a/Build/source/libs/gd/libgd-PATCHES/TL-Changes b/Build/source/libs/gd/libgd-PATCHES/TL-Changes
index 4e822ab3e8b..d1699630241 100644
--- a/Build/source/libs/gd/libgd-PATCHES/TL-Changes
+++ b/Build/source/libs/gd/libgd-PATCHES/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the libgd-2.1.1/ tree as obtained from:
- https://bitbucket.org/libgd/gd-libgd/downloads
+Changes applied to the libgd-2.2.3/ tree as obtained from:
+ https://github.com/libgd/libgd/releases
Removed:
Makefile.in
diff --git a/Build/source/libs/gd/libgd-PATCHES/patch-01-win32 b/Build/source/libs/gd/libgd-PATCHES/patch-01-win32
index 66c6d4fe915..9381e137726 100644
--- a/Build/source/libs/gd/libgd-PATCHES/patch-01-win32
+++ b/Build/source/libs/gd/libgd-PATCHES/patch-01-win32
@@ -1,19 +1,19 @@
-diff -ur libgd-2.1.1.orig/src/gdft.c libgd-2.1.1/src/gdft.c
---- libgd-2.1.1.orig/src/gdft.c 2015-01-14 02:10:56.000000000 +0100
-+++ libgd-2.1.1/src/gdft.c 2015-01-14 10:47:30.790634045 +0100
-@@ -1638,6 +1638,16 @@
+diff -ur libgd-2.2.3.orig/src/gdft.c libgd-2.2.3/src/gdft.c
+--- libgd-2.2.3.orig/src/gdft.c Thu Jul 21 17:32:27 2016
++++ libgd-2.2.3/src/gdft.c Fri Dec 23 23:08:05 2016
+@@ -1646,6 +1646,16 @@
*/
*fontpath = NULL;
fontsearchpath = getenv ("GDFONTPATH");
+#ifdef _WIN32
-+ if (!fontsearchpath) {
-+ char *ffptr = getenv ("SYSTEMROOT");
-+ if (ffptr) {
-+ fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
-+ strcpy(fontsearchpath, ffptr);
-+ strcat(fontsearchpath, "\\fonts");
-+ }
-+ }
++ if (!fontsearchpath) {
++ char *ffptr = getenv ("SYSTEMROOT");
++ if (ffptr) {
++ fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
++ strcpy(fontsearchpath, ffptr);
++ strcat(fontsearchpath, "\\fonts");
++ }
++ }
+#endif
if (!fontsearchpath)
fontsearchpath = DEFAULT_FONTPATH;
diff --git a/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall b/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall
index f493ede7614..7f2b0c623cd 100644
--- a/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall
+++ b/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall
@@ -1,7 +1,7 @@
-diff -ur libgd-2.1.1.orig/src/gd.h libgd-2.1.1/src/gd.h
---- libgd-2.1.1.orig/src/gd.h 2015-01-14 02:15:47.000000000 +0100
-+++ libgd-2.1.1/src/gd.h 2015-01-14 10:49:15.922009653 +0100
-@@ -62,7 +62,7 @@
+diff -ur libgd-2.2.3.orig/src/gd.h libgd-2.2.3/src/gd.h
+--- libgd-2.2.3.orig/src/gd.h Thu Jul 21 17:32:27 2016
++++ libgd-2.2.3/src/gd.h Fri Dec 23 23:10:00 2016
+@@ -63,7 +63,7 @@
# define BGD_EXPORT_DATA_PROT __declspec(dllimport)
# endif
# endif
@@ -9,4 +9,4 @@ diff -ur libgd-2.1.1.orig/src/gd.h libgd-2.1.1/src/gd.h
+# define BGD_STDCALL
# define BGD_EXPORT_DATA_IMPL
#else
- # ifdef HAVE_VISIBILITY
+ # if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY==1
diff --git a/Build/source/libs/gd/libgd-src/CMakeLists.txt b/Build/source/libs/gd/libgd-src/CMakeLists.txt
index 5bec7043208..d1c2fc1a458 100644
--- a/Build/source/libs/gd/libgd-src/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/CMakeLists.txt
@@ -9,6 +9,8 @@ PROJECT(GD)
SET(CMAKE_MODULE_PATH "${GD_SOURCE_DIR}/cmake/modules")
+include(gd)
+
OPTION(ENABLE_PNG "Enable PNG support" 0)
OPTION(ENABLE_LIQ "Enable libimagequant support" 0)
OPTION(ENABLE_JPEG "Enable JPEG support" 0)
@@ -68,13 +70,13 @@ if (USE_EXT_GD)
else (USE_EXT_GD)
SET(GD_VERSION_MAJOR "2")
- SET(GD_VERSION_MINOR "1")
- SET(GD_VERSION_PATCH "1")
+ SET(GD_VERSION_MINOR "2")
+ SET(GD_VERSION_PATCH "3")
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 "20101")
+ SET(GD_VERSION_INT "2020333")
SET(CMAKE_REQUIRED_INCLUDES "/usr/include" "/usr/local/include")
@@ -95,7 +97,7 @@ else (USE_EXT_GD)
FIND_PACKAGE(ZLIB)
IF (ENABLE_WEBP)
- FIND_PACKAGE(VPX)
+ FIND_PACKAGE(WEBP)
ENDIF (ENABLE_WEBP)
IF (ENABLE_LIQ)
@@ -137,10 +139,10 @@ else (USE_EXT_GD)
SET(HAVE_LIBZ 1)
ENDIF(ZLIB_FOUND)
- IF(VPX_FOUND)
- INCLUDE_DIRECTORIES(${VPX_INCLUDE_DIR})
- SET(HAVE_LIBVPX 1)
- ENDIF(VPX_FOUND)
+ IF(WEBP_FOUND)
+ INCLUDE_DIRECTORIES(${WEBP_INCLUDE_DIR})
+ SET(HAVE_LIBWEBP 1)
+ ENDIF(WEBP_FOUND)
IF(PNG_FOUND)
INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
@@ -155,7 +157,7 @@ else (USE_EXT_GD)
IF(LIQ_FOUND)
INCLUDE_DIRECTORIES(${LIQ_INCLUDE_DIR})
- SET(HAVE_LIBIMAGEQUANT_H 1)
+ SET(HAVE_LIBIMAGEQUANT 1)
ENDIF(LIQ_FOUND)
IF(XPM_FOUND)
@@ -191,8 +193,7 @@ else (USE_EXT_GD)
CONFIGURE_FILE(${GD_SOURCE_DIR}/src/config.h.cmake ${GD_SOURCE_DIR}/src/config.h ESCAPE_QUOTES)
-
- set(BUILD_SHARED_LIBS On)
+ option(BUILD_SHARED_LIBS "Build both shared and static libs" ON)
if (WIN32)
SET(GD_LIB libgd)
@@ -223,14 +224,13 @@ endif (USE_EXT_GD)
add_subdirectory(tests)
add_subdirectory(examples)
-add_subdirectory(docs)
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 "1")
-SET(CPACK_PACKAGE_VERSION_PATCH "0")
+SET(CPACK_PACKAGE_VERSION_MINOR "2")
+SET(CPACK_PACKAGE_VERSION_PATCH "3")
if(WIN32)
set(CPACK_GENERATOR ZIP)
diff --git a/Build/source/libs/gd/libgd-src/ChangeLog b/Build/source/libs/gd/libgd-src/ChangeLog
index 8668226ee13..c5c453c4724 100644
--- a/Build/source/libs/gd/libgd-src/ChangeLog
+++ b/Build/source/libs/gd/libgd-src/ChangeLog
@@ -1,317 +1,145 @@
-be907e0 fix indent (Pierre Joye)
-999b5d2 add sanity check and fix leak on exit (Pierre Joye)
-1424dd6 free path on error (Pierre Joye)
-13d87a6 free im on error (Pierre Joye)
-2a40315 update changelog (Pierre Joye)
-5c562ec Add thumbs.bat and thumbs.sh to Makefile.am (Nathanael Jones)
-bc372f2 Merge branch 'master' into rebase-1-for-2015 (Nathanael Jones)
-a247407 Use sprintf instead of snprintf to be C89 compliant. (Nathanael Jones)
-0324316 Remove uneeded includes introduced in earlier version-local commits. (Nathanael Jones)
-4d54513 Exposed all missing format-independent members in the C++ wrapper. (Nathanael Jones)
-c7bf379 Update gdpp.* to use HAVE_LIBPNG vs HAVE_PNG, etc.- should honor the same feature support flags as the rest of gd, (Nathanael Jones)
-40c6129 Normalize static lib name to libgd.a on *nix and libgd_static.lib on windows. (Nathanael Jones)
-7c2b071 Replace windows MSVC makefile; update msys iconv path. (Nathanael Jones)
-07c3fde Drop -m32 definition on MINGW; prevents a 64-bit build from occurring. (Nathanael Jones)
-37f5925 Skip bug00132 - failing because test data is out if date (we think). (Nathanael Jones)
-f085a2e When both CPP_SHARP and _WIN32 are defined, do not enable thread safety. (Nathanael Jones)
-e81ff90 Export C++ wrapper clases. Change two Gd() functions of the C++ wrapper to return values when the underlying C calls do. (Nathanael Jones)
-56f79f3 C89 compat; define vars at top of function (Nathanael Jones)
-b52b9c5 Upgrade to long-syntax CMAKE add_test command to improve cross-platform compatibility. (Nathanael Jones)
-e8a1a46 free coeffs (Pierre Joye)
-5f7c099 free allocated palette on error (Pierre Joye)
-7b49862 fix im leaked on error (Pierre Joye)
-4faf926 just reduce static analyzer noise (Pierre Joye)
-2a09086 free tc_cache and path on error (leak) (Pierre Joye)
-09e954b Thumbs: add osx settings for travis (tostercx)
-4af76c9 fix comment (Remi Collet)
-3c0d220 Fix possible infinite loop (php bug report #68713) - make code more legible (yy>=yy-1 seems ugly) - fix mem leak, always free src->tpixels (Remi Collet)
-7a8e6b8 Thumbs: use rsync -u on osx as it doesn't have cp -u (tostercx)
-eb9d7d1 Thumbs: Remove cp -u usage (Nathanael Jones)
-c9e458b add read-only test images to tarball (Remi Collet)
-3169371 use / in image patch (Remi Collet)
-81e9a99 move overflow test outside the loop for perf (Remi Collet)
-47eb44b Fix possible buffer read overflow detected by -fsanitize=address, thanks to Jan Bee (Remi Collet)
-5fe6837 squash test commits; add deps from nuget; fix bindings (tostercx)
-679fd78 pack compressed dll vers; build bindings (tostercx)
-0c3b914 fix mingw if blocks (tostercx)
-84319d1 replace slashes with backslashes for appveyor/cmd (tostercx)
-c954881 add build targets for gnu with thumbs (tostercx)
-18c51e6 fix tiff targets (tostercx)
-5f99611 fix dll_name not set before usage (tostercx)
-c447d68 fetch nasm (tostercx)
-7ba81f0 add thumbs (tostercx)
-4865cdb rename libs correctly as soon as they're copied (tostercx)
-bf51c4e fix tbsd_*_built flags not being set (tostercx)
-f3deb6b add basic msvc thumbs (tostercx)
-39fd5ce Exposed all missing format-independent members in the C++ wrapper. (Dimitar Dobrev)
-2d74b00 update lib switching macros (tostercx)
-d5527e7 push config.h (tostercx)
-5828f7e Use ifdefs around keyword redefinitions (Nathanael Jones)
-d3fb9c3 update appveyor project url (tostercx)
-6db34b7 Merged in nathanaeljones/gd-libgd/test-message-improvements (pull request #22) (Nathanael Jones)
-d1a6768 Merged in nathanaeljones/gd-libgd/add-osx-boostrap-support (pull request #21) - bootstrap.sh now offers build tips on OS X and defaults to glibtoolize (Nathanael Jones)
-31619ab Merged in nathanaeljones/gd-libgd/shut-up-automake (pull request #23) Silence automake 1.14 warnings (Nathanael Jones)
-7eb9462 Merged in nathanaeljones/gd-libgd/cmake-iconv (pull request #24) (Nathanael Jones)
-dedf03f Merged in nathanaeljones/gd-libgd/msvc-fix-keyword-macros (pull request #25) (Nathanael Jones)
-c4809ae Changed two functions of the C++ wrapper to return values when the underlying C calls do. (Dimitar Dobrev)
-433b04a set msvc output to minimal (tostercx)
-daa7613 move drone build script to file (tostercx)
-82550ca add drone badge (tostercx)
-6ea31fb reset build type (tostercx)
-47eaee1 test CMAKE_BULD_TYPE (tostercx)
-e4fbb28 test CMAKE_BULD_TYPE (tostercx)
-8e18552 push uncompressed dlls as artifacts (tostercx)
-0bcb5e3 push uncompressed dlls as artifacts (tostercx)
-5d09526 test dgn w64 (tostercx)
-e3fe7e4 warn inline (tostercx)
-adc3b7c test w64-32 (tostercx)
-55f9066 inline test 3 (tostercx)
-12898fe inline test 2 (tostercx)
-8864390 inline test (tostercx)
-0cd926f Exported all classes from the C++ binding of libgd. (Nathanael Jones)
-c8711e7 fetch binding gen from master (tostercx)
-23b5f11 test 32bit msvc bindings (tostercx)
-98d1a1a update binding artifact handling (tostercx)
-6be49c8 test msvc x64 bindings 4 (tostercx)
-97c2846 test msvc x64 bindings 3 (tostercx)
-eee663c test msvc x64 bindings 2 (tostercx)
-a7ce8bb test msvc x64 bindings (tostercx)
-12a6fbc scrap ramdisks (tostercx)
-1f07497 ramdisk test 3 (tostercx)
-398a82c ramdisk test 2 (tostercx)
-c6cd0d8 ramdisk test (tostercx)
-ae8a7e5 imdisk test 7 (tostercx)
-3a178fd imdisk test 6 (tostercx)
-5d5eb2a imdisk test 6 (tostercx)
-bfdc673 imdisk test 5 (tostercx)
-1855563 imdisk test 5 (tostercx)
-084e2e2 imdisk test 4 (tostercx)
-bbad6a7 imdisk test 3 (tostercx)
-9d3bd38 imdisk test 2 (tostercx)
-ff7ace5 Merge branch 'master' of https://github.com/imazen/gd-libgd (tostercx)
-e78df6a imdisk test (tostercx)
-f15ea0e Msbuild logging: Fix block scope error (Nathanael Jones)
-3a7334c Msbuild now logs to file and uploads as artifact (Nathanael Jones)
-c0ce1fa Enable verbose msbuild output temporarily (Nathanael Jones)
-b70fd99 fix unix static name (tostercx)
-b217d22 update nuget package names; add version # (tostercx)
-724869d update test macro usage (tostercx)
-560aa9b fix ps syntax errors (tostercx)
-dce1809 configure files only if building bindings (tostercx)
-e023800 test min=1 (tostercx)
-668ef42 test min=0 (tostercx)
-c28d572 quote function (tostercx)
-cd9ae09 test test switching macros (tostercx)
-c9b0fec add gdsharp .cs files to artifact (tostercx)
-c19f2e0 remove SET spaces (tostercx)
-3e88692 fix if spacing (tostercx)
-9208848 test min flag (tostercx)
-fef130e mingw test - noft; wtiff (tostercx)
-8fae7df test mingw no tiff (tostercx)
-bef860f mingw test build (tostercx)
-841f3cd fix msvc static lib name; test mingw no-rtti (tostercx)
-31552f5 build all (tostercx)
-071963b fix if block (tostercx)
-71f8aaf remove original dll on pack (tostercx)
-b7ac813 minimal build (tostercx)
-487ee4c re-enable packing (tostercx)
-8e4ea0e test ps spacing (tostercx)
-3ef2235 disable upx (tostercx)
-918d603 update library names (tostercx)
-bfff81d update library names (tostercx)
-daa782e upx test 3 (tostercx)
-5fc0ca3 upx test 2 (tostercx)
-4fba094 add upx; fix cmake_cmd (tostercx)
-015be62 spring cleaning (tostercx)
-09daf1d re-fix if block (tostercx)
-338c39b fix mingw freetype static link (tostercx)
-335fd04 fix tiff static link (tostercx)
-397029a fix if block (tostercx)
-c16ccd1 fix freetype static links (tostercx)
-6c3617a add appveyor badge (tostercx)
-b6b0249 push nunit result xml as artifact (tostercx)
-d87b394 disable iconv (tostercx)
-fb10cf1 fix dll dir for bindings (tostercx)
-61e8d53 simplify build script (tostercx)
-b6a6ba6 fix static link to iconv for mingw builds (tostercx)
-f8d2a36 fix mingw static links (tostercx)
-ff2eb8a fix msvc link to static jpeg (tostercx)
-1d75d52 remove inline flags; fetch deps from subbuilds (tostercx)
-b0167e9 keep inline functions (tostercx)
-6d3ab8d fix mingw dir; build only mingw (tostercx)
-4d88ae7 scrap .vhd mount; update compiler blob location (tostercx)
-1f7d33b test mounted mingww64 (tostercx)
-bd4cebd fix bloated freetype (tostercx)
-ade007d Support MSVC++ 2013 and higher: define _ALLOW_KEYWORD_MACROS, inline, strcasecmp, snprintf. (Nathanael Jones)
-f82b371 Add libiconv support to CMake files (Nathanael Jones)
-10ffb33 Silence automake 1.14 warnings ("source file is in a subdirectory, but option subdir-objects is disabled"). (Nathanael Jones)
-90c3799 Add gdTestAssertMsg(condition, formatmessage, variables) to support detailed failure messages. Improve error reporting and diagnostics in gdimagefile test. Fix 'max' definition conflict on some compilers. (Nathanael Jones)
-7f1d183 bootstrap.sh now offers build tips on OS X and defaults to glibtoolize (Nathanael Jones)
-444c760 update mingw crt static link command (tostercx)
-0b10bb8 exclude failing binding test; build all (tostercx)
-f05791c static link msvc runtime (tostercx)
-4f8e411 fix elseif block (tostercx)
-7dc864c static link mingw compiler deps (tostercx)
-c38ad3c update repositories (tostercx)
-64b843b Merge pull request #5 from tostercx/master (tostercx)
-292124c squash everything (tostercx)
-8d63a96 Merge pull request #4 from tostercx/master (Nathanael Jones)
-344267f fix testing env detection and directory (tostercx)
-9664951 fix tests not executing (tostercx)
-701507b fix x64 cross compiles (tostercx)
-33dff1f not needed anymore (tostercx)
-c1bcfcd not needed anymore (tostercx)
-9546428 fix platform letter case (tostercx)
-4d74480 fix gdtest not rebuilding (tostercx)
-4fac5f7 remove mkdir error messages (tostercx)
-6e7128a Prevent CppSharp parsing error (Nathanael Jones)
-8e8c0f9 Get gdnametest passing on windows (Nathanael Jones)
-300b6ff Fix gdnametest on *nix (Nathanael Jones)
-6c4ffe7 Improve error messages in gdnametest. (Nathanael Jones)
-ddbf021 Drop strcasecmp implementation. Only define 'inline' on msvc builds. (Nathanael Jones)
-42e5fa7 Merge remote-tracking branch 'origin/master' (Nathanael Jones)
-e30293d Add a readme for building on windows. (Nathanael Jones)
-681992a Remove src/config.h and src/gd.h from .gitignore. Sheesh. (Nathanael Jones)
-235c5b0 Merge pull request #3 from tostercx/master (Nathanael Jones)
-0eb3b05 fix rebuilds failing (tostercx)
-dab8734 fix mkdir failing on appveyor (tostercx)
-0356ea9 fix mkdir failing on appveyor (tostercx)
-96408de fix mkdir (tostercx)
-073197d fix dir making (tostercx)
-2e1d22e fix makefile always rebuilding (tostercx)
-25b31be add cleanup, .gitnore build directories and deps, partially fix always rebuilding (tostercx)
-7f735f6 Merged in nathanaeljones/gd-libgd/nathanaeljones/restore-support-for-alphablendingflag-va-1409782287517 (pull request #20) (Pierre Joye)
-08eb6ee Restore support for alphaBlendingFlag value gdEffectAlphaBlend (Nathanael Jones)
-e3ff6ec C89 compat (tostercx)
-e52ed5e Merge pull request #2 from tostercx/master (Nathanael Jones)
-6cc63f2 fix platorm reports in test (tostercx)
-68a8dc0 updated windows makefile and test execution (tostercx)
-8e7df78 Fix syntax error in Makefile.vc (missing line continuations) (Nathanael Jones)
-71ab3d8 Fix space/tab mix in Makefile.vc; enable vectorization reporting. (Nathanael Jones)
-911046d Comment out unused compilation vars; ensure (_)WIN32 is set, enable speed optimizations via /O2 (Nathanael Jones)
-749b33e Improve error reporting in gdimagefile test. Add gdTestAssertMsg(condition, message, variables) to support detailed failure messages. (Nathanael Jones)
-db88704 Restore support for alphaBlendingFlag value gdEffectAlphaBlend. (9 unit tests pass again). (Nathanael Jones)
-dc8bb49 Only omit the 'max' macro if it is already present (this may break windows, let's see) (Nathanael Jones)
-b0b140f Drop 7zip installation step, should already be installed on AppVeyor by default. (Nathanael Jones)
-bcf7cb4 Switch dependency repository back, and use a named branch now for compatibility. (Nathanael Jones)
-043dfa8 Merge pull request #1 from tostercx/master (Nathanael Jones)
-12ab27b add notes (tostercx)
-b710274 remove old makefiles (tostercx)
-dd870dc consolidate makefiles to windows/makefile.vc (tostercx)
-c114d89 consolidate makefiles to windows/makefile.vc (tostercx)
-720f82b add static lib to artifacts, generate test config in makefile (tostercx)
-c088f28 add static lib to artifacts, generate test config in makefile (tostercx)
-0db988e add static lib to artifacts, generate test config in kaefile (tostercx)
-1ce2b19 fix overwriting LIB env var (tostercx)
-e0475cc debug iconv tmp fix (tostercx)
-a3ee395 re-fix mkdir (tostercx)
-5abb901 fix mkdir (tostercx)
-35888c5 added making static libgd (tostercx)
-701bc63 switch to libjpeg-turbo (tostercx)
-d74fa37 fetch deps from imazen/gd-win-dependencies (tostercx)
-23cbea2 Add AppVeyor files provided by TosterCx (Nathanael Jones)
-af9ca1d Simplify makefile and add static lib generation. (Nathanael Jones)
-ce5f060 Simplify Makefile.vc (Nathanael Jones)
-ab31a6d Build inside Release_GD (Nathanael Jones)
-ee308e1 Rename Makefile.gd and add some notes (Nathanael Jones)
-d8987f5 Added strcasecmp implementation, now creates a .dll (Nathanael Jones)
-09006c4 Get makefile almost working (Nathanael Jones)
-2fdf3ad Start work on nmake makefile (Nathanael Jones)
-0eb8429 Changed path to libiconv in msys Makefile. (Nathanael Jones)
-5aee678 Merged from the upstream. (Nathanael Jones)
-31ff666 Merged in ttoohey/gd-libgd/layout-effect (pull request #18) (Ondřej Surý)
-33c05c1 Merged in ttoohey/gd-libgd/bugfix/font_path_overrun (pull request #19) (Ondřej Surý)
-463c3bd CVE-2014-2497, NULL pointer dereference, fix #126 (Remi Collet)
-f01ade7 Remove wrong license headers. Based on http://www.paulbourke.net/dataformats/tga/ (Pierre Joye)
-354409b Fix buffer overrun from long font search path (Tim Toohey)
-01dccbd add tests for layer effects (Tim Toohey)
-b39f92b Add overlay and multiply effects to gdImageSetPixel (Tim Toohey)
-4b86e06 Fix artefact in gdImageScale using GD_BILINEAR_FIXED (Remi Collet)
-1de3b80 new example "resize" (Remi Collet)
-5b42b11 Fix gdImageSetInterpolationMethod with GD_DEFAULT (Remi Collet)
-2d5dc2e MSys Makefile now statically links libgd.dll to libiconv. (Chris Reuter)
-01104a2 MSys Makefile fix (Chris Reuter)
-7a8e8b2 Bug fix: GD DLL rename hadn't been propagated everywhere. (Chris Reuter)
-6b94f66 Minor enhancements to the MinGW+Msys build scripts. (Chris Reuter)
-339b17a Updated the MSys build files. (Chris Reuter)
-0cb34fd Got gd_filename.c to work correctly under Windows. (Chris Reuter)
-74ad18c Updated .gitignore. (Chris Reuter)
-0da2258 Added TIFF to the list of skipped image formats in gdnametest.c (Chris Reuter)
-0afe34d Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-275ac17 Started importing the old manual into Naturaldocs comments. (Chris Reuter)
-3b2caf6 Added function 'gdImageGetInterpolationMethod()'. (Chris Reuter)
-592e232 Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-00cd958 Added gdnametest and gdCopyBlurred to .gitignore. (Chris Reuter)
-4761a7e Added gdnametest and gdCopyBlurred to .gitignore. (Chris Reuter)
-c9d2f89 Added gdImageFile(), gdImageCreateFromFile() and gdSupportsFileType(). (Chris Reuter)
-9eb3951 Added gdImageFile(), gdImageCreateFromFile() and gdSupportsFileType(). (Chris Reuter)
-e054be7 Small code cleanup. (Chris Reuter)
-3cb508f Small code cleanup. (Chris Reuter)
-9933000 Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-b20cdef Added a test case for gdImageCopyGaussianBlurred(). (Chris Reuter)
-6febd90 Added a new Gaussian blur function. (Chris Reuter)
-3c43f07 Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-d525680 Bug fix: gdImageScale() was sometimes messing up transparency. (Chris Reuter)
-b505465 Merge remote-tracking branch 'upstream/master' (Chris Reuter)
-549addc Added .gitignore lines to exclude naturaldocs by-products. (Chris Reuter)
-bb1d4a0 Added documention for gdImageCreate() and type gdImage. (Chris Reuter)
-3c1202e Added beginnings of an updated manual (Chris Reuter)
-7060f5e Added another Makefile. (Chris Reuter)
-769fb15 Added another Makefile. (Chris Reuter)
-3f8931d Bug fix: tests didn't (always) return a valid status. (Chris Reuter)
-0dfd45c Bug fix: tests didn't (always) return a valid status. (Chris Reuter)
-f316c8a Removed bash-ism from bootstrap.sh. (Not /bin/sh are bash, even these days.) (Chris Reuter)
-6cb7f9f Merge branch 'master' of github.com:imazen-discovery/gd-libgd (Chris Reuter)
-0adaf8a Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-d21db28 Merge remote-tracking branch 'refs/remotes/origin/master' (Nathanael Jones)
-68d38a8 bootstrap.sh now offers build tips on OS X and defaults to glibtoolize (Nathanael Jones)
-9812cc4 Merge branch 'master' of https://bitbucket.org/suetanvil/gd-libgd. (Chris Reuter)
-506e57a Merged libgd/gd-libgd into master (Chris Reuter)
-16ccce6 Fixed a comment. (Chris Reuter)
-e82b084 Added new files to CMakeLists.txt. (Chris Reuter)
-8cdb109 Updated Netware makefile (Chris Reuter)
-784ffdd Test case for new version code. (Chris Reuter)
-4378b8d gd.h now holds the canonical version number. (Chris Reuter)
-3c96ad1 Keep automake from complaining "automake: but option 'subdir-objects' is disabled" (Nathanael Jones)
-5b7f746 Merged libgd/gd-libgd into master (Chris Reuter)
-3766620 Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd (Chris Reuter)
-3884557 Merged in suetanvil/gd-libgd/scale-palette-image-bug (pull request #16) (Chris Reuter)
-1a92b2e Merged in suetanvil/gd-libgd/interp-precision (pull request #15) (Chris Reuter)
-723ea52 Fix for Issue #97: segfaults when scaling a non-truecolor image (Chris Reuter)
-f321961 Added test case to exercise all of the gdImageScale() modes. (Chris Reuter)
-5586a1e Merged libgd/gd-libgd into master (Chris Reuter)
-948bb0a Higher precision in scaling. (Chris Reuter)
-3f713da Higher precision in scaling. (Chris Reuter)
-1c6ee56 More dead code removal. (Chris Reuter)
-241ada6 Removed some dead code. (Chris Reuter)
-916d00c Merged in suetanvil/gd-libgd/suetanvil-scale-code-cleanup (pull request #14) (Pierre Joye)
-0510b4f Merged in suetanvil/gd-libgd/suetanvil-dead-code-removal (pull request #13) (Pierre Joye)
-2ade818 Merge branch 'private-scale-axis-merge-rebased' (Chris Reuter)
-546b274 Bug fix: #92: Bicubic scaling leaves the rightmost and bottom rows black (Chris Reuter)
-16ed1a9 Added a test case for gdImageScaleTwoPass(). (Chris Reuter)
-65fce84 Improved testing code (Chris Reuter)
-be3c8cb Cleaned up floating-point rescaling code. (Chris Reuter)
-0d13658 More dead code removal. (Chris Reuter)
-5ce14ef Removed some dead code. (Chris Reuter)
-70a4070 Merge branch 'master' of https://bitbucket.org/suetanvil/gd-libgd (Chris Reuter)
-08fdff6 Merged libgd/gd-libgd into master (Chris Reuter)
-6db2828 Merge remote-tracking branch 'remotes/bitbucket-repo/suetanvil' (Chris Reuter)
-3c5c639 Merged in suetanvil/gd-libgd/suetanvil (pull request #12) (Pierre Joye)
-4f65a3e Fixed memory overrun bug in gdImageScaleTwoPass (Chris Reuter)
-3e76d30 Merged libgd/gd-libgd into master (Chris Reuter)
-de7acbf Merged in suetanvil/gd-libgd (pull request #11) (Pierre Joye)
-4c70f57 Fix #86: gdImageScale segfaults with most interpolation types (Chris Reuter)
-6d1275d Fix bug #86 (segfaults on gdImageScale with most interpolation modes). (Chris Reuter)
-2a862b2 Undo previous change to make a cleaner changeset. (Chris Reuter)
-4a90e3f Fixed bug #86. https://bitbucket.org/libgd/gd-libgd/issue/86/gdimagescale-segfaults-with-most (Chris Reuter)
-d47c718 Merge branch '2.1.0-stable' into bicubic-fixed-perf (Chris Reuter)
-fda0b29 Added a function to retrieve the interpolation mode ID. (Chris Reuter)
-fb93646 Added the latest manual I could find. (Chris Reuter)
-a0be11f Added new README.md prior to importing into GitHub. (Chris Reuter)
-a0f58c6 fix #81, cmake_minimum_required must be the 1st line in 2.8+ (Pierre Joye)
-54f8019 GD_EXTRA_VERSION and GD_VERSION_STRING needs quotes (Courtesy of Marc Deslauriers) (Ondřej Surý)
-dfea094 Add INSTALL notes for Solaris conflicting iconv.h headers (fixes #76) (Ondřej Surý)
-37689ef ignore generated gd.h header (Ondřej Surý)
-5b917b4 Merged in fix-version-in-gd.h (pull request #9) (Ondřej Surý)
-f597bd4 Don't append dash when GDLIB_EXTRA is empty (Ondřej Surý)
-f47a1df Create gd.h from gd.h.in to properly include current library version (Ondřej Surý) \ No newline at end of file
+4d29684 CVE-2015-8874
+fe199ed release gd-2.2.0
+6556574 ChangeLog: update for gd-2.2 branching
+c6c52b3 dist: drop bzip2 tarball
+7932944 libtool: set revision based on package version
+119b38e travis: switch to the local bootstrap script
+f79d0a8 m4: use an older openmp macro
+e6bf771 docs: clean up a bit and support `NaturalDocs`
+c9a4a85 libimagequant: fix integration
+6e054c4 gdlib-config: mark it as deprecated #140
+b64c996 build: fix GDLIB_REVISION collision
+10a4915 tests: rework handling of temp output files
+1239832 configure/cmake: unify header checks and config.h generation
+32c5072 bootstrap: switch to autoreconf
+f7471f2 tests: add missing gdimagesetpixel tests
+e59a0e8 tests: add missing test files to dist
+2733b62 tga: cleanup/simplify a bit
+96d5687 tga: fix two memory corruption bugs #159
+8f50777 tests: get working under lsan (leak sanitizer)
+e530663 png: fix some memory leaks w/invalid images
+82b80dc gif: avoid out-of-bound reads of masks array #209
+4dc1a2d xbm: avoid stack overflow (read) with large names #211
+b083ec1 cmake: update build files to match autotools more
+2db153a webpng: rewrite & cleanup to use getopt
+b12f217 configure: enable -Werror by default when available
+75c38f6 fix various gcc/clang warnings found with -Wall
+8bdfede cmake: document the common build/install steps #179
+6f3552d travis: drop multiarch settings
+d549193 travis: drop nasm apt install
+cd15d9b drop unused make_drone.io
+b32324d travis: enable the clang compiler
+05d70f6 tests: fix leaks in test code
+4e61c9b tiff: fix leak in gdImageCreateFromTiffCtx()
+658f168 gd2: fix double free when processing invalid headers
+0315e44 tests: gd2: add general read test helpers #208
+3c47bb4 tests: do not build libgdtest.a all the time
+09d2d01 webp: fix double free
+cd1d964 libgd: update & sort cmake installed headers #164
+161ac24 travis: rework & improve main script logic
+613e8c9 tests: split up makefile entries
+92c3209 tests: fix distclean errors
+3768c9e travis: switch to non-sudo mode
+adc8598 tests: unify cmake test code into a single macro
+ef9b000 build: handle renamed README file
+e16310b libgd: update & sort source lists
+a44e1ba tests: gdimageline: add missing -lm linkage
+3b0eabf tests: add missing cmake files gdimagefile/gdimagefilter
+4c6a07b gitignore: split up test entries
+6455304 tests: drop EXTRA_PROGRAMS
+982d488 revert... unneeded
+a5b5c27 Fix memory leak
+2bb97f4 gd2: handle corrupt images better (CVE-2016-3074)
+fc14a8c README: document supported image formats
+5277b6f Merge pull request #199 from mattbo/tiff_dpi_support
+4e53ed7 Added support for reading and writing TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION. Includes a unit test.
+6913dd3 bmp: use double variant of ceil func
+f29f7db Merge pull request #198 from sherif-elmetainy/master
+e87ec88 :fix and unit test for crash issue in gdImageFillTiled
+258dbf2 README: link to the CONTRIBUTORS file
+6895576 README: reformat in markdown for better github display
+73ab7c7 Merge pull request #182 from leoyanggit/fix_build_static
+e08acb0 Merge pull request #153 from davidchappelle/master
+78dad44 circletexttest: check image creation return value
+a9346dd travis: build/check in parallel
+e5d1e9d Fail Travis builds if make check fails
+b6211d9 tests: fix build failures when jpeg/freetype are disabled
+3667974 Merge pull request #193 from vapier/master
+f732d74 Merge pull request #194 from jasonwilliams200OK/master
+859bcf7 git,repo: Ignore build spew.
+10a8761 Merge pull request #192 from jasonwilliams200OK/master
+8f69034 code: Adds missing methods for absent libz case.
+a4f5d5d configure: unify library tests
+a9205e5 configure: require autoconf-2.64/automake-1.11
+2e04a67 win: Use an external snprintf hook.
+9104bba configure: use AS_HELP_STRING everywhere
+1dc5280 Merge pull request #191 from jitendarKumar/patch-8
+dd48286 Logical Operation && has no Impact on expression result .
+52dad8b Update git ignore file to exclude cmake build directory
+9ea3097 Prevent duplicate macro definition errors/warnings
+40f42c0 Fix compiler warnings when checking interpolation_id
+7147b64 Make BUILD_SHARED_LIBS configurable
+4751b60 gdImageScaleTwoPass memory leak fix
+4e1ce66 Merge pull request #166 from jitendarKumar/patch-5
+1219113 Merge pull request #155 from jitendarKumar/patch-2
+38e016f Merge pull request #156 from jitendarKumar/patch-3
+4e70131 Merge pull request #157 from jitendarKumar/patch-4
+895be03 Indentation corrected.
+7b6261c Dereference null return value in gdtest.c
+7297c94 Merge pull request #163 from wangkun611/webp_cmake
+917fa11 fix CMake error when ENABLE_WEBP
+7ec030c add gdImageCreateFromWebpPtr impl
+eaca20f Remove Deadcode in gd.c
+312b020 Update gd_topal.c
+18bbbfa Merge pull request #148 from smcdow/master
+f2712a6 Remove Deadcode in gd_nnquant.c
+4f99667 Merge pull request #154 from jitendarKumar/patch-1
+4cf5307 Missing nullcheck in gd_topal.c
+d403501 Dereference null return value in gdfx.c
+ac527e6 delete webpimg.c references
+c9dac2d Fix segfault in gdImageFlipVertical() for non-TrueColor images.
+a9f3a83 Merge pull request #146 from dmelani/rotation_fix
+4e833d3 Added missing zero.
+b12712e Merge pull request #143 from vapier/master
+2618996 missing file in archive, need for autoreconf
+6bdfa68 ignore new tests
+1c33d94 tests: fix header inclusion
+e0aafd0 Add Debian/Ubuntu M-A specific configure options
+3a72f64 lint.travis-ci.org doesn't know version and description in Coverity addon
+87804f6 Comment-out Coverity encrypted token
+2b8bfd4 Don't fail when make check fails; Add coverity configuration for coverity_scan branch
+10a92e7 Even more missing semicolons
+09783e4 Add missing semicolons to .travis.yml
+25cfac5 Replace <TAB> with 8*<SPACE>
+2be44f0 Don't upgrade build environment now
+5edbc3f Use autotools on linux to build libgd
+9201900 Change issue tracker URL to github
+ba081d9 Merge branch 'GD-2.1'
+1481c41 fix #140, versions placeholder not replaced in gdlib-config
+88fb8fc typo
+4ef5903 fix some leaks on error
+824a3aa remove remaining libvpx related code
+a79232c fix #129, drop VPX usage in favor of libwebp
+9a205a1 Merge branch 'GD-2.1'
+511160e fix #82, fix 1 bit tiff support
+7a567db Merge branch 'GD-2.1'
+aa1d71c fix #135, fix logic in gdkanji
+58990de Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd
+2f85291 fix #139, patch by Peter Breitenlohner
+255a9e4 fix visibility test
+358950c remove this test, too big
+5c48b49 fix #91, actually add tests, bug already fixed
+f680978 fix #94, HAVE_VISIBILITY may be defined but set to 0
+b126726 fix #89, fix leaks on tiff read
+acdebc8 fix #84, double free and overrun due to wrong alloc type, uint8_t instead of int
+490bc3e free palette on error
+289c829 port fix for saner boolean usage from https://reviews.facebook.net/D31695
+2b3130e fix #90, actually copy src to dst
+b1f4313 add tests for #111
+3d7c3f5 fix #111, invalid quantization
+ac1ff44 update results to match modern freetype builds
+c7e5dc6 fix #111, invalid default quantization
+81d341c fix #113, NULL deref in gdfx
+2f40d52 Fix #138, VS 2010 build error due to double semi column
+0e9c4e0 master is now 2.2.0-dev
+06b2e4f back to dev
diff --git a/Build/source/libs/gd/libgd-src/Makefile.am b/Build/source/libs/gd/libgd-src/Makefile.am
index d1f3b89ce1a..033b91a6080 100644
--- a/Build/source/libs/gd/libgd-src/Makefile.am
+++ b/Build/source/libs/gd/libgd-src/Makefile.am
@@ -1,3 +1,3 @@
-ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src config tests
-EXTRA_DIST = test docs examples windows VMS cmake netware bootstrap.sh CMakeLists.txt thumbs.bat thumbs.sh CONTRIBUTORS README
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = src config tests
+EXTRA_DIST = test docs examples windows VMS cmake netware bootstrap.sh CMakeLists.txt CONTRIBUTORS README.md
diff --git a/Build/source/libs/gd/libgd-src/README b/Build/source/libs/gd/libgd-src/README
deleted file mode 100644
index 1c5b35b51b9..00000000000
--- a/Build/source/libs/gd/libgd-src/README
+++ /dev/null
@@ -1,10 +0,0 @@
-GD is an open source code library for the dynamic creation of images by programmers.
-
-GD is written in C, and "wrappers" are available for Perl, PHP and other languages. GD creates PNG,
-JPEG, GIF, WebP, XPM, BMP images, among other formats. GD is commonly used to generate charts,
-graphics, thumbnails, and most anything else, on the fly. While not restricted to use on the web.
-
-The most common applications of GD involve website development.
-
-The library was originally developped by Thomas Boutell and is now maintained by many contributors (see the CONTRIBUTORS file)
-under the umbrella of PHP.net.
diff --git a/Build/source/libs/gd/libgd-src/README.md b/Build/source/libs/gd/libgd-src/README.md
new file mode 100644
index 00000000000..83debad3015
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/README.md
@@ -0,0 +1,41 @@
+# GD Graphics (Draw) Library
+
+[![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)
+
+GD is an open source code library for the dynamic creation of images by
+programmers.
+
+GD is written in C, and "wrappers" are available for Perl, PHP and other
+languages. GD can read and write many different image formats. GD is commonly
+used to generate charts, graphics, thumbnails, and most anything else, on the
+fly.
+
+The most common applications of GD involve website development, although it
+can be used with any standalone application!
+
+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.
+
+## Downloads/etc...
+
+Please visit our [homepage](http://www.libgd.org/) for more details.
+
+## Supported Image Formats
+
+GD has builtin support for:
+
+* [BMP](https://en.wikipedia.org/wiki/BMP_file_format)
+* [GIF](https://en.wikipedia.org/wiki/GIF)
+* [TGA](https://en.wikipedia.org/wiki/Truevision_TGA)
+* [WBMP](https://en.wikipedia.org/wiki/Wireless_Application_Protocol_Bitmap_Format)
+
+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/)
+* [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 aa120875fad..f7b92f6a779 100644
--- a/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM
+++ b/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM
@@ -1,1343 +1,1342 @@
-$! (c) Alexey Chupahin 18-APR-2006, 15-DEC-2007
-$! OpenVMS 8.2 Alpha DEC 2000 model 300
-$! OpenVMS 8.3 Itanium rx1620
-$! GNU
-$!
-$!
-$DEF SYS$ERROR _NL0:
-$ SET NOON
-$WRITE SYS$OUTPUT " "
-$WRITE SYS$OUTPUT "Configuring GD library for OpenVMS"
-$WRITE SYS$OUTPUT "(c) Alexey Chupahin "
-$! Checking architecture
-$! Checking architecture
-$ IF F$GETSYI("ARCH_TYPE").EQ.1 THEN CPU = "VAX"
-$ IF F$GETSYI("ARCH_TYPE").EQ.2 THEN CPU = "Alpha"
-$ IF F$GETSYI("ARCH_TYPE").EQ.3 THEN CPU = "I64"
-$ OS = F$GETSYI("VERSION")
-$WRITE SYS$OUTPUT "Checking architecture ... ", CPU
-$WRITE SYS$OUTPUT "Checking OS ... OpenVMS ",OS
-$SHARED=0
-$IF ( (CPU.EQS."Alpha").OR.(CPU.EQS."I64") )
-$ THEN
-$ SHARED=64
-$ ELSE
-$ 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
-$MMS = F$SEARCH("SYS$SYSTEM:MMS.EXE") .NES. ""
-$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
-$GOTO EXIT
-$!
-$!
-$TEST_LIBRARIES:
-$! Setting as MAKE utility one of MMS or MMK. I prefer MMS.
-$IF (MMK.NES."") THEN MAKE="MMK/IGN=WAR"
-$IF (MMS) THEN MAKE="MMS/IGN=WAR"
-$WRITE SYS$OUTPUT "Checking build utility ... ''MAKE'"
-$WRITE SYS$OUTPUT " "
-$!
-$IF (P1.EQS."STATIC") .OR. (P1.EQS."static")
-$ THEN
-$ WRITE SYS$OUTPUT "Configuring for static only"
-$ SHARED=0
-$ENDIF
-$!
-$! Is it package root directory? If no, go to [-]
-$ IF (F$SEARCH("[]VMS.DIR").EQS."") .AND. (F$SEARCH("[]vms.dir").EQS."")
-$ THEN
-$ SET DEF [-]
-$ ENDIF
-$!
-$!Checking for iconv
-$!
-$ DEFINE SYS$OUTPUT _NLA0:
-$ CC/OBJECT=TEST.OBJ SYS$INPUT
- #include <iconv.h>
- int main()
- {
- iconv_t cd;
- cd = iconv_open ((const char *)0, (const char *)0);
- }
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_ICONV=0
-$ENDIF
-$DEFINE SYS$OUTPUT _NLA0:
-$LINK/EXE=TEST TEST
-$TMP = $STATUS
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10000001)
-$ THEN
-$ HAVE_ICONV=0
-$ ELSE
-$ HAVE_ICONV=1
-$ENDIF
-$DEAS SYS$OUTPUT
-$IF (HAVE_ICONV.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for system iconv library... Yes"
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for system iconv library... No"
-$ENDIF
-$!
-$!"Checking for correct zlib library "
-$ ZLIB_STATIC=0
-$ DEFINE SYS$OUTPUT _NLA0:
-$ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
- #include <stdlib.h>
- #include <stdio.h>
- #include <zlib.h>
- int main()
- {
- printf("checking version zlib: %s\n",zlibVersion());
- }
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_ZLIB=0
-$ GOTO NEXT1
-$ENDIF
-$DEFINE SYS$OUTPUT _NLA0:
-$!Testing for shared ZLIB
-$COPY SYS$INPUT [.SRC]OPT.OPT
-SYS$SHARE:LIBZSHR/SHARE
-$LINK/EXE=TEST TEST,[.SRC]OPT/OPT
-$TMP = $STATUS
-$DEL [.SRC]OPT.OPT;*
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10000001)
-$ THEN
-$ LINK/EXE=TEST TEST,ZLIB:LIBZ/LIB
-$ TMP = $STATUS
-$ IF (TMP .NE. %X10000001)
-$ THEN
-$ HAVE_ZLIB=0
-$ ELSE
-$ HAVE_ZLIB=1
-$ ZLIB_STATIC=1
-$ ENDIF
-$ ELSE
-$ HAVE_ZLIB=1
-$ENDIF
-$NEXT1:
-$DEAS SYS$OUTPUT
-$IF (HAVE_ZLIB.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for correct zlib library ... Yes"
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for correct zlib library ... No"
-$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
-$ GOTO EXIT
-$ENDIF
-$RUN TEST
-$!
-$!
-$FREETYPE_STATIC=0
-$!"Checking for correct Freetype2 library"
-$ DEFINE SYS$OUTPUT _NLA0:
-$ CC/OBJECT=TEST.OBJ/INCLUDE=(FREETYPE2) SYS$INPUT
-#include <ft2build.h>
-#include <freetype/freetype.h>
-int main(int argc, char *argv[])
-{
-
-#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);
-#endif
- printf("checking version FreeType : %d.%d.%d\n",
- FREETYPE_MAJOR,
- FREETYPE_MINOR,
- FREETYPE_PATCH);
- return(0);
-}
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_FREETYPE=0
-$ GOTO NEXT0
-$ENDIF
-$DEAS SYS$OUTPUT
-$DEFINE SYS$OUTPUT _NLA0:
-$LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/OPT
-$TMP = $STATUS
-$IF (TMP .NE. %X10000001)
-$ THEN
-$ LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/LIB,ZLIB:LIBZ/LIB
-$ TMP = $STATUS
-$ IF (TMP .NE. %X10000001)
-$ THEN
-$ TMP = $STATUS
-$ HAVE_FREETYPE=0
-$ GOTO NEXT0
-$ ELSE
-$ FREETYPE_STATIC=1
-$ ENDIF
-$ENDIF
-$!
-$RUN TEST
-$IF ($STATUS .NE. %X00000001)
-$ THEN
-$ HAVE_FREETYPE=0
-$ GOTO NEXT0
-$ ELSE
-$ HAVE_FREETYPE=1
-$ENDIF
-$NEXT0:
-$DEAS SYS$OUTPUT
-$IF (HAVE_FREETYPE.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for correct FreeType ... Yes"
-$ RUN TEST
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for correct FreeType ... No"
-$ WRITE SYS$OUTPUT "This is required library "
-$ WRITE SYS$OUTPUT "install it first from fafner.dyndns.org/~alexey/libsdl/required.html"
-$ GOTO EXIT
-$ENDIF
-$!
-$!
-$HAVE_TIFF=0
-$!"Checking for libPNG "
-$ DEFINE SYS$OUTPUT _NLA0:
-$ CC/OBJECT=TEST.OBJ/INCLUDE=(PNG,ZLIB) SYS$INPUT
- #include <stdlib.h>
- #include <png.h>
- int main()
- {
- png_uint_32 n,n1,n2,n3;
- 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) )
- { 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");
- exit(2);
- }
- printf("checking version libPNG: %d.%d.%d\n",n1,n2,n3);
- }
-$!
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_LIBPNG=0
-$ GOTO NEXT2
-$ENDIF
-$DEFINE SYS$OUTPUT _NLA0:
-$LINK/EXE=TEST TEST,PNG:LIBPNG$SHR/OPT,ZLIB:LIBZ/LIB
-$TMP = $STATUS
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10000001)
-$ THEN
-$! Trying for static libpng
-$ LINK/EXE=TEST TEST,PNG:LIBPNG/LIB,ZLIB:LIBZ/LIB
-$ TMP = $STATUS
-$ IF (TMP .NE. %X10000001)
-$ THEN
-$ LIBPNG_STATIC=0
-$ HAVE_LIBPNG=0
-$ GOTO NEXT2
-$ ELSE
-$ HAVE_LIBPNG=1
-$ LIBPNG_STATIC=1
-$ ENDIF
-$ ELSE
-$ HAVE_LIBPNG=1
-$ LIBPNG_STATIC=0
-$ENDIF
-$!
-$RUN TEST
-$IF ($STATUS .NE. %X00000001)
-$ THEN
-$ HAVE_LIBPNG=0
-$ ELSE
-$ HAVE_LIBPNG=1
-$ENDIF
-$NEXT2:
-$DEAS SYS$OUTPUT
-$IF (HAVE_LIBPNG.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for correct libPNG ... Yes"
-$ RUN TEST
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for correct libPNG ... No"
-$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
-$ GOTO EXIT
-$ENDIF
-$!
-$!
-$!
-$! Checking for JPEG ...
-$ DEFINE SYS$OUTPUT _NLA0:
-$ CC/OBJECT=TEST.OBJ/INCLUDE=(JPEG) SYS$INPUT
- #include <stdlib.h>
- #include <stdio.h>
- #include <jpeglib.h>
- #include <jversion.h>
- int main()
- {
- printf("checking version jpeg: %s\n",JVERSION);
- jpeg_quality_scaling(0);
- return 0;
- }
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_JPEG=0
-$ GOTO NEXT3
-$ENDIF
-$DEFINE SYS$OUTPUT _NLA0:
-$LINK/EXE=TEST TEST,JPEG:LIBJPEG$SHR/OPT
-$TMP = $STATUS
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10000001)
-$ THEN
-$ LINK/EXE=TEST TEST,JPEG:LIBJPEG/OPT
-$ TMP = $STATUS
-$ IF (TMP .NE. %X10000001)
-$ THEN
-$ HAVE_JPEG=0
-$ JPEG_STATIC=0
-$ GOTO NEXT3
-$ ELSE
-$ HAVE_JPEG=1
-$ JPEG_STATIC=1
-$ ENDIF
-$ ELSE
-$ HAVE_JPEG=1
-$ JPEG_STATIC=0
-$ENDIF
-$!
-$NEXT3:
-$DEAS SYS$OUTPUT
-$IF (HAVE_JPEG.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for correct jpeg library ... Yes"
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for correct jpeg library ... No"
-$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
-$ GOTO EXIT
-$ENDIF
-$RUN TEST
-$!
-$!
-$!Checking for libTIFF
-$ DEFINE SYS$OUTPUT _NLA0:
-$ DEL TEST.*;*
-$ CC/OBJECT=TEST.OBJ/INCLUDE=(TIFF) SYS$INPUT
- #include <stdlib.h>
- #include <stdio.h>
- #include <tiffio.h>
- int main()
- {
- printf("checking libTIFF version:\t%s\n\n", TIFFGetVersion());
- return 0;
- }
-$!
-$TMP = $STATUS
-$DEAS SYS$OUTPUT
-$IF (TMP .NE. %X10B90001)
-$ THEN
-$ HAVE_TIFF=0
-$ GOTO NEXT4
-$ENDIF
-$DEFINE SYS$OUTPUT _NLA0:
-$LINK TEST, TIFF:LIBTIFF/OPT, ZLIB:LIBZ/LIB
-$TMP = $STATUS
-$!WRITE SYS$OUTPUT TMP
-$IF (TMP .NE. %X10000001)
-$ THEN
-$ HAVE_TIFF=0
-$ ELSE
-$ HAVE_TIFF=1
-$ENDIF
-$NEXT4:
-$DEAS SYS$OUTPUT
-$IF (HAVE_TIFF.EQ.1)
-$ THEN
-$ WRITE SYS$OUTPUT "Checking for TIFF library ... Yes"
-$ TIFF_LIBRARY_PATH="TIFF:LIBTIFF/OPT"
-$ RUN TEST
-$ ELSE
-$ WRITE SYS$OUTPUT "Checking for TIFF library ... No"
-$ WRITE SYS$OUTPUT "No TIFF library installed. This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
-$ GOTO EXIT
-$ENDIF
-$!
-$!
-$!WRITING BUILD FILES
-$!
-$IF (SHARED.EQ.64)
-$ THEN
-$ COPY SYS$INPUT [.SRC]LIBGD$DEF.OPT
-SYMBOL_VECTOR= (-
-gdAlphaBlend=PROCEDURE,-
-gdImageCreate=PROCEDURE,-
-gdImageCreateTrueColor=PROCEDURE,-
-gdImageCreateFromPng=PROCEDURE,-
-gdImageCreateFromPngCtx=PROCEDURE,-
-gdImageCreateFromPngPtr=PROCEDURE,-
-gdImageCreateFromGif=PROCEDURE,-
-gdImageCreateFromGifCtx=PROCEDURE,-
-gdImageCreateFromGifPtr=PROCEDURE,-
-gdImageCreateFromWBMP=PROCEDURE,-
-gdImageCreateFromWBMPCtx=PROCEDURE,-
-gdImageCreateFromWBMPPtr=PROCEDURE,-
-gdImageCreateFromJpeg=PROCEDURE,-
-gdImageCreateFromJpegCtx=PROCEDURE,-
-gdImageCreateFromJpegPtr=PROCEDURE,-
-gdImageCreateFromPngSource=PROCEDURE,-
-gdImageCreateFromGd=PROCEDURE,-
-gdImageCreateFromGdCtx=PROCEDURE,-
-gdImageCreateFromGdPtr=PROCEDURE,-
-gdImageCreateFromGd2=PROCEDURE,-
-gdImageCreateFromGd2Ctx=PROCEDURE,-
-gdImageCreateFromGd2Ptr=PROCEDURE,-
-gdImageCreateFromGd2Part=PROCEDURE,-
-gdImageCreateFromGd2PartCtx=PROCEDURE,-
-gdImageCreateFromGd2PartPtr=PROCEDURE,-
-gdImageCreateFromXbm=PROCEDURE,-
-gdImageCreateFromXpm=PROCEDURE,-
-gdImageStringFTCircle=PROCEDURE,-
-gdImageDestroy=PROCEDURE,-
-gdImageSetPixel=PROCEDURE,-
-gdImageGetPixel=PROCEDURE,-
-gdImageGetTrueColorPixel=PROCEDURE,-
-gdImageAABlend=PROCEDURE,-
-gdImageLine=PROCEDURE,-
-gdImageDashedLine=PROCEDURE,-
-gdImageRectangle=PROCEDURE,-
-gdImageFilledRectangle=PROCEDURE,-
-gdImageSetClip=PROCEDURE,-
-gdImageGetClip=PROCEDURE,-
-gdImageBoundsSafe=PROCEDURE,-
-gdImageChar=PROCEDURE,-
-gdImageCharUp=PROCEDURE,-
-gdImageString=PROCEDURE,-
-gdImageStringUp=PROCEDURE,-
-gdImageString16=PROCEDURE,-
-gdImageStringUp16=PROCEDURE,-
-gdFontCacheSetup=PROCEDURE,-
-gdFontCacheShutdown=PROCEDURE,-
-gdFreeFontCache=PROCEDURE,-
-gdImageStringTTF=PROCEDURE,-
-gdImageStringFT=PROCEDURE,-
-gdFTUseFontConfig=PROCEDURE,-
-gdImageStringFTEx=PROCEDURE,-
-gdImagePolygon=PROCEDURE,-
-gdImageOpenPolygon=PROCEDURE,-
-gdImageFilledPolygon=PROCEDURE,-
-gdImageColorAllocate=PROCEDURE,-
-gdImageColorAllocateAlpha=PROCEDURE,-
-gdImageColorClosest=PROCEDURE,-
-gdImageColorClosestAlpha=PROCEDURE,-
-gdImageColorClosestHWB=PROCEDURE,-
-gdImageColorExact=PROCEDURE,-
-gdImageColorExactAlpha=PROCEDURE,-
-gdImageColorResolve=PROCEDURE,-
-gdImageColorResolveAlpha=PROCEDURE,-
-gdImageColorDeallocate=PROCEDURE,-
-gdImageCreatePaletteFromTrueCol=PROCEDURE,-
-gdImageTrueColorToPalette=PROCEDURE,-
-gdImageColorTransparent=PROCEDURE,-
-gdImagePaletteCopy=PROCEDURE,-
-gdImageGif=PROCEDURE,-
-gdImagePng=PROCEDURE,-
-gdImagePngCtx=PROCEDURE,-
-gdImageGifCtx=PROCEDURE,-
-gdImagePngEx=PROCEDURE,-
-gdImagePngCtxEx=PROCEDURE,-
-gdImageWBMP=PROCEDURE,-
-gdImageWBMPCtx=PROCEDURE,-
-gdFree=PROCEDURE,-
-gdImageWBMPPtr=PROCEDURE,-
-gdImageJpeg=PROCEDURE,-
-gdImageJpegCtx=PROCEDURE,-
-gdImageJpegPtr=PROCEDURE,-
-gdImageGifAnimBegin=PROCEDURE,-
-gdImageGifAnimAdd=PROCEDURE,-
-gdImageGifAnimEnd=PROCEDURE,-
-gdImageGifAnimBeginCtx=PROCEDURE,-
-gdImageGifAnimAddCtx=PROCEDURE,-
-gdImageGifAnimEndCtx=PROCEDURE,-
-gdImageGifAnimBeginPtr=PROCEDURE,-
-gdImageGifAnimAddPtr=PROCEDURE,-
-gdImageGifAnimEndPtr=PROCEDURE,-
-gdImagePngToSink=PROCEDURE,-
-gdImageGd=PROCEDURE,-
-gdImageGd2=PROCEDURE,-
-gdImageGifPtr=PROCEDURE,-
-gdImagePngPtr=PROCEDURE,-
-gdImagePngPtrEx=PROCEDURE,-
-gdImageGdPtr=PROCEDURE,-
-gdImageGd2Ptr=PROCEDURE,-
-gdImageFilledArc=PROCEDURE,-
-gdImageArc=PROCEDURE,-
-gdImageFilledEllipse=PROCEDURE,-
-gdImageFillToBorder=PROCEDURE,-
-gdImageFill=PROCEDURE,-
-gdImageCopy=PROCEDURE,-
-gdImageCopyMerge=PROCEDURE,-
-gdImageCopyMergeGray=PROCEDURE,-
-gdImageCopyResized=PROCEDURE,-
-gdImageCopyResampled=PROCEDURE,-
-gdImageCopyRotated=PROCEDURE,-
-gdImageSetBrush=PROCEDURE,-
-gdImageSetTile=PROCEDURE,-
-gdImageSetAntiAliased=PROCEDURE,-
-gdImageSetAntiAliasedDontBlend=PROCEDURE,-
-gdImageSetStyle=PROCEDURE,-
-gdImageSetThickness=PROCEDURE,-
-gdImageInterlace=PROCEDURE,-
-gdImageAlphaBlending=PROCEDURE,-
-gdImageSaveAlpha=PROCEDURE,-
-gdNewFileCtx=PROCEDURE,-
-gdNewDynamicCtx=PROCEDURE,-
-gdNewDynamicCtxEx=PROCEDURE,-
-gdNewSSCtx=PROCEDURE,-
-gdDPExtractData=PROCEDURE,-
-gdFontGetGiant=PROCEDURE,-
-gdFontGetLarge=PROCEDURE,-
-gdFontGetMediumBold=PROCEDURE,-
-gdFontGetSmall=PROCEDURE,-
-gdFontGetTiny=PROCEDURE,-
-gdImageCompare=PROCEDURE,-
-gdImageCreateFromTiff=PROCEDURE,-
-gdImageCreateFromTiffCtx=PROCEDURE,-
-gdImageCreateFromTiffPtr=PROCEDURE,-
-gdImageCreateFromTga=PROCEDURE,-
-gdImageCreateFromTgaCtx=PROCEDURE,-
-gdImageCreateFromTgaPtr=PROCEDURE,-
-gdImageTiff=PROCEDURE,-
-gdImageTiffPtr=PROCEDURE,-
-gdImageTiffCtx=PROCEDURE,-
-gdImageCrop=PROCEDURE,-
-gdImageAutoCrop=PROCEDURE,-
-gdImageThresholdCrop=PROCEDURE,-
-gdFontGiant=DATA,-
-GDFONTLARGE=DATA,-
-GDFONTMEDIUMBOLD=DATA,-
-GDFONTSMALL=DATA,-
-GDFONTTINY=DATA-
-)
-$ENDIF
-$!
-$IF (SHARED.EQ.32)
-$ THEN
-$ COPY SYS$INPUT [.SRC]LIBGD$DEF.OPT
-UNIVERSAL=gdAlphaBlend
-UNIVERSAL=gdImageCreate
-UNIVERSAL=gdImageCreateTrueColor
-UNIVERSAL=gdImageCreateFromPng
-UNIVERSAL=gdImageCreateFromPngCtx
-UNIVERSAL=gdImageCreateFromPngPtr
-UNIVERSAL=gdImageCreateFromGif
-UNIVERSAL=gdImageCreateFromGifCtx
-UNIVERSAL=gdImageCreateFromGifPtr
-UNIVERSAL=gdImageCreateFromWBMP
-UNIVERSAL=gdImageCreateFromWBMPCtx
-UNIVERSAL=gdImageCreateFromWBMPPtr
-UNIVERSAL=gdImageCreateFromJpeg
-UNIVERSAL=gdImageStringFTCircle
-UNIVERSAL=gdImageCreateFromJpegCtx
-UNIVERSAL=gdImageCreateFromJpegPtr
-UNIVERSAL=gdImageCreateFromPngSource
-UNIVERSAL=gdImageCreateFromGd
-UNIVERSAL=gdImageCreateFromGdCtx
-UNIVERSAL=gdImageCreateFromGdPtr
-UNIVERSAL=gdImageCreateFromGd2
-UNIVERSAL=gdImageCreateFromGd2Ctx
-UNIVERSAL=gdImageCreateFromGd2Ptr
-UNIVERSAL=gdImageCreateFromGd2Part
-UNIVERSAL=gdImageCreateFromGd2PartCtx
-UNIVERSAL=gdImageCreateFromGd2PartPtr
-UNIVERSAL=gdImageCreateFromXbm
-UNIVERSAL=gdImageCreateFromXpm
-UNIVERSAL=gdImageDestroy
-UNIVERSAL=gdImageSetPixel
-UNIVERSAL=gdImageGetPixel
-UNIVERSAL=gdImageGetTrueColorPixel
-UNIVERSAL=gdImageAABlend
-UNIVERSAL=gdImageLine
-UNIVERSAL=gdImageDashedLine
-UNIVERSAL=gdImageRectangle
-UNIVERSAL=gdImageFilledRectangle
-UNIVERSAL=gdImageSetClip
-UNIVERSAL=gdImageGetClip
-UNIVERSAL=gdImageBoundsSafe
-UNIVERSAL=gdImageChar
-UNIVERSAL=gdImageCharUp
-UNIVERSAL=gdImageString
-UNIVERSAL=gdImageStringUp
-UNIVERSAL=gdImageString16
-UNIVERSAL=gdImageStringUp16
-UNIVERSAL=gdFontCacheSetup
-UNIVERSAL=gdFontCacheShutdown
-UNIVERSAL=gdFreeFontCache
-UNIVERSAL=gdImageStringTTF
-UNIVERSAL=gdImageStringFT
-UNIVERSAL=gdFTUseFontConfig
-UNIVERSAL=gdImageStringFTEx
-UNIVERSAL=gdImagePolygon
-UNIVERSAL=gdImageOpenPolygon
-UNIVERSAL=gdImageFilledPolygon
-UNIVERSAL=gdImageColorAllocate
-UNIVERSAL=gdImageColorAllocateAlpha
-UNIVERSAL=gdImageColorClosest
-UNIVERSAL=gdImageColorClosestAlpha
-UNIVERSAL=gdImageColorClosestHWB
-UNIVERSAL=gdImageColorExact
-UNIVERSAL=gdImageColorExactAlpha
-UNIVERSAL=gdImageColorResolve
-UNIVERSAL=gdImageColorResolveAlpha
-UNIVERSAL=gdImageColorDeallocate
-UNIVERSAL=gdImageCreatePaletteFromTrueCol
-UNIVERSAL=gdImageTrueColorToPalette
-UNIVERSAL=gdImageColorTransparent
-UNIVERSAL=gdImagePaletteCopy
-UNIVERSAL=gdImageGif
-UNIVERSAL=gdImagePng
-UNIVERSAL=gdImagePngCtx
-UNIVERSAL=gdImageGifCtx
-UNIVERSAL=gdImagePngEx
-UNIVERSAL=gdImagePngCtxEx
-UNIVERSAL=gdImageWBMP
-UNIVERSAL=gdImageWBMPCtx
-UNIVERSAL=gdFree
-UNIVERSAL=gdImageWBMPPtr
-UNIVERSAL=gdImageJpeg
-UNIVERSAL=gdImageJpegCtx
-UNIVERSAL=gdImageJpegPtr
-UNIVERSAL=gdImageGifAnimBegin
-UNIVERSAL=gdImageGifAnimAdd
-UNIVERSAL=gdImageGifAnimEnd
-UNIVERSAL=gdImageGifAnimBeginCtx
-UNIVERSAL=gdImageGifAnimAddCtx
-UNIVERSAL=gdImageGifAnimEndCtx
-UNIVERSAL=gdImageGifAnimBeginPtr
-UNIVERSAL=gdImageGifAnimAddPtr
-UNIVERSAL=gdImageGifAnimEndPtr
-UNIVERSAL=gdImagePngToSink
-UNIVERSAL=gdImageGd
-UNIVERSAL=gdImageGd2
-UNIVERSAL=gdImageGifPtr
-UNIVERSAL=gdImagePngPtr
-UNIVERSAL=gdImagePngPtrEx
-UNIVERSAL=gdImageGdPtr
-UNIVERSAL=gdImageGd2Ptr
-UNIVERSAL=gdImageFilledArc
-UNIVERSAL=gdImageArc
-UNIVERSAL=gdImageFilledEllipse
-UNIVERSAL=gdImageFillToBorder
-UNIVERSAL=gdImageFill
-UNIVERSAL=gdImageCopy
-UNIVERSAL=gdImageCopyMerge
-UNIVERSAL=gdImageCopyMergeGray
-UNIVERSAL=gdImageCopyResized
-UNIVERSAL=gdImageCopyResampled
-UNIVERSAL=gdImageCopyRotated
-UNIVERSAL=gdImageSetBrush
-UNIVERSAL=gdImageSetTile
-UNIVERSAL=gdImageSetAntiAliased
-UNIVERSAL=gdImageSetAntiAliasedDontBlend
-UNIVERSAL=gdImageSetStyle
-UNIVERSAL=gdImageSetThickness
-UNIVERSAL=gdImageInterlace
-UNIVERSAL=gdImageAlphaBlending
-UNIVERSAL=gdImageSaveAlpha
-UNIVERSAL=gdNewFileCtx
-UNIVERSAL=gdNewDynamicCtx
-UNIVERSAL=gdNewDynamicCtxEx
-UNIVERSAL=gdNewSSCtx
-UNIVERSAL=gdDPExtractData
-UNIVERSAL=gdFontGetGiant
-UNIVERSAL=gdFontGetLarge
-UNIVERSAL=gdFontGetMediumBold
-UNIVERSAL=gdFontGetSmall
-UNIVERSAL=gdFontGetTiny
-UNIVERSAL=gdImageCompare
-UNIVERSAL=gdFontGiant
-UNIVERSAL=gdImageCreateFromTiff
-UNIVERSAL=gdImageCreateFromTiffCtx
-UNIVERSAL=gdImageCreateFromTiffPtr
-UNIVERSAL=gdImageCreateFromTga
-UNIVERSAL=gdImageCreateFromTgaCtx
-UNIVERSAL=gdImageCreateFromTgaPtr
-UNIVERSAL=gdImageTiff
-UNIVERSAL=gdImageTiffPtr
-UNIVERSAL=gdImageTiffCtx
-UNIVERSAL=gdImageCrop
-UNIVERSAL=gdImageAutoCrop
-UNIVERSAL=gdImageThresholdCrop
-UNIVERSAL=GDFONTLARGE
-UNIVERSAL=GDFONTMEDIUMBOLD
-UNIVERSAL=GDFONTSMALL
-UNIVERSAL=GDFONTTINY
-
-$ENDIF
-$!
-$!
-$DEF SYS$OUTPUT _NL0:
-$!
-$!Making OPT file for GD$SHR.EXE, i.e without reference to himself
-$COPY SYS$INPUT [.SRC]OPT.OPT
-[]GD/LIB
-$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
-$ THEN
-$ APP SYS$INPUT [.SRC]OPT.OPT
-PNG:LIBPNG/LIB
-$ENDIF
-$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
-$ THEN
-$ APP PNG:LIBPNG$SHR.OPT [.SRC]OPT.OPT
-$ENDIF
-$!
-$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.1) .AND. (HAVE_TIFF.NE.1))
-$ THEN
-$ APP SYS$INPUT [.SRC]OPT.OPT
-JPEG:LIBJPEG/LIB
-$ENDIF
-$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0) .AND. (HAVE_TIFF.NE.1))
-$ THEN
-$ APP JPEG:LIBJPEG$SHR.OPT [.SRC]OPT.OPT
-$ENDIF
-$!
-$IF (HAVE_TIFF.EQ.1)
-$ THEN
-$ APP TIFF:LIBTIFF.OPT [.SRC]OPT.OPT
-$ENDIF
-$!
-$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
-$ THEN
-$ APP SYS$INPUT [.SRC]OPT.OPT
- FREETYPE2:FREETYPE/LIB
- ZLIB:LIBZ/LIB
-$ENDIF
-$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
-$ THEN
-$ APP FREETYPE2:FREETYPE.OPT [.SRC]OPT.OPT
-$ENDIF
-$!
-$IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
-$ THEN
-$ IF (ZLIB_STATIC.EQ.0)
-$ THEN
-$ APP SYS$INPUT [.SRC]OPT.OPT
- SYS$SHARE:LIBZSHR/SHARE
-$ ELSE
-$ APP SYS$INPUT [.SRC]OPT.OPT
- ZLIB:LIBZ/LIB
-$ ENDIF
-$ ELSE
-$ APP SYS$INPUT [.SRC]OPT.OPT
- ZLIB:LIBZ/LIB
-$ENDIF
-$!
-$!
-$PURGE [.SRC]OPT.OPT
-$!
-$!
-$!Making working LIBGD.OPT file
-$!
-$IF (SHARED.GT.0)
-$ THEN
- $COPY SYS$INPUT [.SRC]LIBGD.OPT
- SYS$SHARE:GD$SHR/SHARE
-$ ELSE
- $COPY SYS$INPUT [.SRC]LIBGD.OPT
- LIBGD:GD/LIB
-$ENDIF
-$!
-$!Append OPT files to LIBGD.OPT
-$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
-$ THEN
-$ APP SYS$INPUT [.SRC]LIBGD.OPT
-PNG:LIBPNG/LIB
-$ENDIF
-$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
-$ THEN
-$ APP PNG:LIBPNG$SHR.OPT [.SRC]LIBGD.OPT
-$ENDIF
-$!
-$IF ((HAVE_JPEG.EQ.1) .AND. (HAVE_TIFF.NE.1) .AND. (JPEG_STATIC.EQ.1))
-$ THEN
-$ APP JPEG:LIBJPEG.OPT [.SRC]LIBGD.OPT
-$ENDIF
-$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0) .AND. (HAVE_TIFF.NE.1))
-$ THEN
-$ APP JPEG:LIBJPEG$SHR.OPT [.SRC]LIBGD.OPT
-$ENDIF
-$!
-$IF (HAVE_TIFF.EQ.1)
-$ THEN
-$ APP TIFF:LIBTIFF.OPT [.SRC]LIBGD.OPT
-$ENDIF
-$!
-$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
-$ THEN
-$ APP SYS$INPUT [.SRC]LIBGD.OPT
- FREETYPE2:FREETYPE/LIB
- ZLIB:LIBZ/LIB
-$ENDIF
-$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
-$ THEN
-$ APP FREETYPE2:FREETYPE.OPT [.SRC]LIBGD.OPT
-$ENDIF
-$!
-$IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
-$ THEN
-$ IF (ZLIB_STATIC.EQ.0)
-$ THEN
-$ APP SYS$INPUT [.SRC]LIBGD.OPT
- SYS$SHARE:LIBZSHR/SHARE
-$ ELSE
-$ APP SYS$INPUT [.SRC]LIBGD.OPT
- ZLIB:LIBZ/LIB
-$ ENDIF
-$ENDIF
-$!
-$PURGE LIBGD.OPT
-$!
-$DEAS SYS$OUTPUT
-$!
-$OPEN/WRITE OUT BUILD.COM
-$ WRITE OUT "$SET DEF [.SRC]"
-$ WRITE OUT "$",MAKE
-$ WRITE OUT "$ CURRENT = F$ENVIRONMENT (""DEFAULT"") "
-$ WRITE OUT "$TMP=CURRENT"
-$ WRITE OUT "$OPEN/WRITE OUTT [-]LIBGD$STARTUP.COM"
-$ WRITE OUT "$WRITE OUTT ""DEFINE LIBGD """"", "'","'","TMP'"""""""
-$ WRITE OUT "$WRITE OUTT ""GD2COPYPAL==""""$","'","'","TMP'"",""GD2COPYPAL"""" "
-$ WRITE OUT "$WRITE OUTT ""GD2TIME==""""$","'","'","TMP'"",""GD2TIME"""" "
-$ WRITE OUT "$WRITE OUTT ""GD2TOGIF==""""$","'","'","TMP'"",""GD2TOGIF"""" "
-$ WRITE OUT "$WRITE OUTT ""GD2TOPNG==""""$","'","'","TMP'"",""GD2TOPNG"""" "
-$ WRITE OUT "$WRITE OUTT ""GDCMPGIF==""""$","'","'","TMP'"",""GDCMPGIF"""" "
-$ WRITE OUT "$WRITE OUTT ""GDTOPNG==""""$","'","'","TMP'"",""GDTOPNG"""" "
-$ WRITE OUT "$WRITE OUTT ""GIFTOGD2==""""$","'","'","TMP'"",""GIFTOGD2"""" "
-$ WRITE OUT "$WRITE OUTT ""PNGTOGD==""""$","'","'","TMP'"",""PNGTOGD"""" "
-$ WRITE OUT "$WRITE OUTT ""PNGTOGD2==""""$","'","'","TMP'"",""PNGTOGD2"""" "
-$ WRITE OUT "$WRITE OUTT ""WEBPNG==""""$","'","'","TMP'"",""WEBPNG"""" "
-$ WRITE OUT "$CLOSE OUTT"
-$!
-$ WRITE OUT "$WRITE SYS$OUTPUT "" "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""LIBGD$STARTUP.COM has been created. "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""This file setups all logicals needed. It should be execute before using "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""Nice place to call it - LOGIN.COM "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT """" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""Using:"" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""CC/INCL=LIBGD PROG"" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""LINK PROG, LIBGD:LIBGD/OPT"" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
-$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
-$ WRITE OUT "$SET DEF [-]"
-$CLOSE OUT
-$!
-$!
-$!Writing config.h
-$COPY SYS$INPUT [.SRC]CONFIG.H
-/* Generated by configure.com for OpenVMS */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-
-#define PACKAGE_NAME "GD"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GD 2.1.0"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "GD"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.1.0"
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- * your system. */
-/* #undef PTHREAD_CREATE_JOINABLE */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Version number of package */
-#define VERSION "2.1.0"
-
-/* Define to 1 if you have the `m' library (-lm). */
-#define HAVE_LIBM 1
-
-
-/* Define to 1 if you have the <libpng/png.h> header file. */
-/* #undef HAVE_LIBPNG_PNG_H */
-
-
-
-/* Define to 1 if you have the <limits.h> header file. */
-//#define HAVE_LIMITS_H 1
-
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-
-/* Define if you have POSIX threads libraries and header files. */
-#define HAVE_PTHREAD 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-//#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define as const if the declaration of iconv() needs const. */
-//#define ICONV_CONST
-
-/* Name of package */
-#define PACKAGE "gd"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "http://bugs.libgd.org"
-
-/* Define to the full name of this package. */
-
-
-
-$IF HAVE_ICONV.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- /* Define if you have the iconv() function. */
- #define HAVE_ICONV 1
- /* Define to 1 if you have the <iconv.h> header file. */
- #define HAVE_ICONV_H 1
- /* Define if <iconv.h> defines iconv_t. */
- #define HAVE_ICONV_T_DEF 1
-$ENDIF
-$IF HAVE_TIFF.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBTIFF 1
-$ENDIF
-$IF HAVE_LIBPNG.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBPNG 1
- #define HAVE_PNG_H 1
-$ENDIF
-$IF HAVE_FREETYPE.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBFREETYPE 1
- #define HAVE_FT2BUILD_H 1
-$ENDIF
-$IF HAVE_JPEG.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBJPEG 1
-$ENDIF
-$IF HAVE_ZLIB.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBZ 1
-$ENDIF
-$IF HAVE_TIFF.EQ.1
-$ THEN
-$ APP SYS$INPUT [.SRC]CONFIG.H
- #define HAVE_LIBTIFF 1
-$ENDIF
-$!
-$!
-$!
-$!
-$COP SYS$INPUT [.SRC]DESCRIP.MMS
-# Generated by CONFIGURE.COM
-# Alexey Chupahin elvis_75@mail.ru
-# OpenVMS 7.3-1,8.2 DEC 2000 mod.300
-# OpenVMS 8.3 HP rx1620
-
-
-.FIRST
- DEF LIBGD []
-
-CC=cc
-CFLAGS=/OPT=(INLINE=SPEED) /INCL=([],JPEG,PNG,FREETYPE2,ZLIB,TIFF) /DEF=(HAVE_CONFIG_H)/WARN=(DIS=MACROREDEF)
-LIBS=[]LIBGD/OPT
-
-
-ALL : \
-gd.olb,\
-$IF (SHARED.GT.0)
-$ THEN
-$ APP SYS$INPUT [.SRC]DESCRIP.MMS
-gd$shr.exe,\
-$ENDIF
-$!
-$APP SYS$INPUT [.SRC]DESCRIP.MMS
-annotate.exe,\
-circletexttest.exe,\
-fontconfigtest.exe,\
-circletexttest.exe,\
-fontconfigtest.exe,\
-fontsizetest.exe,\
-fontwheeltest.exe,\
-gd2copypal.exe,\
-gd2time.exe,\
-gd2togif.exe,\
-gd2topng.exe,\
-gdcmpgif.exe,\
-gddemo.exe,\
-gdtest.exe,\
-gdtestft.exe,\
-gdtopng.exe,\
-gifanimtest.exe,\
-giftogd2.exe,\
-pngtogd.exe,\
-pngtogd2.exe,\
-testac.exe,\
-testtr.exe,\
-webpng.exe,\
-gdparttopng.exe
- $!
-
-annotate.exe : annotate.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-circletexttest.exe : circletexttest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-fontconfigtest.exe : fontconfigtest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-fontsizetest.exe : fontsizetest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-fontwheeltest.exe : fontwheeltest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-gd2copypal.exe : gd2copypal.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-gd2time.exe : gd2time.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-gd2togif.exe : gd2togif.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-gd2topng.exe : gd2topng.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gdcmpgif.exe : gdcmpgif.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gddemo.exe : gddemo.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gdtest.exe : gdtest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gdtestft.exe : gdtestft.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gdtopng.exe : gdtopng.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gifanimtest.exe : gifanimtest.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-giftogd2.exe : giftogd2.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-giftogd2.obj : giftogd2.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-pngtogd.exe : pngtogd.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-pngtogd2.exe : pngtogd2.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-testac.exe : testac.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-testtr.exe : testtr.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-webpng.exe : webpng.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-gdparttopng.exe : gdparttopng.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
- LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
- DEL TMP.OBJ;*
-
-
-OBJ=\
-gd.obj,\
-gdcache.obj,\
-gdfontg.obj,\
-gdfontl.obj,\
-gdfontmb.obj,\
-gdfonts.obj,\
-gdfontt.obj,\
-gdft.obj,\
-gdfx.obj,\
-gdhelpers.obj,\
-gdkanji.obj,\
-gdtables.obj,\
-gdxpm.obj,\
-gd_bmp.obj,\
-gd_gd.obj,\
-gd_gd2.obj,\
-gd_gif_in.obj,\
-gd_gif_out.obj,\
-gd_io.obj,\
-gd_io_dp.obj,\
-gd_io_file.obj,\
-gd_io_ss.obj,\
-gd_jpeg.obj,\
-gd_png.obj,\
-gd_security.obj,\
-gd_ss.obj,\
-gd_crop.obj,\
-gd_tga.obj,\
-gd_tiff.obj,\
-gd_transform.obj,\
-gd_topal.obj,\
-gd_wbmp.obj,\
-wbmp.obj
-
-
-gd_transform.obj : gd_transform.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_tiff.obj : gd_tiff.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_tga.obj : gd_tga.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_bmp.obj : gd_bmp.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_crop.obj : gd_crop.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd.obj : gd.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdcache.obj : gdcache.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfontg.obj : gdfontg.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfontl.obj : gdfontl.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfontmb.obj : gdfontmb.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfonts.obj : gdfonts.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfontt.obj : gdfontt.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdft.obj : gdft.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdfx.obj : gdfx.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdhelpers.obj : gdhelpers.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdkanji.obj : gdkanji.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdtables.obj : gdtables.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gdxpm.obj : gdxpm.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_gd.obj : gd_gd.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_gd2.obj : gd_gd2.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_gif_in.obj : gd_gif_in.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_gif_out.obj : gd_gif_out.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_io.obj : gd_io.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_io_dp.obj : gd_io_dp.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_io_file.obj : gd_io_file.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_io_ss.obj : gd_io_ss.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_jpeg.obj : gd_jpeg.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_png.obj : gd_png.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_security.obj : gd_security.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_ss.obj : gd_ss.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_topal.obj : gd_topal.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-gd_wbmp.obj : gd_wbmp.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-wbmp.obj : wbmp.c
- $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
-
-
-GD.OLB : $(OBJ)
- LIB/CREA GD.OLB $(OBJ)
-
-GD$SHR.EXE : $(OBJ)
- LINK/SHARE=GD$SHR GD.OBJ,LIBGD$DEF/OPT,OPT/OPT
- COPY GD$SHR.EXE SYS$SHARE
-
-CLEAN :
- DEL [...]*.OBJ;*
- DEL [...]*.OLB;*
- DEL [...]*.EXE;*
-$!DEL TMP.MMS;*
-$!
-$IF (F$SEARCH("[.SRC]GD.H;2").EQS."")
-$ THEN
-$ WRITE SYS$OUTPUT "Patching GD.H"
-$ DEF SYS$OUTPUT "_NLA0:"
-$ COPY SYS$INPUT [.SRC]GD.H;2
-#define gdImageCreatePaletteFromTrueColor gdImageCreatePaletteFromTrueCol
-
-$ APP [.SRC]GD.H;1 [.SRC]GD.H;2
-$ DEAS SYS$INPUT
-$ENDIF
-$!
-$!
-$!
-$!
-$WRITE SYS$OUTPUT " "
-$WRITE SYS$OUTPUT " "
-$WRITE SYS$OUTPUT "Now you can type @BUILD "
-$!
-$EXIT:
-$DEFINE SYS$OUTPUT _NLA0:
-$DEL TEST.OBJ;*
-$DEL TEST.C;*
-$DEL TEST.EXE;*
-$DEAS SYS$OUTPUT
+$! (c) Alexey Chupahin 18-APR-2006, 15-DEC-2007
+$! OpenVMS 8.2 Alpha DEC 2000 model 300
+$! OpenVMS 8.3 Itanium rx1620
+$! GNU
+$!
+$!
+$DEF SYS$ERROR _NL0:
+$ SET NOON
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT "Configuring GD library for OpenVMS"
+$WRITE SYS$OUTPUT "(c) Alexey Chupahin "
+$! Checking architecture
+$! Checking architecture
+$ IF F$GETSYI("ARCH_TYPE").EQ.1 THEN CPU = "VAX"
+$ IF F$GETSYI("ARCH_TYPE").EQ.2 THEN CPU = "Alpha"
+$ IF F$GETSYI("ARCH_TYPE").EQ.3 THEN CPU = "I64"
+$ OS = F$GETSYI("VERSION")
+$WRITE SYS$OUTPUT "Checking architecture ... ", CPU
+$WRITE SYS$OUTPUT "Checking OS ... OpenVMS ",OS
+$SHARED=0
+$IF ( (CPU.EQS."Alpha").OR.(CPU.EQS."I64") )
+$ THEN
+$ SHARED=64
+$ ELSE
+$ 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
+$MMS = F$SEARCH("SYS$SYSTEM:MMS.EXE") .NES. ""
+$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
+$GOTO EXIT
+$!
+$!
+$TEST_LIBRARIES:
+$! Setting as MAKE utility one of MMS or MMK. I prefer MMS.
+$IF (MMK.NES."") THEN MAKE="MMK/IGN=WAR"
+$IF (MMS) THEN MAKE="MMS/IGN=WAR"
+$WRITE SYS$OUTPUT "Checking build utility ... ''MAKE'"
+$WRITE SYS$OUTPUT " "
+$!
+$IF (P1.EQS."STATIC") .OR. (P1.EQS."static")
+$ THEN
+$ WRITE SYS$OUTPUT "Configuring for static only"
+$ SHARED=0
+$ENDIF
+$!
+$! Is it package root directory? If no, go to [-]
+$ IF (F$SEARCH("[]VMS.DIR").EQS."") .AND. (F$SEARCH("[]vms.dir").EQS."")
+$ THEN
+$ SET DEF [-]
+$ ENDIF
+$!
+$!Checking for iconv
+$!
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ SYS$INPUT
+ #include <iconv.h>
+ int main()
+ {
+ iconv_t cd;
+ cd = iconv_open ((const char *)0, (const char *)0);
+ }
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_ICONV=0
+$ENDIF
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST
+$TMP = $STATUS
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$ THEN
+$ HAVE_ICONV=0
+$ ELSE
+$ HAVE_ICONV=1
+$ENDIF
+$DEAS SYS$OUTPUT
+$IF (HAVE_ICONV.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for system iconv library... Yes"
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for system iconv library... No"
+$ENDIF
+$!
+$!"Checking for correct zlib library "
+$ ZLIB_STATIC=0
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <zlib.h>
+ int main()
+ {
+ printf("checking version zlib: %s\n",zlibVersion());
+ }
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_ZLIB=0
+$ GOTO NEXT1
+$ENDIF
+$DEFINE SYS$OUTPUT _NLA0:
+$!Testing for shared ZLIB
+$COPY SYS$INPUT [.SRC]OPT.OPT
+SYS$SHARE:LIBZSHR/SHARE
+$LINK/EXE=TEST TEST,[.SRC]OPT/OPT
+$TMP = $STATUS
+$DEL [.SRC]OPT.OPT;*
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$ THEN
+$ LINK/EXE=TEST TEST,ZLIB:LIBZ/LIB
+$ TMP = $STATUS
+$ IF (TMP .NE. %X10000001)
+$ THEN
+$ HAVE_ZLIB=0
+$ ELSE
+$ HAVE_ZLIB=1
+$ ZLIB_STATIC=1
+$ ENDIF
+$ ELSE
+$ HAVE_ZLIB=1
+$ENDIF
+$NEXT1:
+$DEAS SYS$OUTPUT
+$IF (HAVE_ZLIB.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for correct zlib library ... Yes"
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for correct zlib library ... No"
+$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$ GOTO EXIT
+$ENDIF
+$RUN TEST
+$!
+$!
+$FREETYPE_STATIC=0
+$!"Checking for correct Freetype2 library"
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(FREETYPE2) SYS$INPUT
+#include <ft2build.h>
+#include <freetype/freetype.h>
+int main(int argc, char *argv[])
+{
+
+#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);
+#endif
+ printf("checking version FreeType : %d.%d.%d\n",
+ FREETYPE_MAJOR,
+ FREETYPE_MINOR,
+ FREETYPE_PATCH);
+ return(0);
+}
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_FREETYPE=0
+$ GOTO NEXT0
+$ENDIF
+$DEAS SYS$OUTPUT
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/OPT
+$TMP = $STATUS
+$IF (TMP .NE. %X10000001)
+$ THEN
+$ LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/LIB,ZLIB:LIBZ/LIB
+$ TMP = $STATUS
+$ IF (TMP .NE. %X10000001)
+$ THEN
+$ TMP = $STATUS
+$ HAVE_FREETYPE=0
+$ GOTO NEXT0
+$ ELSE
+$ FREETYPE_STATIC=1
+$ ENDIF
+$ENDIF
+$!
+$RUN TEST
+$IF ($STATUS .NE. %X00000001)
+$ THEN
+$ HAVE_FREETYPE=0
+$ GOTO NEXT0
+$ ELSE
+$ HAVE_FREETYPE=1
+$ENDIF
+$NEXT0:
+$DEAS SYS$OUTPUT
+$IF (HAVE_FREETYPE.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for correct FreeType ... Yes"
+$ RUN TEST
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for correct FreeType ... No"
+$ WRITE SYS$OUTPUT "This is required library "
+$ WRITE SYS$OUTPUT "install it first from fafner.dyndns.org/~alexey/libsdl/required.html"
+$ GOTO EXIT
+$ENDIF
+$!
+$!
+$HAVE_TIFF=0
+$!"Checking for libPNG "
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(PNG,ZLIB) SYS$INPUT
+ #include <stdlib.h>
+ #include <png.h>
+ int main()
+ {
+ png_uint_32 n,n1,n2,n3;
+ 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) )
+ { 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");
+ exit(2);
+ }
+ printf("checking version libPNG: %d.%d.%d\n",n1,n2,n3);
+ }
+$!
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_LIBPNG=0
+$ GOTO NEXT2
+$ENDIF
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,PNG:LIBPNG$SHR/OPT,ZLIB:LIBZ/LIB
+$TMP = $STATUS
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$ THEN
+$! Trying for static libpng
+$ LINK/EXE=TEST TEST,PNG:LIBPNG/LIB,ZLIB:LIBZ/LIB
+$ TMP = $STATUS
+$ IF (TMP .NE. %X10000001)
+$ THEN
+$ LIBPNG_STATIC=0
+$ HAVE_LIBPNG=0
+$ GOTO NEXT2
+$ ELSE
+$ HAVE_LIBPNG=1
+$ LIBPNG_STATIC=1
+$ ENDIF
+$ ELSE
+$ HAVE_LIBPNG=1
+$ LIBPNG_STATIC=0
+$ENDIF
+$!
+$RUN TEST
+$IF ($STATUS .NE. %X00000001)
+$ THEN
+$ HAVE_LIBPNG=0
+$ ELSE
+$ HAVE_LIBPNG=1
+$ENDIF
+$NEXT2:
+$DEAS SYS$OUTPUT
+$IF (HAVE_LIBPNG.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for correct libPNG ... Yes"
+$ RUN TEST
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for correct libPNG ... No"
+$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$ GOTO EXIT
+$ENDIF
+$!
+$!
+$!
+$! Checking for JPEG ...
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(JPEG) SYS$INPUT
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <jpeglib.h>
+ #include <jversion.h>
+ int main()
+ {
+ printf("checking version jpeg: %s\n",JVERSION);
+ jpeg_quality_scaling(0);
+ return 0;
+ }
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_JPEG=0
+$ GOTO NEXT3
+$ENDIF
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,JPEG:LIBJPEG$SHR/OPT
+$TMP = $STATUS
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$ THEN
+$ LINK/EXE=TEST TEST,JPEG:LIBJPEG/OPT
+$ TMP = $STATUS
+$ IF (TMP .NE. %X10000001)
+$ THEN
+$ HAVE_JPEG=0
+$ JPEG_STATIC=0
+$ GOTO NEXT3
+$ ELSE
+$ HAVE_JPEG=1
+$ JPEG_STATIC=1
+$ ENDIF
+$ ELSE
+$ HAVE_JPEG=1
+$ JPEG_STATIC=0
+$ENDIF
+$!
+$NEXT3:
+$DEAS SYS$OUTPUT
+$IF (HAVE_JPEG.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for correct jpeg library ... Yes"
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for correct jpeg library ... No"
+$ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$ GOTO EXIT
+$ENDIF
+$RUN TEST
+$!
+$!
+$!Checking for libTIFF
+$ DEFINE SYS$OUTPUT _NLA0:
+$ DEL TEST.*;*
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(TIFF) SYS$INPUT
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <tiffio.h>
+ int main()
+ {
+ printf("checking libTIFF version:\t%s\n\n", TIFFGetVersion());
+ return 0;
+ }
+$!
+$TMP = $STATUS
+$DEAS SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$ THEN
+$ HAVE_TIFF=0
+$ GOTO NEXT4
+$ENDIF
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK TEST, TIFF:LIBTIFF/OPT, ZLIB:LIBZ/LIB
+$TMP = $STATUS
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$ THEN
+$ HAVE_TIFF=0
+$ ELSE
+$ HAVE_TIFF=1
+$ENDIF
+$NEXT4:
+$DEAS SYS$OUTPUT
+$IF (HAVE_TIFF.EQ.1)
+$ THEN
+$ WRITE SYS$OUTPUT "Checking for TIFF library ... Yes"
+$ TIFF_LIBRARY_PATH="TIFF:LIBTIFF/OPT"
+$ RUN TEST
+$ ELSE
+$ WRITE SYS$OUTPUT "Checking for TIFF library ... No"
+$ WRITE SYS$OUTPUT "No TIFF library installed. This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$ GOTO EXIT
+$ENDIF
+$!
+$!
+$!WRITING BUILD FILES
+$!
+$IF (SHARED.EQ.64)
+$ THEN
+$ COPY SYS$INPUT [.SRC]LIBGD$DEF.OPT
+SYMBOL_VECTOR= (-
+gdAlphaBlend=PROCEDURE,-
+gdImageCreate=PROCEDURE,-
+gdImageCreateTrueColor=PROCEDURE,-
+gdImageCreateFromPng=PROCEDURE,-
+gdImageCreateFromPngCtx=PROCEDURE,-
+gdImageCreateFromPngPtr=PROCEDURE,-
+gdImageCreateFromGif=PROCEDURE,-
+gdImageCreateFromGifCtx=PROCEDURE,-
+gdImageCreateFromGifPtr=PROCEDURE,-
+gdImageCreateFromWBMP=PROCEDURE,-
+gdImageCreateFromWBMPCtx=PROCEDURE,-
+gdImageCreateFromWBMPPtr=PROCEDURE,-
+gdImageCreateFromJpeg=PROCEDURE,-
+gdImageCreateFromJpegCtx=PROCEDURE,-
+gdImageCreateFromJpegPtr=PROCEDURE,-
+gdImageCreateFromPngSource=PROCEDURE,-
+gdImageCreateFromGd=PROCEDURE,-
+gdImageCreateFromGdCtx=PROCEDURE,-
+gdImageCreateFromGdPtr=PROCEDURE,-
+gdImageCreateFromGd2=PROCEDURE,-
+gdImageCreateFromGd2Ctx=PROCEDURE,-
+gdImageCreateFromGd2Ptr=PROCEDURE,-
+gdImageCreateFromGd2Part=PROCEDURE,-
+gdImageCreateFromGd2PartCtx=PROCEDURE,-
+gdImageCreateFromGd2PartPtr=PROCEDURE,-
+gdImageCreateFromXbm=PROCEDURE,-
+gdImageCreateFromXpm=PROCEDURE,-
+gdImageStringFTCircle=PROCEDURE,-
+gdImageDestroy=PROCEDURE,-
+gdImageSetPixel=PROCEDURE,-
+gdImageGetPixel=PROCEDURE,-
+gdImageGetTrueColorPixel=PROCEDURE,-
+gdImageAABlend=PROCEDURE,-
+gdImageLine=PROCEDURE,-
+gdImageDashedLine=PROCEDURE,-
+gdImageRectangle=PROCEDURE,-
+gdImageFilledRectangle=PROCEDURE,-
+gdImageSetClip=PROCEDURE,-
+gdImageGetClip=PROCEDURE,-
+gdImageBoundsSafe=PROCEDURE,-
+gdImageChar=PROCEDURE,-
+gdImageCharUp=PROCEDURE,-
+gdImageString=PROCEDURE,-
+gdImageStringUp=PROCEDURE,-
+gdImageString16=PROCEDURE,-
+gdImageStringUp16=PROCEDURE,-
+gdFontCacheSetup=PROCEDURE,-
+gdFontCacheShutdown=PROCEDURE,-
+gdFreeFontCache=PROCEDURE,-
+gdImageStringTTF=PROCEDURE,-
+gdImageStringFT=PROCEDURE,-
+gdFTUseFontConfig=PROCEDURE,-
+gdImageStringFTEx=PROCEDURE,-
+gdImagePolygon=PROCEDURE,-
+gdImageOpenPolygon=PROCEDURE,-
+gdImageFilledPolygon=PROCEDURE,-
+gdImageColorAllocate=PROCEDURE,-
+gdImageColorAllocateAlpha=PROCEDURE,-
+gdImageColorClosest=PROCEDURE,-
+gdImageColorClosestAlpha=PROCEDURE,-
+gdImageColorClosestHWB=PROCEDURE,-
+gdImageColorExact=PROCEDURE,-
+gdImageColorExactAlpha=PROCEDURE,-
+gdImageColorResolve=PROCEDURE,-
+gdImageColorResolveAlpha=PROCEDURE,-
+gdImageColorDeallocate=PROCEDURE,-
+gdImageCreatePaletteFromTrueCol=PROCEDURE,-
+gdImageTrueColorToPalette=PROCEDURE,-
+gdImageColorTransparent=PROCEDURE,-
+gdImagePaletteCopy=PROCEDURE,-
+gdImageGif=PROCEDURE,-
+gdImagePng=PROCEDURE,-
+gdImagePngCtx=PROCEDURE,-
+gdImageGifCtx=PROCEDURE,-
+gdImagePngEx=PROCEDURE,-
+gdImagePngCtxEx=PROCEDURE,-
+gdImageWBMP=PROCEDURE,-
+gdImageWBMPCtx=PROCEDURE,-
+gdFree=PROCEDURE,-
+gdImageWBMPPtr=PROCEDURE,-
+gdImageJpeg=PROCEDURE,-
+gdImageJpegCtx=PROCEDURE,-
+gdImageJpegPtr=PROCEDURE,-
+gdImageGifAnimBegin=PROCEDURE,-
+gdImageGifAnimAdd=PROCEDURE,-
+gdImageGifAnimEnd=PROCEDURE,-
+gdImageGifAnimBeginCtx=PROCEDURE,-
+gdImageGifAnimAddCtx=PROCEDURE,-
+gdImageGifAnimEndCtx=PROCEDURE,-
+gdImageGifAnimBeginPtr=PROCEDURE,-
+gdImageGifAnimAddPtr=PROCEDURE,-
+gdImageGifAnimEndPtr=PROCEDURE,-
+gdImagePngToSink=PROCEDURE,-
+gdImageGd=PROCEDURE,-
+gdImageGd2=PROCEDURE,-
+gdImageGifPtr=PROCEDURE,-
+gdImagePngPtr=PROCEDURE,-
+gdImagePngPtrEx=PROCEDURE,-
+gdImageGdPtr=PROCEDURE,-
+gdImageGd2Ptr=PROCEDURE,-
+gdImageFilledArc=PROCEDURE,-
+gdImageArc=PROCEDURE,-
+gdImageFilledEllipse=PROCEDURE,-
+gdImageFillToBorder=PROCEDURE,-
+gdImageFill=PROCEDURE,-
+gdImageCopy=PROCEDURE,-
+gdImageCopyMerge=PROCEDURE,-
+gdImageCopyMergeGray=PROCEDURE,-
+gdImageCopyResized=PROCEDURE,-
+gdImageCopyResampled=PROCEDURE,-
+gdImageCopyRotated=PROCEDURE,-
+gdImageSetBrush=PROCEDURE,-
+gdImageSetTile=PROCEDURE,-
+gdImageSetAntiAliased=PROCEDURE,-
+gdImageSetAntiAliasedDontBlend=PROCEDURE,-
+gdImageSetStyle=PROCEDURE,-
+gdImageSetThickness=PROCEDURE,-
+gdImageInterlace=PROCEDURE,-
+gdImageAlphaBlending=PROCEDURE,-
+gdImageSaveAlpha=PROCEDURE,-
+gdNewFileCtx=PROCEDURE,-
+gdNewDynamicCtx=PROCEDURE,-
+gdNewDynamicCtxEx=PROCEDURE,-
+gdNewSSCtx=PROCEDURE,-
+gdDPExtractData=PROCEDURE,-
+gdFontGetGiant=PROCEDURE,-
+gdFontGetLarge=PROCEDURE,-
+gdFontGetMediumBold=PROCEDURE,-
+gdFontGetSmall=PROCEDURE,-
+gdFontGetTiny=PROCEDURE,-
+gdImageCompare=PROCEDURE,-
+gdImageCreateFromTiff=PROCEDURE,-
+gdImageCreateFromTiffCtx=PROCEDURE,-
+gdImageCreateFromTiffPtr=PROCEDURE,-
+gdImageCreateFromTga=PROCEDURE,-
+gdImageCreateFromTgaCtx=PROCEDURE,-
+gdImageCreateFromTgaPtr=PROCEDURE,-
+gdImageTiff=PROCEDURE,-
+gdImageTiffPtr=PROCEDURE,-
+gdImageTiffCtx=PROCEDURE,-
+gdImageCrop=PROCEDURE,-
+gdImageAutoCrop=PROCEDURE,-
+gdImageThresholdCrop=PROCEDURE,-
+gdFontGiant=DATA,-
+GDFONTLARGE=DATA,-
+GDFONTMEDIUMBOLD=DATA,-
+GDFONTSMALL=DATA,-
+GDFONTTINY=DATA-
+)
+$ENDIF
+$!
+$IF (SHARED.EQ.32)
+$ THEN
+$ COPY SYS$INPUT [.SRC]LIBGD$DEF.OPT
+UNIVERSAL=gdAlphaBlend
+UNIVERSAL=gdImageCreate
+UNIVERSAL=gdImageCreateTrueColor
+UNIVERSAL=gdImageCreateFromPng
+UNIVERSAL=gdImageCreateFromPngCtx
+UNIVERSAL=gdImageCreateFromPngPtr
+UNIVERSAL=gdImageCreateFromGif
+UNIVERSAL=gdImageCreateFromGifCtx
+UNIVERSAL=gdImageCreateFromGifPtr
+UNIVERSAL=gdImageCreateFromWBMP
+UNIVERSAL=gdImageCreateFromWBMPCtx
+UNIVERSAL=gdImageCreateFromWBMPPtr
+UNIVERSAL=gdImageCreateFromJpeg
+UNIVERSAL=gdImageStringFTCircle
+UNIVERSAL=gdImageCreateFromJpegCtx
+UNIVERSAL=gdImageCreateFromJpegPtr
+UNIVERSAL=gdImageCreateFromPngSource
+UNIVERSAL=gdImageCreateFromGd
+UNIVERSAL=gdImageCreateFromGdCtx
+UNIVERSAL=gdImageCreateFromGdPtr
+UNIVERSAL=gdImageCreateFromGd2
+UNIVERSAL=gdImageCreateFromGd2Ctx
+UNIVERSAL=gdImageCreateFromGd2Ptr
+UNIVERSAL=gdImageCreateFromGd2Part
+UNIVERSAL=gdImageCreateFromGd2PartCtx
+UNIVERSAL=gdImageCreateFromGd2PartPtr
+UNIVERSAL=gdImageCreateFromXbm
+UNIVERSAL=gdImageCreateFromXpm
+UNIVERSAL=gdImageDestroy
+UNIVERSAL=gdImageSetPixel
+UNIVERSAL=gdImageGetPixel
+UNIVERSAL=gdImageGetTrueColorPixel
+UNIVERSAL=gdImageAABlend
+UNIVERSAL=gdImageLine
+UNIVERSAL=gdImageDashedLine
+UNIVERSAL=gdImageRectangle
+UNIVERSAL=gdImageFilledRectangle
+UNIVERSAL=gdImageSetClip
+UNIVERSAL=gdImageGetClip
+UNIVERSAL=gdImageBoundsSafe
+UNIVERSAL=gdImageChar
+UNIVERSAL=gdImageCharUp
+UNIVERSAL=gdImageString
+UNIVERSAL=gdImageStringUp
+UNIVERSAL=gdImageString16
+UNIVERSAL=gdImageStringUp16
+UNIVERSAL=gdFontCacheSetup
+UNIVERSAL=gdFontCacheShutdown
+UNIVERSAL=gdFreeFontCache
+UNIVERSAL=gdImageStringTTF
+UNIVERSAL=gdImageStringFT
+UNIVERSAL=gdFTUseFontConfig
+UNIVERSAL=gdImageStringFTEx
+UNIVERSAL=gdImagePolygon
+UNIVERSAL=gdImageOpenPolygon
+UNIVERSAL=gdImageFilledPolygon
+UNIVERSAL=gdImageColorAllocate
+UNIVERSAL=gdImageColorAllocateAlpha
+UNIVERSAL=gdImageColorClosest
+UNIVERSAL=gdImageColorClosestAlpha
+UNIVERSAL=gdImageColorClosestHWB
+UNIVERSAL=gdImageColorExact
+UNIVERSAL=gdImageColorExactAlpha
+UNIVERSAL=gdImageColorResolve
+UNIVERSAL=gdImageColorResolveAlpha
+UNIVERSAL=gdImageColorDeallocate
+UNIVERSAL=gdImageCreatePaletteFromTrueCol
+UNIVERSAL=gdImageTrueColorToPalette
+UNIVERSAL=gdImageColorTransparent
+UNIVERSAL=gdImagePaletteCopy
+UNIVERSAL=gdImageGif
+UNIVERSAL=gdImagePng
+UNIVERSAL=gdImagePngCtx
+UNIVERSAL=gdImageGifCtx
+UNIVERSAL=gdImagePngEx
+UNIVERSAL=gdImagePngCtxEx
+UNIVERSAL=gdImageWBMP
+UNIVERSAL=gdImageWBMPCtx
+UNIVERSAL=gdFree
+UNIVERSAL=gdImageWBMPPtr
+UNIVERSAL=gdImageJpeg
+UNIVERSAL=gdImageJpegCtx
+UNIVERSAL=gdImageJpegPtr
+UNIVERSAL=gdImageGifAnimBegin
+UNIVERSAL=gdImageGifAnimAdd
+UNIVERSAL=gdImageGifAnimEnd
+UNIVERSAL=gdImageGifAnimBeginCtx
+UNIVERSAL=gdImageGifAnimAddCtx
+UNIVERSAL=gdImageGifAnimEndCtx
+UNIVERSAL=gdImageGifAnimBeginPtr
+UNIVERSAL=gdImageGifAnimAddPtr
+UNIVERSAL=gdImageGifAnimEndPtr
+UNIVERSAL=gdImagePngToSink
+UNIVERSAL=gdImageGd
+UNIVERSAL=gdImageGd2
+UNIVERSAL=gdImageGifPtr
+UNIVERSAL=gdImagePngPtr
+UNIVERSAL=gdImagePngPtrEx
+UNIVERSAL=gdImageGdPtr
+UNIVERSAL=gdImageGd2Ptr
+UNIVERSAL=gdImageFilledArc
+UNIVERSAL=gdImageArc
+UNIVERSAL=gdImageFilledEllipse
+UNIVERSAL=gdImageFillToBorder
+UNIVERSAL=gdImageFill
+UNIVERSAL=gdImageCopy
+UNIVERSAL=gdImageCopyMerge
+UNIVERSAL=gdImageCopyMergeGray
+UNIVERSAL=gdImageCopyResized
+UNIVERSAL=gdImageCopyResampled
+UNIVERSAL=gdImageCopyRotated
+UNIVERSAL=gdImageSetBrush
+UNIVERSAL=gdImageSetTile
+UNIVERSAL=gdImageSetAntiAliased
+UNIVERSAL=gdImageSetAntiAliasedDontBlend
+UNIVERSAL=gdImageSetStyle
+UNIVERSAL=gdImageSetThickness
+UNIVERSAL=gdImageInterlace
+UNIVERSAL=gdImageAlphaBlending
+UNIVERSAL=gdImageSaveAlpha
+UNIVERSAL=gdNewFileCtx
+UNIVERSAL=gdNewDynamicCtx
+UNIVERSAL=gdNewDynamicCtxEx
+UNIVERSAL=gdNewSSCtx
+UNIVERSAL=gdDPExtractData
+UNIVERSAL=gdFontGetGiant
+UNIVERSAL=gdFontGetLarge
+UNIVERSAL=gdFontGetMediumBold
+UNIVERSAL=gdFontGetSmall
+UNIVERSAL=gdFontGetTiny
+UNIVERSAL=gdImageCompare
+UNIVERSAL=gdFontGiant
+UNIVERSAL=gdImageCreateFromTiff
+UNIVERSAL=gdImageCreateFromTiffCtx
+UNIVERSAL=gdImageCreateFromTiffPtr
+UNIVERSAL=gdImageCreateFromTga
+UNIVERSAL=gdImageCreateFromTgaCtx
+UNIVERSAL=gdImageCreateFromTgaPtr
+UNIVERSAL=gdImageTiff
+UNIVERSAL=gdImageTiffPtr
+UNIVERSAL=gdImageTiffCtx
+UNIVERSAL=gdImageCrop
+UNIVERSAL=gdImageAutoCrop
+UNIVERSAL=gdImageThresholdCrop
+UNIVERSAL=GDFONTLARGE
+UNIVERSAL=GDFONTMEDIUMBOLD
+UNIVERSAL=GDFONTSMALL
+UNIVERSAL=GDFONTTINY
+
+$ENDIF
+$!
+$!
+$DEF SYS$OUTPUT _NL0:
+$!
+$!Making OPT file for GD$SHR.EXE, i.e without reference to himself
+$COPY SYS$INPUT [.SRC]OPT.OPT
+[]GD/LIB
+$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
+$ THEN
+$ APP SYS$INPUT [.SRC]OPT.OPT
+PNG:LIBPNG/LIB
+$ENDIF
+$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
+$ THEN
+$ APP PNG:LIBPNG$SHR.OPT [.SRC]OPT.OPT
+$ENDIF
+$!
+$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.1) .AND. (HAVE_TIFF.NE.1))
+$ THEN
+$ APP SYS$INPUT [.SRC]OPT.OPT
+JPEG:LIBJPEG/LIB
+$ENDIF
+$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0) .AND. (HAVE_TIFF.NE.1))
+$ THEN
+$ APP JPEG:LIBJPEG$SHR.OPT [.SRC]OPT.OPT
+$ENDIF
+$!
+$IF (HAVE_TIFF.EQ.1)
+$ THEN
+$ APP TIFF:LIBTIFF.OPT [.SRC]OPT.OPT
+$ENDIF
+$!
+$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
+$ THEN
+$ APP SYS$INPUT [.SRC]OPT.OPT
+ FREETYPE2:FREETYPE/LIB
+ ZLIB:LIBZ/LIB
+$ENDIF
+$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
+$ THEN
+$ APP FREETYPE2:FREETYPE.OPT [.SRC]OPT.OPT
+$ENDIF
+$!
+$IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
+$ THEN
+$ IF (ZLIB_STATIC.EQ.0)
+$ THEN
+$ APP SYS$INPUT [.SRC]OPT.OPT
+ SYS$SHARE:LIBZSHR/SHARE
+$ ELSE
+$ APP SYS$INPUT [.SRC]OPT.OPT
+ ZLIB:LIBZ/LIB
+$ ENDIF
+$ ELSE
+$ APP SYS$INPUT [.SRC]OPT.OPT
+ ZLIB:LIBZ/LIB
+$ENDIF
+$!
+$!
+$PURGE [.SRC]OPT.OPT
+$!
+$!
+$!Making working LIBGD.OPT file
+$!
+$IF (SHARED.GT.0)
+$ THEN
+ $COPY SYS$INPUT [.SRC]LIBGD.OPT
+ SYS$SHARE:GD$SHR/SHARE
+$ ELSE
+ $COPY SYS$INPUT [.SRC]LIBGD.OPT
+ LIBGD:GD/LIB
+$ENDIF
+$!
+$!Append OPT files to LIBGD.OPT
+$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
+$ THEN
+$ APP SYS$INPUT [.SRC]LIBGD.OPT
+PNG:LIBPNG/LIB
+$ENDIF
+$IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
+$ THEN
+$ APP PNG:LIBPNG$SHR.OPT [.SRC]LIBGD.OPT
+$ENDIF
+$!
+$IF ((HAVE_JPEG.EQ.1) .AND. (HAVE_TIFF.NE.1) .AND. (JPEG_STATIC.EQ.1))
+$ THEN
+$ APP JPEG:LIBJPEG.OPT [.SRC]LIBGD.OPT
+$ENDIF
+$IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0) .AND. (HAVE_TIFF.NE.1))
+$ THEN
+$ APP JPEG:LIBJPEG$SHR.OPT [.SRC]LIBGD.OPT
+$ENDIF
+$!
+$IF (HAVE_TIFF.EQ.1)
+$ THEN
+$ APP TIFF:LIBTIFF.OPT [.SRC]LIBGD.OPT
+$ENDIF
+$!
+$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
+$ THEN
+$ APP SYS$INPUT [.SRC]LIBGD.OPT
+ FREETYPE2:FREETYPE/LIB
+ ZLIB:LIBZ/LIB
+$ENDIF
+$IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
+$ THEN
+$ APP FREETYPE2:FREETYPE.OPT [.SRC]LIBGD.OPT
+$ENDIF
+$!
+$IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
+$ THEN
+$ IF (ZLIB_STATIC.EQ.0)
+$ THEN
+$ APP SYS$INPUT [.SRC]LIBGD.OPT
+ SYS$SHARE:LIBZSHR/SHARE
+$ ELSE
+$ APP SYS$INPUT [.SRC]LIBGD.OPT
+ ZLIB:LIBZ/LIB
+$ ENDIF
+$ENDIF
+$!
+$PURGE LIBGD.OPT
+$!
+$DEAS SYS$OUTPUT
+$!
+$OPEN/WRITE OUT BUILD.COM
+$ WRITE OUT "$SET DEF [.SRC]"
+$ WRITE OUT "$",MAKE
+$ WRITE OUT "$ CURRENT = F$ENVIRONMENT (""DEFAULT"") "
+$ WRITE OUT "$TMP=CURRENT"
+$ WRITE OUT "$OPEN/WRITE OUTT [-]LIBGD$STARTUP.COM"
+$ WRITE OUT "$WRITE OUTT ""DEFINE LIBGD """"", "'","'","TMP'"""""""
+$ WRITE OUT "$WRITE OUTT ""GD2COPYPAL==""""$","'","'","TMP'"",""GD2COPYPAL"""" "
+$ WRITE OUT "$WRITE OUTT ""GD2TIME==""""$","'","'","TMP'"",""GD2TIME"""" "
+$ WRITE OUT "$WRITE OUTT ""GD2TOGIF==""""$","'","'","TMP'"",""GD2TOGIF"""" "
+$ WRITE OUT "$WRITE OUTT ""GD2TOPNG==""""$","'","'","TMP'"",""GD2TOPNG"""" "
+$ WRITE OUT "$WRITE OUTT ""GDCMPGIF==""""$","'","'","TMP'"",""GDCMPGIF"""" "
+$ WRITE OUT "$WRITE OUTT ""GDTOPNG==""""$","'","'","TMP'"",""GDTOPNG"""" "
+$ WRITE OUT "$WRITE OUTT ""GIFTOGD2==""""$","'","'","TMP'"",""GIFTOGD2"""" "
+$ WRITE OUT "$WRITE OUTT ""PNGTOGD==""""$","'","'","TMP'"",""PNGTOGD"""" "
+$ WRITE OUT "$WRITE OUTT ""PNGTOGD2==""""$","'","'","TMP'"",""PNGTOGD2"""" "
+$ WRITE OUT "$WRITE OUTT ""WEBPNG==""""$","'","'","TMP'"",""WEBPNG"""" "
+$ WRITE OUT "$CLOSE OUTT"
+$!
+$ WRITE OUT "$WRITE SYS$OUTPUT "" "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""LIBGD$STARTUP.COM has been created. "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""This file setups all logicals needed. It should be execute before using "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""Nice place to call it - LOGIN.COM "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT """" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""Using:"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""CC/INCL=LIBGD PROG"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""LINK PROG, LIBGD:LIBGD/OPT"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
+$ WRITE OUT "$SET DEF [-]"
+$CLOSE OUT
+$!
+$!
+$!Writing config.h
+$COPY SYS$INPUT [.SRC]CONFIG.H
+/* Generated by configure.com for OpenVMS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+
+#define PACKAGE_NAME "GD"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GD 2.1.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "GD"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.1.0"
+
+/* Define to necessary symbol if this constant uses a non-standard name on
+ * your system. */
+/* #undef PTHREAD_CREATE_JOINABLE */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "2.1.0"
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+
+/* Define to 1 if you have the <libpng/png.h> header file. */
+/* #undef HAVE_LIBPNG_PNG_H */
+
+
+
+/* Define to 1 if you have the <limits.h> header file. */
+//#define HAVE_LIMITS_H 1
+
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+
+/* Define if you have POSIX threads libraries and header files. */
+#define HAVE_PTHREAD 1
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+//#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+//#define ICONV_CONST
+
+/* Name of package */
+#define PACKAGE "gd"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugs.libgd.org"
+
+/* Define to the full name of this package. */
+
+
+
+$IF HAVE_ICONV.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ /* Define if you have the iconv() function. */
+ #define HAVE_ICONV 1
+ /* Define to 1 if you have the <iconv.h> header file. */
+ #define HAVE_ICONV_H 1
+ /* Define if <iconv.h> defines iconv_t. */
+ #define HAVE_ICONV_T_DEF 1
+$ENDIF
+$IF HAVE_TIFF.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBTIFF 1
+$ENDIF
+$IF HAVE_LIBPNG.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBPNG 1
+$ENDIF
+$IF HAVE_FREETYPE.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBFREETYPE 1
+ #define HAVE_FT2BUILD_H 1
+$ENDIF
+$IF HAVE_JPEG.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBJPEG 1
+$ENDIF
+$IF HAVE_ZLIB.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBZ 1
+$ENDIF
+$IF HAVE_TIFF.EQ.1
+$ THEN
+$ APP SYS$INPUT [.SRC]CONFIG.H
+ #define HAVE_LIBTIFF 1
+$ENDIF
+$!
+$!
+$!
+$!
+$COP SYS$INPUT [.SRC]DESCRIP.MMS
+# Generated by CONFIGURE.COM
+# Alexey Chupahin elvis_75@mail.ru
+# OpenVMS 7.3-1,8.2 DEC 2000 mod.300
+# OpenVMS 8.3 HP rx1620
+
+
+.FIRST
+ DEF LIBGD []
+
+CC=cc
+CFLAGS=/OPT=(INLINE=SPEED) /INCL=([],JPEG,PNG,FREETYPE2,ZLIB,TIFF) /DEF=(HAVE_CONFIG_H)/WARN=(DIS=MACROREDEF)
+LIBS=[]LIBGD/OPT
+
+
+ALL : \
+gd.olb,\
+$IF (SHARED.GT.0)
+$ THEN
+$ APP SYS$INPUT [.SRC]DESCRIP.MMS
+gd$shr.exe,\
+$ENDIF
+$!
+$APP SYS$INPUT [.SRC]DESCRIP.MMS
+annotate.exe,\
+circletexttest.exe,\
+fontconfigtest.exe,\
+circletexttest.exe,\
+fontconfigtest.exe,\
+fontsizetest.exe,\
+fontwheeltest.exe,\
+gd2copypal.exe,\
+gd2time.exe,\
+gd2togif.exe,\
+gd2topng.exe,\
+gdcmpgif.exe,\
+gddemo.exe,\
+gdtest.exe,\
+gdtestft.exe,\
+gdtopng.exe,\
+gifanimtest.exe,\
+giftogd2.exe,\
+pngtogd.exe,\
+pngtogd2.exe,\
+testac.exe,\
+testtr.exe,\
+webpng.exe,\
+gdparttopng.exe
+ $!
+
+annotate.exe : annotate.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+circletexttest.exe : circletexttest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+fontconfigtest.exe : fontconfigtest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+fontsizetest.exe : fontsizetest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+fontwheeltest.exe : fontwheeltest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+gd2copypal.exe : gd2copypal.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+gd2time.exe : gd2time.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+gd2togif.exe : gd2togif.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+gd2topng.exe : gd2topng.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gdcmpgif.exe : gdcmpgif.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gddemo.exe : gddemo.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gdtest.exe : gdtest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gdtestft.exe : gdtestft.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gdtopng.exe : gdtopng.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gifanimtest.exe : gifanimtest.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+giftogd2.exe : giftogd2.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+giftogd2.obj : giftogd2.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+pngtogd.exe : pngtogd.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+pngtogd2.exe : pngtogd2.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+testac.exe : testac.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+testtr.exe : testtr.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+webpng.exe : webpng.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+gdparttopng.exe : gdparttopng.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=TMP.OBJ
+ LINK/EXE=$(MMS$TARGET) TMP.OBJ, $(LIBS)
+ DEL TMP.OBJ;*
+
+
+OBJ=\
+gd.obj,\
+gdcache.obj,\
+gdfontg.obj,\
+gdfontl.obj,\
+gdfontmb.obj,\
+gdfonts.obj,\
+gdfontt.obj,\
+gdft.obj,\
+gdfx.obj,\
+gdhelpers.obj,\
+gdkanji.obj,\
+gdtables.obj,\
+gdxpm.obj,\
+gd_bmp.obj,\
+gd_gd.obj,\
+gd_gd2.obj,\
+gd_gif_in.obj,\
+gd_gif_out.obj,\
+gd_io.obj,\
+gd_io_dp.obj,\
+gd_io_file.obj,\
+gd_io_ss.obj,\
+gd_jpeg.obj,\
+gd_png.obj,\
+gd_security.obj,\
+gd_ss.obj,\
+gd_crop.obj,\
+gd_tga.obj,\
+gd_tiff.obj,\
+gd_transform.obj,\
+gd_topal.obj,\
+gd_wbmp.obj,\
+wbmp.obj
+
+
+gd_transform.obj : gd_transform.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_tiff.obj : gd_tiff.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_tga.obj : gd_tga.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_bmp.obj : gd_bmp.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_crop.obj : gd_crop.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd.obj : gd.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdcache.obj : gdcache.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfontg.obj : gdfontg.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfontl.obj : gdfontl.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfontmb.obj : gdfontmb.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfonts.obj : gdfonts.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfontt.obj : gdfontt.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdft.obj : gdft.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdfx.obj : gdfx.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdhelpers.obj : gdhelpers.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdkanji.obj : gdkanji.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdtables.obj : gdtables.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gdxpm.obj : gdxpm.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_gd.obj : gd_gd.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_gd2.obj : gd_gd2.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_gif_in.obj : gd_gif_in.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_gif_out.obj : gd_gif_out.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_io.obj : gd_io.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_io_dp.obj : gd_io_dp.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_io_file.obj : gd_io_file.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_io_ss.obj : gd_io_ss.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_jpeg.obj : gd_jpeg.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_png.obj : gd_png.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_security.obj : gd_security.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_ss.obj : gd_ss.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_topal.obj : gd_topal.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gd_wbmp.obj : gd_wbmp.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+wbmp.obj : wbmp.c
+ $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+
+GD.OLB : $(OBJ)
+ LIB/CREA GD.OLB $(OBJ)
+
+GD$SHR.EXE : $(OBJ)
+ LINK/SHARE=GD$SHR GD.OBJ,LIBGD$DEF/OPT,OPT/OPT
+ COPY GD$SHR.EXE SYS$SHARE
+
+CLEAN :
+ DEL [...]*.OBJ;*
+ DEL [...]*.OLB;*
+ DEL [...]*.EXE;*
+$!DEL TMP.MMS;*
+$!
+$IF (F$SEARCH("[.SRC]GD.H;2").EQS."")
+$ THEN
+$ WRITE SYS$OUTPUT "Patching GD.H"
+$ DEF SYS$OUTPUT "_NLA0:"
+$ COPY SYS$INPUT [.SRC]GD.H;2
+#define gdImageCreatePaletteFromTrueColor gdImageCreatePaletteFromTrueCol
+
+$ APP [.SRC]GD.H;1 [.SRC]GD.H;2
+$ DEAS SYS$INPUT
+$ENDIF
+$!
+$!
+$!
+$!
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT "Now you can type @BUILD "
+$!
+$EXIT:
+$DEFINE SYS$OUTPUT _NLA0:
+$DEL TEST.OBJ;*
+$DEL TEST.C;*
+$DEL TEST.EXE;*
+$DEAS SYS$OUTPUT
diff --git a/Build/source/libs/gd/libgd-src/VMS/README.VMS b/Build/source/libs/gd/libgd-src/VMS/README.VMS
index 18346685876..cdeee561654 100644
--- a/Build/source/libs/gd/libgd-src/VMS/README.VMS
+++ b/Build/source/libs/gd/libgd-src/VMS/README.VMS
@@ -1,71 +1,71 @@
-Dear OpenVMS user,
-
-Installation process is identical to one in *nix* world and consist to
-four simple steps:
-1. Installing required libraries
-2. Configuration
-3. Compiling
-4. Installation.
-
-
-1. Please install required libraries first:
-
-1. ZLIB 1.2 or newer
-2. PNG 1.2.12 or newer
-3. FreeType 2
-4. JPEG 6B
-
-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
-free analogue MMK. And C compiler with runtime, of course. ;)
-
-
-2. Configuration is doing automatically by a configuration script:
-
-$@[.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"
-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
-from OpenVMS libSDL porting project site:
-http://fafner.dyndns.org/~alexey/libsdl/required.html
-
-When success, it creates a building script named BUILD.COM
-
-3. Compilation:
-
-$@BUILD
-
-It should be error-free.
-
-When success, it creates a setup script named LIBGD$STARTUP.COM
-
-4. Setup OpenVMS environment before using libGD:
-
-$@LIBGD$STARTUP
-
-LIBGD and its utilites are ready to using.
-
-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.
-Compiling with library should be:
-
-$CC/INCL=LIBGD PROG
-$LINK PROG, LIBGD:LIBGD/OPT
-
-
-
-yours,
-Alexey Chupahin
-Rostov-on-Don, Russia
-elvis_75@mail.ru alex@rostov.rs-ultra.ru
+Dear OpenVMS user,
+
+Installation process is identical to one in *nix* world and consist to
+four simple steps:
+1. Installing required libraries
+2. Configuration
+3. Compiling
+4. Installation.
+
+
+1. Please install required libraries first:
+
+1. ZLIB 1.2 or newer
+2. PNG 1.2.12 or newer
+3. FreeType 2
+4. JPEG 6B
+
+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
+free analogue MMK. And C compiler with runtime, of course. ;)
+
+
+2. Configuration is doing automatically by a configuration script:
+
+$@[.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"
+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
+from OpenVMS libSDL porting project site:
+http://fafner.dyndns.org/~alexey/libsdl/required.html
+
+When success, it creates a building script named BUILD.COM
+
+3. Compilation:
+
+$@BUILD
+
+It should be error-free.
+
+When success, it creates a setup script named LIBGD$STARTUP.COM
+
+4. Setup OpenVMS environment before using libGD:
+
+$@LIBGD$STARTUP
+
+LIBGD and its utilites are ready to using.
+
+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.
+Compiling with library should be:
+
+$CC/INCL=LIBGD PROG
+$LINK PROG, LIBGD:LIBGD/OPT
+
+
+
+yours,
+Alexey Chupahin
+Rostov-on-Don, Russia
+elvis_75@mail.ru alex@rostov.rs-ultra.ru
diff --git a/Build/source/libs/gd/libgd-src/bootstrap.sh b/Build/source/libs/gd/libgd-src/bootstrap.sh
index dac639eeaa4..ffd978c82ef 100755
--- a/Build/source/libs/gd/libgd-src/bootstrap.sh
+++ b/Build/source/libs/gd/libgd-src/bootstrap.sh
@@ -2,52 +2,26 @@
# $Id$
# Small shell script to build gd from source
+v() { echo "$@"; "$@"; }
+
# Generate the manual (unless naturaldocs isn't installed). Source
# dists should include the docs so that end users don't need to
# install naturaldocs. At the same time, we tolerate it being missing
# so that random hackers don't need it just to build the code.
-if which naturaldocs > /dev/null; then
- echo "Generation user docs:"
- (cd docs/naturaldocs; bash run_docs.sh)
-else
- echo "Can't find naturaldocs; not generating user manual."
-fi
-
+v docs/naturaldocs/run_docs.sh --nonfatal
-# allow importing from the environment, e.g.
-# "AUTOCONF=autoconf259 ... ./bootstrap.sh"
-if echo $OSTYPE | grep -q '^darwin' ; then
- echo Having trouble on OS X? Try brew install autoconf libtool automake gettext apple-gcc42 pkg-config cmake
- LIBTOOLIZE=${LIBTOOLIZE:-glibtoolize}
+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"
fi
-ACLOCAL=${ACLOCAL:-aclocal}
-AUTOCONF=${AUTOCONF:-autoconf}
-AUTOHEADER=${AUTOHEADER:-autoheader}
-AUTOMAKE=${AUTOMAKE:-automake}
-LIBTOOLIZE=${LIBTOOLIZE:-libtoolize}
-
-# might handle this differently
-AUTOMAKE_FLAGS="--add-missing --copy"
-
-#
-CLEANFILES="Makefile.in aclocal.m4 autom4te.cache configure libtool config/Makefile.in \
-tests/Makefile.in src/Makefile.in"
-
-#
-rm -rf ${CLEANFILES}
-#
-if ${ACLOCAL} -I m4 \
- && ${LIBTOOLIZE} --automake --copy --force \
- && ${ACLOCAL} -I m4 \
- && ${AUTOHEADER} \
- && ${AUTOMAKE} ${AUTOMAKE_FLAGS} \
- && ${AUTOCONF} --force && [ -f configure ]
-then
- echo Now run configure and make
-else
- echo Failed
- exit 1
+if ! v autoreconf -f -i ; then
+ exit 1
fi
-exit 0
+(
+echo "/* Generated from config.hin via autoheader for cmake; see bootstrap.sh. */"
+sed \
+ -e '1d' \
+ -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 cf4fff83ba5..d3775ea3013 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,42 +1,17 @@
-message(STATUS "Checking whether system has ANSI C header files")
-include(CheckPrototypeExists)
-
-include(CheckPrototypeExists)
-check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist)
-if(StandardHeadersExist)
- check_prototype_exists(memchr string.h memchrExists)
- if(memchrExists)
-
- check_prototype_exists(free stdlib.h freeExists)
- if(freeExists)
- message(STATUS "ANSI C header files - found")
- set(STDC_HEADERS 1 CACHE INTERNAL "System has ANSI C header files")
- set(HAVE_STRINGS_H 1)
- set(HAVE_STRING_H 1)
- set(HAVE_FLOAT_H 1)
- set(HAVE_STDLIB_H 1)
- set(HAVE_STDDEF_H 1)
- set(HAVE_STDINT_H 1)
- set(HAVE_INTTYPES_H 1)
- set(HAVE_DLFCN_H 1)
- endif(freeExists)
- endif(memchrExists)
-endif(StandardHeadersExist)
-
-if(NOT STDC_HEADERS)
- message(STATUS "ANSI C header files - not found")
- set(STDC_HEADERS 0 CACHE INTERNAL "System has ANSI C header files")
-endif(NOT STDC_HEADERS)
-
+# 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)
-include(CheckDIRSymbolExists)
-check_dirsymbol_exists("sys/stat.h;sys/types.h;dirent.h" HAVE_DIRENT_H)
-if (HAVE_DIRENT_H)
- set(HAVE_SYS_STAT_H 1)
- set(HAVE_SYS_TYPES_H 1)
-endif (HAVE_DIRENT_H)
+check_include_files(sys/stat.h HAVE_SYS_STAT_H)
+check_include_files(sys/types.h HAVE_SYS_TYPES_H)
-check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist)
set(HAVE_LIBM 1)
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 08713f51704..bf17fcfc92e 100644
--- a/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake
+++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake
@@ -23,7 +23,7 @@ FIND_LIBRARY(LIQ_LIBRARY
IF (LIQ_LIBRARY AND LIQ_INCLUDE_DIR)
SET(LIQ_FOUND "YES")
SET(LIQ_LIBRARIES ${LIQ_LIBRARY})
- SET(HAVE_LIBIMAGEQUANT_H 1)
+ SET(HAVE_LIBIMAGEQUANT 1)
ENDIF (LIQ_LIBRARY AND LIQ_INCLUDE_DIR)
IF (LIQ_FOUND)
@@ -51,7 +51,7 @@ ELSE (LIQ_FOUND)
SET(LIQ_BUILD "YES")
SET(LIQ_LIBRARIES "${PROJECT_BINARY_DIR}/libimagequant/libimagequant.a")
SET(LIQ_INCLUDE_DIR "${PROJECT_BINARY_DIR}/libimagequant/")
- SET(HAVE_LIBIMAGEQUANT_H 1)
+ SET(HAVE_LIBIMAGEQUANT 1)
ENDIF(CMAKE_VERSION VERSION_GREATER "2.8.1")
ENDIF(NOT WIN32 OR CYGWIN OR MINGW)
ENDIF (LIQ_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindVPX.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake
index 3a8c45ed196..f7b89c3875d 100644
--- a/Build/source/libs/gd/libgd-src/cmake/modules/FindVPX.cmake
+++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake
@@ -1,13 +1,13 @@
-# - Find the native VPX includes and library
+# - Find the native WEBP includes and library
#
# This module defines
-# VPX_INCLUDE_DIR, where to find png.h, etc.
-# VPX_LIBRARIES, the libraries to link against to use VPX.
-# VPX_DEFINITIONS - You should ADD_DEFINITONS(${VPX_DEFINITIONS}) before compiling code that includes png library files.
-# VPX_FOUND, If false, do not try to use VPX.
+# WEBP_INCLUDE_DIR, where to find png.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
-# VPX_LIBRARY, where to find the VPX library.
+# WEBP_LIBRARY, where to find the WEBP library.
#
# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
#
@@ -38,38 +38,35 @@
# 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(FindZLIB)
+include(FindZLIB)
-SET(VPX_FOUND "NO")
-SET(VPX_LIBRARY "")
-
-FIND_PATH(VPX_INCLUDE_DIR vp8cx.h
-/usr/local/include/vpx
-/usr/include/vpx
+find_path(WEBP_INCLUDE_DIR decode.h
+/usr/local/include/webp
+/usr/include/webp
)
-SET(VPX_NAMES ${VPX_NAMES} "vpxmt" "libvpx")
-FIND_LIBRARY(VPX_LIBRARY
- NAMES ${VPX_NAMES}
- PATHS "${PROJECT_SOURCE_DIR}/../deps/lib" /usr/lib64 /usr/lib /usr/local/lib
-)
+set(WEBP_NAMES ${WEBP_NAMES} webp)
+find_library(WEBP_LIBRARY
+ NAMES ${WEBP_NAMES}
+ PATHS "${PROJECT_SOURCE_DIR}/../deps/lib" /usr/lib64 /usr/lib /usr/local/lib
+ )
-IF (VPX_LIBRARY AND VPX_INCLUDE_DIR)
- SET(VPX_INCLUDE_DIR ${VPX_INCLUDE_DIR})
- SET(VPX_LIBRARIES ${VPX_LIBRARY})
- SET(VPX_FOUND "YES")
+if (WEBP_LIBRARY AND WEBP_INCLUDE_DIR)
+ set(WEBP_INCLUDE_DIR ${WEBP_INCLUDE_DIR})
+ set(WEBP_LIBRARIES ${WEBP_LIBRARY})
+ set(WEBP_FOUND "YES")
-ENDIF (VPX_LIBRARY AND VPX_INCLUDE_DIR)
+endif (WEBP_LIBRARY AND WEBP_INCLUDE_DIR)
-IF (VPX_FOUND)
- IF (NOT VPX_FIND_QUIETLY)
- MESSAGE(STATUS "Found VPX: ${VPX_LIBRARY}")
- ENDIF (NOT VPX_FIND_QUIETLY)
-ELSE (VPX_FOUND)
- IF (VPX_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find VPX library")
- ENDIF (VPX_FIND_REQUIRED)
-ENDIF (VPX_FOUND)
+if (WEBP_FOUND)
+ if (NOT WEBP_FIND_QUIETLY)
+ message(STATUS "Found WEBP: ${WEBP_LIBRARY}")
+ endif (NOT WEBP_FIND_QUIETLY)
+else (WEBP_FOUND)
+ if (WEBP_FIND_REQUIRED)
+ message(FATAL_ERROR "Could not find WEBP library")
+ endif (WEBP_FIND_REQUIRED)
+endif (WEBP_FOUND)
-MARK_AS_ADVANCED(VPX_INCLUDE_DIR VPX_LIBRARY )
-SET(VPX_LIBRARIES ${VPX_LIBRARY})
+mark_as_advanced(WEBP_INCLUDE_DIR WEBP_LIBRARY )
+set(WEBP_LIBRARIES ${WEBP_LIBRARY})
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 1e846dd855d..bef21f94f36 100644
--- a/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake
+++ b/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake
@@ -1 +1,13 @@
option(BUILD_TEST "Compile examples in the build tree and enable ctest" OFF)
+
+# This expects TESTS_FILES to already be defined to the lists of tests.
+# Extra libs can be passed in as the 1st argument.
+MACRO(ADD_GD_TESTS)
+ GET_FILENAME_COMPONENT(TEST_PREFIX ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
+ 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})
+ 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 9eac9290f2e..5c2db7069cf 100644
--- a/Build/source/libs/gd/libgd-src/config/Makefile.am
+++ b/Build/source/libs/gd/libgd-src/config/Makefile.am
@@ -1,7 +1,7 @@
-## Process this file with automake to produce Makefile.in -*-Makefile-*-
-EXTRA_DIST = gdlib-config.in gdlib.pc.in
-
-bin_SCRIPTS = gdlib-config
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gdlib.pc
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+EXTRA_DIST = gdlib-config.in gdlib.pc.in getver.pl
+
+bin_SCRIPTS = gdlib-config
+
+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
index 036ef726e9c..6e4e4944747 100644
--- a/Build/source/libs/gd/libgd-src/config/gdlib-config.in
+++ b/Build/source/libs/gd/libgd-src/config/gdlib-config.in
@@ -1,96 +1,99 @@
-#!/bin/sh
-#
-# Return information about the local GD library installation
-#
-# Modeled after pdflib-config
-
-# installation directories
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-bindir=@bindir@
-
-usage()
-{
- cat <<EOF
-Print information on GD library's version, configuration, and use.
-Usage: gdlib-config [options]
-Options:
- --libdir # directory where GD library is installed
- --includedir # directory where GD library headers are installed
- --version # complete GD library version string
- --majorversion # GD library major version number
- --minorversion # GD library minor version number
- --revision # GD library revision version number
- --ldflags # options required for linking against GD library
- --libs # libs required for linking against GD library
- --cflags # options required for compiling GD library apps
- --includes # same as --cflags
- --features # lists features compiled into gd, separated by spaces.
- # Currently (as of @VERSION@) the optional features
- # are GD_PNG, GD_JPEG, GD_XPM, GD_FREETYPE, and
- # GD_FONTCONFIG. When these features are reported by
- # --features, it is safe to include calls to the
- # related functions in your code.
- --all # print a summary of all GD library configure options
-EOF
- exit $1
-}
-
-if test $# -eq 0; then
- usage 1 1>&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
+#!/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 <<EOF
+Print information on GD library's version, configuration, and use.
+Usage: gdlib-config [options]
+Options:
+ --libdir # directory where GD library is installed
+ --includedir # directory where GD library headers are installed
+ --version # complete GD library version string
+ --majorversion # GD library major version number
+ --minorversion # GD library minor version number
+ --revision # GD library revision version number
+ --ldflags # options required for linking against GD library
+ --libs # libs required for linking against GD library
+ --cflags # options required for compiling GD library apps
+ --includes # same as --cflags
+ --features # lists features compiled into gd, separated by spaces.
+ # Currently (as of @VERSION@) the optional features
+ # are GD_PNG, GD_JPEG, GD_XPM, GD_FREETYPE, and
+ # GD_FONTCONFIG. When these features are reported by
+ # --features, it is safe to include calls to the
+ # related functions in your code.
+ --all # print a summary of all GD library configure options
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&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.in b/Build/source/libs/gd/libgd-src/config/gdlib.pc.in
index c01336c1f44..b980a606902 100644
--- a/Build/source/libs/gd/libgd-src/config/gdlib.pc.in
+++ b/Build/source/libs/gd/libgd-src/config/gdlib.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: gd
-Description: GD graphics library
-Version: @VERSION@
-Cflags: -I${includedir}
-Libs.private: @LIBS@ @LIBICONV@
-Libs: -L${libdir} -lgd
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: gd
+Description: GD graphics library
+Version: @VERSION@
+Cflags: -I${includedir}
+Libs.private: @LIBS@ @LIBICONV@
+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
new file mode 100644
index 00000000000..38389522fb9
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/config/getver.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/env perl
+
+# Simple script to extract the version number parts from src/gd.h. If
+# called with the middle word of the version macro, it prints the
+# value of that macro. If called with no argument, it outputs a
+# human-readable version string. This must be run in the project
+# root. It is used by configure.ac and docs/naturaldocs/run_docs.sh.
+
+use strict;
+
+my $key = shift;
+my @version_parts = ();
+
+open FH, "<src/gd.h" # old-style filehandle for max. portability
+ or die "Unable to open 'version.h' for reading.\n";
+
+while(<FH>) {
+ next unless m{version605b5d1778};
+ next unless /^#define\s+GD_([A-Z0-9]+)_VERSION+\s+(\S+)/;
+ my ($lk, $lv) = ($1, $2);
+ if ($lk eq $key) {
+ chomp $lv;
+ $lv =~ s/"//g;
+
+ print $lv; # no newline
+ exit(0); # success!
+ }
+
+ push @version_parts, $lv if (!$key);
+}
+
+close(FH);
+
+if (scalar @version_parts == 4) {
+ my $result = join(".", @version_parts[0..2]);
+ $result .= $version_parts[3];
+ $result =~ s/"//g;
+ print $result;
+ exit(0);
+}
+
+exit(1); # failure
diff --git a/Build/source/libs/gd/libgd-src/config/test-driver b/Build/source/libs/gd/libgd-src/config/test-driver
new file mode 100644
index 00000000000..d30605660a0
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/config/test-driver
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# 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 2, 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 to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+ echo "$0: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--]
+ TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file= # Where to save the output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "test-driver $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) enable_hard_errors=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ *) break;;
+ esac
+ shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file" = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+ usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+ usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+ # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+ red='' # Red.
+ grn='' # Green.
+ lgn='' # Light green.
+ blu='' # Blue.
+ mgn='' # Magenta.
+ std='' # No color.
+else
+ red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+ estatus=1
+fi
+
+case $estatus:$expect_failure in
+ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+ 0:*) col=$grn res=PASS recheck=no gcopy=no;;
+ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
+ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
+ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
+ *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/Build/source/libs/gd/libgd-src/configure.ac b/Build/source/libs/gd/libgd-src/configure.ac
index 50acc00c6a0..9d3d1fe5b59 100644
--- a/Build/source/libs/gd/libgd-src/configure.ac
+++ b/Build/source/libs/gd/libgd-src/configure.ac
@@ -1,463 +1,332 @@
-# Process this file with autoconf to produce a configure script.
-# Configure template for gd library
-
-AC_PREREQ(2.54)
-
-# We extract version numbers from src/versions.h
-define([gv],[perl config/getver.pl ]$1)
-
-m4_define([gd_MAJOR],esyscmd(gv(MAJOR)))dnl
-m4_define([gd_MINOR],esyscmd(gv(MINOR)))dnl
-m4_define([gd_REVISION],esyscmd(gv(RELEASE)))dnl
-m4_define([gd_EXTRA],esyscmd(gv(EXTRA)))dnl
-m4_define([gd_PKG_VERSION],[gd_MAJOR.gd_MINOR.gd_REVISION]gd_EXTRA)]dnl
-
-AC_INIT([GD], gd_PKG_VERSION, [https://bitbucket.org/libgd/gd-libgd/issues], [libgd], [http://lib.gd])
-AC_CONFIG_SRCDIR([src/gd.c])
-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
-
-# Dynamic library version information
-# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
-
-GDLIB_CURRENT=3
-GDLIB_REVISION=0
-GDLIB_AGE=0
-AC_SUBST(GDLIB_CURRENT)
-AC_SUBST(GDLIB_REVISION)
-AC_SUBST(GDLIB_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([foreign dist-bzip2 dist-xz -Wall -Werror subdir-objects])
-AC_CONFIG_HEADERS([src/config.h:src/config.hin])
-
-dnl newer automake wants this, but we still want to work with older
-m4_ifndef([AM_PROG_AR],[m4_define([AM_PROG_AR],[:])])
-AM_PROG_AR
-
-AC_PROG_CC_STDC
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-AC_PROG_LIBTOOL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-LT_INIT([win32-dll])
-PKG_PROG_PKG_CONFIG
-
-dnl may be required for freetype and Xpm
-AC_PATH_X
-
-if test -n "$x_includes" && test "x$x_includes" != xNONE ; then
- CFLAGS="$CFLAGS -I$x_includes"
-fi
-if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then
- LDFLAGS="$LDFLAGS -L$x_libraries"
-fi
-
-AC_HEADER_STDC
-AC_CHECK_HEADERS([errno.h limits.h stddef.h stdlib.h string.h unistd.h])
-
-dnl if we're configuring on a system w/out gettext, don't fall over
-m4_ifndef([AM_ICONV],[m4_define([AM_ICONV],[:])])
-AM_ICONV
-# if test -n "$LIBICONV" ; then
-# LIBS="$LIBS $LIBICONV"
-# fi
-
-AC_CHECK_HEADERS(iconv.h,
- [AC_MSG_CHECKING(whether iconv.h defines iconv_t)
- AC_EGREP_HEADER([typedef.*iconv_t],iconv.h,
- [AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ICONV_T_DEF, 1,
- [Define if <iconv.h> defines iconv_t.])],
- 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?
-AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
-
-dnl zlib is required
-AC_ARG_WITH(zlib,
-[ --with-zlib=DIR where to find the zlib library])
-if test "$with_zlib" != no; then
- AC_CHECK_LIB(z,deflate,
- [LIBS="-lz $LIBS"
- AC_DEFINE(HAVE_LIBZ, 1, [Define if you have zlib.])
- with_zlib=yes],
- [AC_MSG_WARN([zlib is required - see http://www.gzip.org/zlib/])
- with_zlib=no])
-fi
-AM_CONDITIONAL([HAVE_LIBZ], test "$with_zlib" = yes)
-
-dnl libpng is required
-AC_ARG_WITH(png,dnl
-[ --with-png=DIR where to find the png library])
-
-case $with_png in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBPNG], libpng, [
- with_png=yes
- ],[
- if test "$with_png" = yes; then
- AC_MSG_ERROR([png support requested, but not found - see http://www.libpng.org/pub/png/])
- fi
- with_png=no
- ])
- ;;
-*)
- AC_MSG_CHECKING([libpng-config script])
- LIBPNG_CONFIG=$with_png/bin/libpng-config
- if test -e "$LIBPNG_CONFIG"; then
- LIBPNG_CFLAGS=`$LIBPNG_CONFIG --cflags`
- LIBPNG_LIBS=`$LIBPNG_CONFIG --ldflags`
- with_png=yes
- AC_MSG_RESULT([$LIBPNG_CONFIG, cflags: $LIBPNG_CFLAGS, libs: $LIBPNG_LIBS])
- else
- AC_MSG_ERROR([png support requested, but not found at requested location: $LIBPNG_CONFIG])
- fi
- ;;
-esac
-if test "$with_png" != no; then
- CPPFLAGS="$CPPFLAGS $LIBPNG_CFLAGS"
- LIBS="$LIBS $LIBPNG_LIBS"
- FEATURES="GD_PNG $FEATURES"
- AC_DEFINE(HAVE_LIBPNG, 1, [Define if you have the png library.])
-fi
-AM_CONDITIONAL([HAVE_LIBPNG], test "$with_png" = yes)
-
-dnl FreeType configure tests snarfed from libwmf ..
-AC_ARG_WITH(freetype,dnl
-[ --with-freetype=DIR where to find the freetype 2.x library]])
-
-case $with_freetype in
-no) ;;
-yes|"")
- dnl All freetype2 versions are numerically much larger than the actual
- dnl version number you see in the tarball. This is because the number
- dnl corresponds to the shared library version rather than the release.
- dnl 9.8.3 is the version that freetype2-2.1.10 used.
- PKG_CHECK_MODULES([LIBFREETYPE], [freetype2 >= 9.8.3], [
- with_freetype=yes
- ],[
- if test "$with_freetype" = yes; then
- AC_MSG_ERROR([freetype support requested, but not found])
- fi
- with_freetype=no
- ])
- ;;
-*)
- FREETYPE_CONFIG=$with_freetype/bin/freetype-config
- if test -e "$FREETYPE_CONFIG"; then
- LIBFREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
- LIBFREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
- with_freetype=yes
- else
- AC_MSG_ERROR([freetype support requested, but not found: $FREETYPE_CONFIG])
- fi
- ;;
-esac
-if test "$with_freetype" = yes; then
- CPPFLAGS="$CPPFLAGS $LIBFREETYPE_CFLAGS"
- LIBS="$LIBS $LIBFREETYPE_LIBS"
- FEATURES="GD_FREETYPE $FEATURES"
- AC_DEFINE(HAVE_LIBFREETYPE, 1, [Define if you have the freetype library.])
- AC_DEFINE(HAVE_FT2BUILD_H, 1, [Define if you have the ft2build.h header.])
-fi
-AM_CONDITIONAL([HAVE_LIBFREETYPE], test "$with_freetype" = yes)
-
-dnl check for libfontconfig by default
-AC_ARG_WITH(fontconfig,dnl
-[ --with-fontconfig=DIR where to find the fontconfig library])
-
-case $with_fontconfig in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBFONTCONFIG], fontconfig, [with_fontconfig=yes],
- [
- if test "$with_fontconfig" = yes; then
- AC_MSG_ERROR([fontconfig support requested, but not found])
- fi
- with_fontconfig=no
- ])
- ;;
-*)
- save_LIBS="$LIBS"
- save_CPPFLAGS="$CPPFLAGS"
-
- if test -d "$with_fontconfig"; then
- LIBFONTCONFIG_CFLAGS="-I$with_fontconfig/include"
- LIBFONTCONFIG_LIBS="-L$with_fontconfig/lib"
- fi
-
- CPPFLAGS="$CPPFLAGS $LIBFONTCONFIG_CFLAGS"
- LIBS="$LIBS $LIBFONTCONFIG_LIBS"
-
- AC_CHECK_LIB(fontconfig, FcInit,
- [
- LIBFONTCONFIG_LIBS="$LIBFONTCONFIG_LIBS -lfontconfig"
- with_fontconfig=yes
- ],[
- if test "$with_fontconfig" != ""; then
- AC_MSG_ERROR([fontconfig support requested, but not found])
- else
- with_fontconfig=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_fontconfig" != no; then
- CPPFLAGS="$CPPFLAGS $LIBFONTCONFIG_CFLAGS"
- LIBS="$LIBS $LIBFONTCONFIG_LIBS -lfontconfig"
- FEATURES="GD_FONTCONFIG $FEATURES"
- AC_DEFINE(HAVE_LIBFONTCONFIG, 1, [ Define if you have the fontconfig library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBFONTCONFIG], test "$with_fontconfig" = yes)
-
-dnl check for libjpeg by default
-AC_ARG_WITH(jpeg,dnl
-[ --with-jpeg=DIR where to find the jpeg library],
- [if test -d "$withval"; then
- LDFLAGS="$LDFLAGS -L$withval/lib"
- CFLAGS="$CFLAGS -I$withval/include"
- fi],
- withval=yes)
-
-if test "$withval" != no; then
- AC_CHECK_LIB(jpeg,jpeg_set_defaults,
- [LIBS="-ljpeg $LIBS"
- FEATURES="GD_JPEG $FEATURES"
- AC_DEFINE(HAVE_LIBJPEG, 1, [ Define if you have the jpeg library. ])])
-else
- ac_cv_lib_jpeg_jpeg_set_defaults=no
-fi
-AM_CONDITIONAL([HAVE_LIBJPEG], test "$ac_cv_lib_jpeg_jpeg_set_defaults" = yes)
-
-dnl check for libXpm by default
-AC_ARG_WITH(xpm,dnl
-[ --with-xpm=DIR where to find the xpm library])
-
-case $with_xpm in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBXPM], xpm, [with_xpm=yes],
- [
- if test "$with_xpm" = yes; then
- AC_MSG_ERROR([Xpm support requested, but not found])
- fi
- with_xpm=no
- ])
- ;;
-*)
- save_LIBS="$LIBS"
- save_CPPFLAGS="$CPPFLAGS"
-
- if test -d "$with_xpm"; then
- LIBXPM_CFLAGS="-I$with_xpm/include"
- LIBXPM_LIBS="-L$with_xpm/lib -lXpm"
- fi
-
- CPPFLAGS="$CPPFLAGS $LIBXPM_CFLAGS"
- LIBS="$LIBS $LIBXPM_LIBS"
-
- AC_CHECK_LIB(Xpm,XpmReadFileToXpmImage,
- [
- if test -z "$LIBXPM_LIBS"; then
- LIBXPM_LIBS="-lXpm"
- fi
- with_xpm=yes
- ],[
- if test "$with_xpm" != ""; then
- AC_MSG_ERROR([Xpm support requested, but not found])
- else
- with_xpm=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_xpm" != no; then
- CPPFLAGS="$CPPFLAGS $LIBXPM_CFLAGS"
- LIBS="$LIBS $LIBXPM_LIBS"
- FEATURES="GD_XPM $FEATURES"
- AC_DEFINE(HAVE_LIBXPM, 1, [ Define if you have the Xpm library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBXPM], test "$with_xpm" = yes)
-
-dnl check for libvpx by default
-AC_ARG_WITH(vpx,dnl
-[ --with-vpx=DIR where to find the vpx library])
-
-case $with_vpx in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBVPX], vpx, [with_vpx=yes],
- [
- PKG_CHECK_MODULES([LIBVPX], libvpx, [with_vpx=yes],
- [
- if test "$with_vpx" = yes; then
- AC_MSG_ERROR([VPX support requested, but not found])
- fi
- with_vpx=no
- ])
- ])
- ;;
-*)
- save_LIBS="$LIBS"
- save_CPPFLAGS="$CPPFLAGS"
-
- if test -d "$with_vpx"; then
- LIBVPX_CFLAGS="-I$with_vpx/include"
- LIBVPX_LIBS="-L$with_vpx/lib -lvpx"
- fi
-
- CPPFLAGS="$CPPFLAGS $LIBVPX_CFLAGS"
- LIBS="$LIBS $LIBVPX_LIBS"
-
- AC_CHECK_LIB(vpx,vpx_codec_destroy,
- [
- if test -z "$LIBVPX_LIBS"; then
- LIBVPX_LIBS="-lvpx"
- fi
- with_vpx=yes
- ],[
- if test "$with_vpx" != ""; then
- AC_MSG_ERROR([vpx support requested, but not found])
- else
- with_vpx=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_vpx" != no; then
- CPPFLAGS="$CPPFLAGS $LIBVPX_CFLAGS"
- LIBS="$LIBS $LIBVPX_LIBS"
- FEATURES="GD_VPX $FEATURES"
- AC_DEFINE(HAVE_LIBVPX, 1, [ Define if you have the VPX library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBVPX], test "$with_vpx" = yes)
-
-dnl check for libtiff by default
-AC_ARG_WITH(tiff,dnl
-[ --with-tiff=DIR where to find the TIFF library])
-
-case $with_tiff in
-no) ;;
-yes|"")
- PKG_CHECK_MODULES([LIBTIFF], libtiff-4, [with_tiff=yes],
- [
- if test "$with_tiff" = yes; then
- AC_MSG_ERROR([TIFF support requested, but not found])
- fi
- with_tiff=no
- ])
- ;;
-*)
- save_CPPFLAGS="$CPPFLAGS"
- save_LIBS="$LIBS"
-
- if test -d "$with_tiff"; then
- LIBTIFF_CFLAGS="-I$with_tiff/include"
- LIBTIFF_LIBS="-L$with_tiff/lib"
- fi
-
- CPPFLAGS="$CPPFLAGS $LIBTIFF_CFLAGS"
- LIBS="$LIBS $LIBTIFF_LIBS"
-
- AC_CHECK_LIB(tiff,TIFFClientOpen,
- [
- LIBTIFF_LIBS="$LIBTIFF_LIBS -ltiff"
- with_tiff=yes
- ],[
- if test "$with_tiff" != ""; then
- AC_MSG_ERROR([tiff support requested, but not found])
- else
- with_tiff=no
- fi
- ])
-
- CPPFLAGS="$save_CPPFLAGS"
- LIBS="$save_LIBS"
- ;;
-esac
-
-if test "$with_tiff" != no; then
- CPPFLAGS="$CPPFLAGS $LIBTIFF_CFLAGS"
- LIBS="$LIBS $LIBTIFF_LIBS"
- FEATURES="GD_TIFF $FEATURES"
- AC_DEFINE(HAVE_LIBTIFF, 1, [ Define if you have the Tiff library. ])
-fi
-AM_CONDITIONAL([HAVE_LIBTIFF], test "$with_tiff" = yes)
-
-gl_VISIBILITY()
-CFLAGS="$CFLAGS $CFLAG_VISIBILITY"
-
-AX_PTHREAD()
-
-MINGW_AC_WIN32_NATIVE_HOST()
-
-if test "$mingw_cv_win32_host" = yes; then
-AC_DEFINE([BGDWIN32], [], [Define is you are building for Win32 API])
-fi
-
-dnl report configuration
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $VERSION:
-
- Support for Zlib: $with_zlib
- Support for PNG library: $with_png
- Support for JPEG library: $ac_cv_lib_jpeg_jpeg_set_defaults
- Support for VPX library: $with_vpx
- Support for TIFF library: $with_tiff
- Support for Freetype 2.x library: $with_freetype
- Support for Fontconfig library: $with_fontconfig
- Support for Xpm library: $with_xpm
- Support for pthreads: $ax_pthread_ok
-])
-
-AC_CONFIG_FILES([Makefile
- src/Makefile
- tests/Makefile
- tests/test_config.h
- config/Makefile
- config/gdlib-config
- config/gdlib.pc])
-
-AC_OUTPUT
+# Process this file with autoconf to produce a configure script.
+# Configure template for gd library
+
+AC_PREREQ(2.64)
+
+# We extract version numbers from src/versions.h
+define([gv],[perl config/getver.pl ]$1)
+
+m4_define([gd_MAJOR],esyscmd(gv(MAJOR)))dnl
+m4_define([gd_MINOR],esyscmd(gv(MINOR)))dnl
+m4_define([gd_REVISION],esyscmd(gv(RELEASE)))dnl
+m4_define([gd_EXTRA],esyscmd(gv(EXTRA)))dnl
+m4_define([gd_PKG_VERSION],[gd_MAJOR.gd_MINOR.gd_REVISION]gd_EXTRA)]dnl
+
+AC_INIT([GD], gd_PKG_VERSION, [https://github.com/libgd/libgd/issues], [libgd], [http://lib.gd])
+AC_CONFIG_SRCDIR([src/gd.c])
+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
+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])
+
+AM_PROG_AR
+AC_PROG_CC_STDC
+AM_PROG_CC_C_O
+AC_PROG_INSTALL
+AC_PROG_LIBTOOL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+LT_INIT([win32-dll])
+PKG_PROG_PKG_CONFIG
+
+dnl may be required for freetype and Xpm
+AC_PATH_X
+
+if test -n "$x_includes" && test "x$x_includes" != xNONE ; then
+ CFLAGS="$CFLAGS -I$x_includes"
+fi
+if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then
+ LDFLAGS="$LDFLAGS -L$x_libraries"
+fi
+
+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
+ sys/types.h
+]))
+
+dnl if we're configuring on a system w/out gettext, don't fall over
+m4_ifndef([AM_ICONV],[m4_define([AM_ICONV],[:])])
+AM_ICONV
+# if test -n "$LIBICONV" ; then
+# LIBS="$LIBS $LIBICONV"
+# fi
+
+AC_CHECK_HEADERS(iconv.h,
+ [AC_MSG_CHECKING(whether iconv.h defines iconv_t)
+ AC_EGREP_HEADER([typedef.*iconv_t],iconv.h,
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ICONV_T_DEF, 1,
+ [Define if <iconv.h> defines iconv_t.])],
+ 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?
+AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
+
+AX_PTHREAD()
+AX_OPENMP()
+
+dnl Helper macro for working with external libraries.
+dnl GD_LIB_CHECK([SYM], [FEATURE], [name], [...test...])
+dnl $1 - upper case symbol
+dnl $2 - GD feature name to track
+dnl $3 - lower case name for user
+dnl $4 - test for the feature
+dnl The test code should set gd_found_lib=yes to indicate success.
+m4_define([GD_LIB_CHECK], [dnl
+ dnl Export the flag for the user to leverage. No other logic here.
+ AC_MSG_CHECKING([whether to support $3])
+ AC_ARG_WITH([$3],
+ [AS_HELP_STRING([--with-$3@<:@=DIR@:>@], [Support $3 (optionally in DIR)])],
+ [gd_with_lib=$withval],
+ [gd_with_lib=auto])
+ AC_MSG_RESULT([$gd_with_lib])
+
+ gd_found_lib=no
+ if test "$gd_with_lib" != "no"; then
+ save_CPPFLAGS=$CPPFLAGS
+ save_LDFLAGS=$LDFLAGS
+ dnl Set up default libs/cflags vars based on the path if user gave us one.
+ gd_lib_ldflags=
+ gd_lib_cflags=
+ case $gd_with_lib in
+ yes|no|auto|"") ;;
+ *)
+ if test -d "$gd_with_lib/lib"; then
+ gd_lib_ldflags="-L$gd_with_lib/lib"
+ AS_VAR_APPEND([LDFLAGS], [" $gd_lib_ldflags"])
+ fi
+ if test -d "$gd_with_lib/include"; then
+ gd_lib_cflags="-I$gd_with_lib/include"
+ AS_VAR_APPEND([CPPFLAGS], [" $gd_lib_cflags"])
+ fi
+ ;;
+ esac
+ dnl Run the test for this feature.
+ $4
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+
+ 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"
+ AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"])
+ AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"])
+ elif test "$gd_with_lib" = "yes"; then
+ AC_MSG_ERROR([$3 requested but not found])
+ else
+ AC_MSG_NOTICE([Disabling support for $3])
+ fi
+ fi
+ AM_CONDITIONAL([HAVE_$1], test "$gd_found_lib" = yes)
+ gd_with_$1=$gd_found_lib
+])
+
+dnl Helper macro for working with external libraries with pkg-config support.
+dnl GD_LIB_PKG_CHECK([SYM], [FEATURE], [name], [pkg-config module], [...fallback test...])
+dnl $1 - upper case symbol
+dnl $2 - GD feature name to track
+dnl $3 - lower case name for user
+dnl $4 - pkg-config module to look for
+dnl $5 - fallback test for the feature
+m4_define([GD_LIB_PKG_CHECK], [dnl
+ GD_LIB_CHECK([$1], [$2], [$3], [dnl
+ PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
+ ])
+])
+
+dnl Check for zlib support.
+GD_LIB_PKG_CHECK([LIBZ], [ZLIB], [zlib], [zlib], [dnl
+ AC_CHECK_LIB([z], [deflate], [dnl
+ AS_VAR_APPEND([LIBZ_LIBS], [" -lz"])
+ gd_found_lib=yes
+ ])
+])
+
+dnl Check for libpng support.
+GD_LIB_PKG_CHECK([LIBPNG], [PNG], [png], [libpng], [
+ LIBPNG_CONFIG=$gd_with_lib/bin/libpng-config
+ if test -e "$LIBPNG_CONFIG"; then
+ LIBPNG_CFLAGS=`$LIBPNG_CONFIG --cflags`
+ LIBPNG_LIBS=`$LIBPNG_CONFIG --ldflags`
+ gd_found_lib=yes
+ fi
+])
+
+dnl Check for FreeType support.
+GD_LIB_PKG_CHECK([LIBFREETYPE], [FREETYPE], [freetype], [freetype2 >= 9.8.3], [
+ FREETYPE_CONFIG=$gd_with_lib/bin/freetype-config
+ if test -e "$FREETYPE_CONFIG"; then
+ LIBFREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
+ LIBFREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
+ gd_found_lib=yes
+ fi
+])
+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 fontconfig support.
+GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [fontconfig], [
+ AC_CHECK_LIB([fontconfig], [FcInit], [dnl
+ AS_VAR_APPEND([LIBFONTCONFIG_LIBS], [" -lfontconfig"])
+ gd_found_lib=yes
+ ])
+])
+
+dnl Check for jpeg support.
+GD_LIB_CHECK([LIBJPEG], [JPEG], [jpeg], [
+ AC_CHECK_LIB([jpeg], [jpeg_set_defaults], [dnl
+ AS_VAR_APPEND([LIBJPEG_LIBS], [" -ljpeg"])
+ gd_found_lib=yes
+ ])
+])
+
+dnl Check for libimagequant support.
+GD_LIB_CHECK([LIBIMAGEQUANT], [LIQ], [liq], [
+ AC_CHECK_HEADER([libimagequant.h], [
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $OPENMP_CFLAGS"
+ AC_CHECK_LIB([imagequant], [liq_attr_create_with_allocator], [dnl
+ AS_VAR_APPEND([LIBIMAGEQUANT_LIBS], [" -limagequant $OPENMP_CFLAGS"])
+ gd_found_lib=yes
+ ])
+ CFLAGS=$save_CFLAGS
+ ])
+])
+
+dnl Check for xpm support.
+GD_LIB_PKG_CHECK([LIBXPM], [XPM], [xpm], [xpm], [
+ AC_CHECK_LIB([Xpm], [XpmReadFileToXpmImage], [dnl
+ AS_VAR_APPEND([LIBXPM_LIBS], [" -lXpm"])
+ gd_found_lib=yes
+ ])
+])
+
+dnl Check for tiff support.
+GD_LIB_PKG_CHECK([LIBTIFF], [TIFF], [tiff], [libtiff-4], [
+ AC_CHECK_LIB([tiff], [TIFFClientOpen], [dnl
+ AS_VAR_APPEND([LIBTIFF_LIBS], [" -ltiff"])
+ gd_found_lib=yes
+ ])
+])
+
+dnl Check for webp support.
+GD_LIB_CHECK([LIBWEBP], [WEBP], [webp], [
+ AC_CHECK_LIB([webp], [WebPGetInfo], [dnl
+ AS_VAR_APPEND([LIBWEBP_LIBS], [" -lwebp"])
+ gd_found_lib=yes
+ ])
+])
+
+gl_VISIBILITY()
+CFLAGS="$CFLAGS $CFLAG_VISIBILITY"
+
+MINGW_AC_WIN32_NATIVE_HOST()
+
+if test "$mingw_cv_win32_host" = yes; then
+AC_DEFINE([BGDWIN32], [], [Define is you are building for Win32 API])
+fi
+
+dnl Enable -Wall if possible. Do it after all other tests.
+AX_CFLAGS_WARN_ALL
+
+dnl Enable -Werror if possible. Do it after all other tests.
+AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [treat compile warnings as errors])])
+if test "$enable_werror" = "yes" || test "$GCC" = "yes" -a "$enable_werror" != "no"; then
+ CFLAGS="-Werror $CFLAGS"
+ CXXFLAGS="-Werror $CXXFLAGS"
+fi
+
+dnl report configuration
+AC_MSG_RESULT([
+** Configuration summary for $PACKAGE $VERSION:
+
+ Support for Zlib: $gd_with_LIBZ
+ Support for PNG library: $gd_with_LIBPNG
+ Support for JPEG library: $gd_with_LIBJPEG
+ Support for WebP library: $gd_with_LIBWEBP
+ Support for TIFF library: $gd_with_LIBTIFF
+ Support for Freetype 2.x library: $gd_with_LIBFREETYPE
+ Support for Fontconfig library: $gd_with_LIBFONTCONFIG
+ Support for Xpm library: $gd_with_LIBXPM
+ Support for liq library: $gd_with_LIBIMAGEQUANT
+ Support for pthreads: $ax_pthread_ok
+])
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ tests/Makefile
+ tests/test_config.h
+ config/Makefile
+ config/gdlib-config
+ config/gdlib.pc])
+
+AC_OUTPUT
diff --git a/Build/source/libs/gd/libgd-src/docs/README.CMAKE b/Build/source/libs/gd/libgd-src/docs/README.CMAKE
index 884f6b2bf1b..213a181d5d2 100644
--- a/Build/source/libs/gd/libgd-src/docs/README.CMAKE
+++ b/Build/source/libs/gd/libgd-src/docs/README.CMAKE
@@ -1,39 +1,47 @@
-|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-$Id$
-Tobuild GD using CMake, all you need is (add the cmake options if you need any
-or if the default libs and include paths are not the default) :
-
-In a sub directory:
-$ mkdir bld
-$ cd bld
-$ cmake -DBUILD_TEST=1 <options>
-
-The available options are:
-ENABLE_PNG=1
-ENABLE_JPEG=1
-ENABLE_TIFF=1
-ENABLE_FREETYPE=1
-ENABLE_FONTCONFIG=1
-ENABLE_XPM=1
-
-You can optionnally run our tests suite using:
-$ ctest .
-
-Or if you like to build in the source tree:
-$ cmake -DBUILD_TEST=1 .
-$ ctest .
-
-Add "-DCMAKE_BUILD_TYPE=DEBUG" if you like to have a debug version.
-
-
-Typical usage with only PNG enabled:
-
-This command generates VS7 project files and add some custom libraries and includes directories (libpng in this case):
-
-cmake -DCMAKE_GENERATOR="Visual Studio 7 .NET 2003" -DENABLE_PNG=1 -DCMAKE_LIBRARY_PATH=c:\gd_build\gd_deps\lib -DCMAKE_INCLUDE_PATH=c:\gd_build\gd_deps\include c:\libgd_src
-
-A typical CMake call to build using the MinGW tools:
-
-cmake -G"MinGW Makefiles" -DCMAKE_LIBRARY_PATH=c:\mingw\lib -DCMAKE_INCLUDE_PATH=c:\MinGW\include -DENABLE_JPEG=On -DBUILD_TEST=On -DCMAKE_RELEASE_TYPE=DEBUG ..\libgd_head
-
-Given that your MinGW install is under c:\mingw and that you install all libraries using the /usr prefix
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+To build GD using CMake, all you need is (add the cmake options if you need any
+or if the default libs and include paths are not the default) :
+
+In a sub directory of the top level:
+$ mkdir bld
+$ cd bld
+$ cmake -DBUILD_TEST=1 <options> ..
+$ make
+
+The available options are:
+ENABLE_PNG=1
+ENABLE_JPEG=1
+ENABLE_TIFF=1
+ENABLE_FREETYPE=1
+ENABLE_FONTCONFIG=1
+ENABLE_XPM=1
+ENABLE_WEBP=1
+
+You can optionally run our tests suite using:
+$ ctest .
+
+Or if you like to build in the source tree:
+$ cmake -DBUILD_TEST=1 .
+$ make
+$ ctest .
+
+Add "-DCMAKE_BUILD_TYPE=DEBUG" if you like to have a debug version.
+
+To install, just run:
+$ make install
+Or to to install to a different path:
+$ make install DESTDIR=/some/other/place
+
+Typical usage with only PNG enabled:
+
+This command generates VS7 project files and add some custom libraries and
+includes directories (libpng in this case):
+
+cmake -DCMAKE_GENERATOR="Visual Studio 7 .NET 2003" -DENABLE_PNG=1 -DCMAKE_LIBRARY_PATH=c:\gd_build\gd_deps\lib -DCMAKE_INCLUDE_PATH=c:\gd_build\gd_deps\include c:\libgd_src
+
+A typical CMake call to build using the MinGW tools:
+
+cmake -G"MinGW Makefiles" -DCMAKE_LIBRARY_PATH=c:\mingw\lib -DCMAKE_INCLUDE_PATH=c:\MinGW\include -DENABLE_JPEG=On -DBUILD_TEST=On -DCMAKE_RELEASE_TYPE=DEBUG ..\libgd_head
+
+Given that your MinGW install is under c:\mingw and that you install all libraries using the /usr prefix
diff --git a/Build/source/libs/gd/libgd-src/docs/README.JPN b/Build/source/libs/gd/libgd-src/docs/README.JPN
index ed7a2a8285c..65db00b5534 100644
--- a/Build/source/libs/gd/libgd-src/docs/README.JPN
+++ b/Build/source/libs/gd/libgd-src/docs/README.JPN
@@ -1,39 +1,39 @@
- gd $B%i%$%V%i%j$GF|K\8lJ8;zNs$r;H$&>e$G$NCm0U;v9`(B
-
- $B;32l@5?M(B (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
-
- $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
-
-$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$H2r<a$5$l!"4A;z%3!<%I(B (EUC, SJIS, 7bit JIS)
-$B$,<+F0H=JL$5$l$FE,@Z$K=hM}$5$l$^$9!#(B
-
-$B99$K(B UNICODE encoding $B$N%U%)%s%H$KBP$7$F$b(B JIS $B7O$NF|K\8l(B (EUC, SJIS, 7bit JIS)
-$B$r;HMQ$9$k>l9g$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$H2r<a$5$l!"4A;z%3!<%I$r<+F0H=JL8e$K(B
-$BE,@Z$K=hM}$5$l$^$9!#(B
-
-$B$?$@$7$3$N>l9g$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
-
-$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
-
-
-$B!y(B EUC $B$+(B SJIS $B$+H=JL$G$-$J$+$C$?>l9g$N4A;z%3!<%I$NH=JLJ}K!(B
-
- (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
-
-$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
+ gd $B%i%$%V%i%j$GF|K\8lJ8;zNs$r;H$&>e$G$NCm0U;v9`(B
+
+ $B;32l@5?M(B (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
+
+ $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
+
+$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$H2r<a$5$l!"4A;z%3!<%I(B (EUC, SJIS, 7bit JIS)
+$B$,<+F0H=JL$5$l$FE,@Z$K=hM}$5$l$^$9!#(B
+
+$B99$K(B UNICODE encoding $B$N%U%)%s%H$KBP$7$F$b(B JIS $B7O$NF|K\8l(B (EUC, SJIS, 7bit JIS)
+$B$r;HMQ$9$k>l9g$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$H2r<a$5$l!"4A;z%3!<%I$r<+F0H=JL8e$K(B
+$BE,@Z$K=hM}$5$l$^$9!#(B
+
+$B$?$@$7$3$N>l9g$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
+
+$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
+
+
+$B!y(B EUC $B$+(B SJIS $B$+H=JL$G$-$J$+$C$?>l9g$N4A;z%3!<%I$NH=JLJ}K!(B
+
+ (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
+
+$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
diff --git a/Build/source/libs/gd/libgd-src/docs/README.TESTING b/Build/source/libs/gd/libgd-src/docs/README.TESTING
index 506ea4249ea..53dd8db54e8 100644
--- a/Build/source/libs/gd/libgd-src/docs/README.TESTING
+++ b/Build/source/libs/gd/libgd-src/docs/README.TESTING
@@ -1,62 +1,70 @@
-|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-
-To run the tests suite, all you need is (add the cmake options if you need any
-or if the default libs and include paths are not the default) :
-
-In a sub directory:
-$ mkdir bld
-$ cd bld
-$ cmake -DBUILD_TEST=1 ..
-$ ctest .
-
-Or if you like to build in the source tree:
-$ cmake -DBUILD_TEST=1 .
-$ ctest .
-
-Add "-DCMAKE_BUILD_TYPE=DEBUG" if you like to have a debug version.
-
-If you like to run the tests against a installed GD library, set the following
-environment variables:
-
-export CMAKE_INCLUDE_PATH=/path/to/the/gd/include
-export CMAKE_LIBRARY_PATH=/path/to/the/gd/lib
-
-then call cmake using:
-
-$ cmake -DUSE_EXT_GD=1 -DBUILD_TEST=1
-$ make
-and finally:
-
-$ 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?
-either from your favourite distributions or from http://www.libgd.org or git?
-
-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
-
-If the tests fail using our source release, please report a bug here:
-
-http://bugs.libgd.org
-
-You can attach the two files available in:
-
-./Testing/Temporary
-
-Later versions will have an automatic post mode.
-
-If the tests run successfully, please report a bug to the maintainer of the
-packages (debian, bsd, ubuntu or whoever is responsible for the packages).
-
-Reasons of failures:
-Exception: SegFault: self explaining
-Failed test failed, check the log to know where
-timeout the default timeout is 5 seconds. Some test may
- have infinite loops when compiled against old versions
- of the GD library (esp. 2.0.33 or earlier)
-
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+To run the tests suite, all you need is (add the cmake options if you need any
+or if the default libs and include paths are not the default) :
+
+In a sub directory:
+$ mkdir bld
+$ cd bld
+$ cmake -DBUILD_TEST=1 ..
+$ make
+$ ctest .
+
+Or if you like to build in the source tree:
+$ cmake -DBUILD_TEST=1 .
+$ make
+$ ctest .
+
+Add "-DCMAKE_BUILD_TYPE=DEBUG" if you like to have a debug version.
+
+If you like to run the tests against a installed GD library, set the following
+environment variables:
+
+export CMAKE_INCLUDE_PATH=/path/to/the/gd/include
+export CMAKE_LIBRARY_PATH=/path/to/the/gd/lib
+
+then call cmake using:
+
+$ cmake -DUSE_EXT_GD=1 -DBUILD_TEST=1
+$ make
+and finally:
+
+$ 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?
+either from your favourite distributions or from http://www.libgd.org or git?
+
+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
+
+If the tests fail using our source release, please report a bug here:
+
+http://bugs.libgd.org
+
+You can attach the two files available in:
+
+./Testing/Temporary
+
+Later versions will have an automatic post mode.
+
+If the tests run successfully, please report a bug to the maintainer of the
+packages (debian, bsd, ubuntu or whoever is responsible for the packages).
+
+Reasons of failures:
+Exception: SegFault: self explaining
+Failed test failed, check the log to know where
+timeout the default timeout is 5 seconds. Some test may
+ have infinite loops when compiled against old versions
+ of the GD library (esp. 2.0.33 or earlier)
+
+Some features rely on floating point arithmetics and results may vary from
+one architecture to another.
+Examples:
+on i686, gdimagerotate/bug00067 will faill. The result is still viusally
+acceptable but i686 default arithmetic mode will generate different results.
+Adding "-msse -mfpmath=sse" to CFLAGS will solve this difference.
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html
new file mode 100644
index 00000000000..53a4ad76b71
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html
@@ -0,0 +1,193 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd.c"></a>gd.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd.c" >gd.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdSetErrorMethod" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdSetErrorMethod</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdClearErrorMethod" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdClearErrorMethod</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGetTrueColorPixel" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageGetTrueColorPixel</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreate" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageCreate</a></td><td class=SDescription>gdImageCreate is called to create palette-based images, with no more than 256 colors. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateTrueColor" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a></td><td class=SDescription><a href="#gdImageCreateTrueColor" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt5', 'link6')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a> is called to create truecolor images, with an essentially unlimited number of colors. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageDestroy" id=link7 onMouseOver="ShowTip(event, 'tt6', 'link7')" onMouseOut="HideTip('tt6')">gdImageDestroy</a></td><td class=SDescription><a href="#gdImageDestroy" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt6', 'link8')" onMouseOut="HideTip('tt6')">gdImageDestroy</a> is used to free the memory associated with an image. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorClosest" id=link9 onMouseOver="ShowTip(event, 'tt7', 'link9')" onMouseOut="HideTip('tt7')">gdImageColorClosest</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorClosestAlpha" id=link10 onMouseOver="ShowTip(event, 'tt8', 'link10')" onMouseOut="HideTip('tt8')">gdImageColorClosestAlpha</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorClosestHWB" id=link11 onMouseOver="ShowTip(event, 'tt9', 'link11')" onMouseOut="HideTip('tt9')">gdImageColorClosestHWB</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorExact" id=link12 onMouseOver="ShowTip(event, 'tt10', 'link12')" onMouseOut="HideTip('tt10')">gdImageColorExact</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorExactAlpha" id=link13 onMouseOver="ShowTip(event, 'tt11', 'link13')" onMouseOut="HideTip('tt11')">gdImageColorExactAlpha</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorAllocate" id=link14 onMouseOver="ShowTip(event, 'tt12', 'link14')" onMouseOut="HideTip('tt12')">gdImageColorAllocate</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorAllocateAlpha" id=link15 onMouseOver="ShowTip(event, 'tt13', 'link15')" onMouseOut="HideTip('tt13')">gdImageColorAllocateAlpha</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorResolve" id=link16 onMouseOver="ShowTip(event, 'tt14', 'link16')" onMouseOut="HideTip('tt14')">gdImageColorResolve</a></td><td class=SDescription>gdImageColorResolve is an alternative for the code fragment</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorResolveAlpha" id=link17 onMouseOver="ShowTip(event, 'tt15', 'link17')" onMouseOut="HideTip('tt15')">gdImageColorResolveAlpha</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorDeallocate" id=link18 onMouseOver="ShowTip(event, 'tt16', 'link18')" onMouseOut="HideTip('tt16')">gdImageColorDeallocate</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorTransparent" id=link19 onMouseOver="ShowTip(event, 'tt17', 'link19')" onMouseOut="HideTip('tt17')">gdImageColorTransparent</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePaletteCopy" id=link20 onMouseOver="ShowTip(event, 'tt18', 'link20')" onMouseOut="HideTip('tt18')">gdImagePaletteCopy</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorReplace" id=link21 onMouseOver="ShowTip(event, 'tt19', 'link21')" onMouseOut="HideTip('tt19')">gdImageColorReplace</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorReplaceThreshold" id=link22 onMouseOver="ShowTip(event, 'tt20', 'link22')" onMouseOut="HideTip('tt20')">gdImageColorReplaceThreshold</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColorReplaceArray" id=link23 onMouseOver="ShowTip(event, 'tt21', 'link23')" onMouseOut="HideTip('tt21')">gdImageColorReplaceArray</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageColorReplaceCallback" id=link24 onMouseOver="ShowTip(event, 'tt22', 'link24')" onMouseOut="HideTip('tt22')">gdImageColorReplaceCallback</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetPixel" id=link25 onMouseOver="ShowTip(event, 'tt23', 'link25')" onMouseOut="HideTip('tt23')">gdImageSetPixel</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGetPixel" id=link26 onMouseOver="ShowTip(event, 'tt24', 'link26')" onMouseOut="HideTip('tt24')">gdImageGetPixel</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGetTrueColorPixel" id=link27 onMouseOver="ShowTip(event, 'tt3', 'link27')" onMouseOut="HideTip('tt3')">gdImageGetTrueColorPixel</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageAABlend" id=link28 onMouseOver="ShowTip(event, 'tt25', 'link28')" onMouseOut="HideTip('tt25')">gdImageAABlend</a></td><td class=SDescription>NO-OP, kept for library compatibility.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageLine" id=link29 onMouseOver="ShowTip(event, 'tt26', 'link29')" onMouseOut="HideTip('tt26')">gdImageLine</a></td><td class=SDescription>Bresenham as presented in Foley &amp; Van Dam.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageDashedLine" id=link30 onMouseOver="ShowTip(event, 'tt27', 'link30')" onMouseOut="HideTip('tt27')">gdImageDashedLine</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageBoundsSafe" id=link31 onMouseOver="ShowTip(event, 'tt28', 'link31')" onMouseOut="HideTip('tt28')">gdImageBoundsSafe</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageChar" id=link32 onMouseOver="ShowTip(event, 'tt29', 'link32')" onMouseOut="HideTip('tt29')">gdImageChar</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCharUp" id=link33 onMouseOver="ShowTip(event, 'tt30', 'link33')" onMouseOut="HideTip('tt30')">gdImageCharUp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageString" id=link34 onMouseOver="ShowTip(event, 'tt31', 'link34')" onMouseOut="HideTip('tt31')">gdImageString</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageStringUp" id=link35 onMouseOver="ShowTip(event, 'tt32', 'link35')" onMouseOut="HideTip('tt32')">gdImageStringUp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageString16" id=link36 onMouseOver="ShowTip(event, 'tt33', 'link36')" onMouseOut="HideTip('tt33')">gdImageString16</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageStringUp16" id=link37 onMouseOver="ShowTip(event, 'tt34', 'link37')" onMouseOut="HideTip('tt34')">gdImageStringUp16</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageArc" id=link38 onMouseOver="ShowTip(event, 'tt35', 'link38')" onMouseOut="HideTip('tt35')">gdImageArc</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFilledArc" id=link39 onMouseOver="ShowTip(event, 'tt36', 'link39')" onMouseOut="HideTip('tt36')">gdImageFilledArc</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageEllipse" id=link40 onMouseOver="ShowTip(event, 'tt37', 'link40')" onMouseOut="HideTip('tt37')">gdImageEllipse</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFilledEllipse" id=link41 onMouseOver="ShowTip(event, 'tt38', 'link41')" onMouseOut="HideTip('tt38')">gdImageFilledEllipse</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageFillToBorder" id=link42 onMouseOver="ShowTip(event, 'tt39', 'link42')" onMouseOut="HideTip('tt39')">gdImageFillToBorder</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFill" id=link43 onMouseOver="ShowTip(event, 'tt40', 'link43')" onMouseOut="HideTip('tt40')">gdImageFill</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageRectangle" id=link44 onMouseOver="ShowTip(event, 'tt41', 'link44')" onMouseOut="HideTip('tt41')">gdImageRectangle</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFilledRectangle" id=link45 onMouseOver="ShowTip(event, 'tt42', 'link45')" onMouseOut="HideTip('tt42')">gdImageFilledRectangle</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageClone" id=link46 onMouseOver="ShowTip(event, 'tt43', 'link46')" onMouseOut="HideTip('tt43')">gdImageClone</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCopy" id=link47 onMouseOver="ShowTip(event, 'tt44', 'link47')" onMouseOut="HideTip('tt44')">gdImageCopy</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCopyMerge" id=link48 onMouseOver="ShowTip(event, 'tt45', 'link48')" onMouseOut="HideTip('tt45')">gdImageCopyMerge</a></td><td class=SDescription>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCopyMergeGray" id=link49 onMouseOver="ShowTip(event, 'tt46', 'link49')" onMouseOut="HideTip('tt46')">gdImageCopyMergeGray</a></td><td class=SDescription>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCopyResized" id=link50 onMouseOver="ShowTip(event, 'tt47', 'link50')" onMouseOut="HideTip('tt47')">gdImageCopyResized</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCopyRotated" id=link51 onMouseOver="ShowTip(event, 'tt48', 'link51')" onMouseOut="HideTip('tt48')">gdImageCopyRotated</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCopyResampled" id=link52 onMouseOver="ShowTip(event, 'tt49', 'link52')" onMouseOut="HideTip('tt49')">gdImageCopyResampled</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImagePolygon" id=link53 onMouseOver="ShowTip(event, 'tt50', 'link53')" onMouseOut="HideTip('tt50')">gdImagePolygon</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageOpenPolygon" id=link54 onMouseOver="ShowTip(event, 'tt51', 'link54')" onMouseOut="HideTip('tt51')">gdImageOpenPolygon</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFilledPolygon" id=link55 onMouseOver="ShowTip(event, 'tt52', 'link55')" onMouseOut="HideTip('tt52')">gdImageFilledPolygon</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSetStyle" id=link56 onMouseOver="ShowTip(event, 'tt53', 'link56')" onMouseOut="HideTip('tt53')">gdImageSetStyle</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetThickness" id=link57 onMouseOver="ShowTip(event, 'tt54', 'link57')" onMouseOut="HideTip('tt54')">gdImageSetThickness</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSetBrush" id=link58 onMouseOver="ShowTip(event, 'tt55', 'link58')" onMouseOut="HideTip('tt55')">gdImageSetBrush</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetTile" id=link59 onMouseOver="ShowTip(event, 'tt56', 'link59')" onMouseOut="HideTip('tt56')">gdImageSetTile</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSetAntiAliased" id=link60 onMouseOver="ShowTip(event, 'tt57', 'link60')" onMouseOut="HideTip('tt57')">gdImageSetAntiAliased</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetAntiAliasedDontBlend" id=link61 onMouseOver="ShowTip(event, 'tt58', 'link61')" onMouseOut="HideTip('tt58')">gdImageSetAntiAliasedDontBlend</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageInterlace" id=link62 onMouseOver="ShowTip(event, 'tt59', 'link62')" onMouseOut="HideTip('tt59')">gdImageInterlace</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCompare" id=link63 onMouseOver="ShowTip(event, 'tt60', 'link63')" onMouseOut="HideTip('tt60')">gdImageCompare</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdAlphaBlend" id=link64 onMouseOver="ShowTip(event, 'tt61', 'link64')" onMouseOut="HideTip('tt61')">gdAlphaBlend</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdLayerOverlay" id=link65 onMouseOver="ShowTip(event, 'tt62', 'link65')" onMouseOut="HideTip('tt62')">gdLayerOverlay</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdLayerMultiply" id=link66 onMouseOver="ShowTip(event, 'tt63', 'link66')" onMouseOut="HideTip('tt63')">gdLayerMultiply</a></td><td class=SDescription>Apply &lsquo;multiply&rsquo; effect.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageAlphaBlending" id=link67 onMouseOver="ShowTip(event, 'tt64', 'link67')" onMouseOut="HideTip('tt64')">gdImageAlphaBlending</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSaveAlpha" id=link68 onMouseOver="ShowTip(event, 'tt65', 'link68')" onMouseOut="HideTip('tt65')">gdImageSaveAlpha</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetClip" id=link69 onMouseOver="ShowTip(event, 'tt66', 'link69')" onMouseOut="HideTip('tt66')">gdImageSetClip</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGetClip" id=link70 onMouseOver="ShowTip(event, 'tt67', 'link70')" onMouseOut="HideTip('tt67')">gdImageGetClip</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSetResolution" id=link71 onMouseOver="ShowTip(event, 'tt68', 'link71')" onMouseOut="HideTip('tt68')">gdImageSetResolution</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePaletteToTrueColor" id=link72 onMouseOver="ShowTip(event, 'tt69', 'link72')" onMouseOut="HideTip('tt69')">gdImagePaletteToTrueColor</a></td><td class=SDescription>Convert a palette image to true color.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdSetErrorMethod"></a>gdSetErrorMethod</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdSetErrorMethod(</td><td class="PType prettyprint " nowrap>gdErrorMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>error_method</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdClearErrorMethod"></a>gdClearErrorMethod</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdClearErrorMethod(</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGetTrueColorPixel"></a>gdImageGetTrueColorPixel</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetTrueColorPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreate"></a>gdImageCreate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreate (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>gdImageCreate is called to create palette-based images, with no more than 256 colors.&nbsp; The image must eventually be destroyed using gdImageDestroy().</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>sx</td><td class=CDLDescription>The image width.</td></tr><tr><td class=CDLEntry>sy</td><td class=CDLDescription>The image height.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+im = gdImageCreate(64, 64);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote><h4 class=CHeading>See Also</h4><p><a href="#gdImageCreateTrueColor" class=LFunction id=link73 onMouseOver="ShowTip(event, 'tt5', 'link73')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a></p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateTrueColor"></a>gdImageCreateTrueColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateTrueColor (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateTrueColor" class=LFunction id=link74 onMouseOver="ShowTip(event, 'tt5', 'link74')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a> is called to create truecolor images, with an essentially unlimited number of colors.&nbsp; Invoke <a href="#gdImageCreateTrueColor" class=LFunction id=link75 onMouseOver="ShowTip(event, 'tt5', 'link75')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a> with the x and y dimensions of the desired image.&nbsp; <a href="#gdImageCreateTrueColor" class=LFunction id=link76 onMouseOver="ShowTip(event, 'tt5', 'link76')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link77 onMouseOver="ShowTip(event, 'tt70', 'link77')" onMouseOut="HideTip('tt70')">gdImagePtr</a> to the new image, or NULL if unable to allocate the image.&nbsp; The image must eventually be destroyed using &lt;gdImageDestroy&gt;().</p><p>Truecolor images are always filled with black at creation time.&nbsp; There is no concept of a &ldquo;background&rdquo; color index.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>sx</td><td class=CDLDescription>The image width.</td></tr><tr><td class=CDLEntry>sy</td><td class=CDLDescription>The image height.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+im = gdImageCreateTrueColor(64, 64);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote><h4 class=CHeading>See Also</h4><p><a href="#gdImageCreateTrueColor" class=LFunction id=link78 onMouseOver="ShowTip(event, 'tt5', 'link78')" onMouseOut="HideTip('tt5')">gdImageCreateTrueColor</a></p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageDestroy"></a>gdImageDestroy</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageDestroy" class=LFunction id=link79 onMouseOver="ShowTip(event, 'tt6', 'link79')" onMouseOut="HideTip('tt6')">gdImageDestroy</a> is used to free the memory associated with an image.&nbsp; It is important to invoke <a href="#gdImageDestroy" class=LFunction id=link80 onMouseOver="ShowTip(event, 'tt6', 'link80')" onMouseOut="HideTip('tt6')">gdImageDestroy</a> before exiting your program or assigning a new image to a <a href="gd-h.html#gdImagePtr" class=LType id=link81 onMouseOver="ShowTip(event, 'tt70', 'link81')" onMouseOut="HideTip('tt70')">gdImagePtr</a> variable.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>Pointer to the gdImage to delete.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+im = gdImageCreate(10, 10);
+// ... Use the image ...
+// Now destroy it
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorClosest"></a>gdImageColorClosest</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosest (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorClosestAlpha"></a>gdImageColorClosestAlpha</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorClosestHWB"></a>gdImageColorClosestHWB</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestHWB (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorExact"></a>gdImageColorExact</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExact (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorExactAlpha"></a>gdImageColorExactAlpha</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExactAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorAllocate"></a>gdImageColorAllocate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorAllocateAlpha"></a>gdImageColorAllocateAlpha</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocateAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorResolve"></a>gdImageColorResolve</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolve (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>gdImageColorResolve is an alternative for the code fragment</p><blockquote><pre>if ((color=gdImageColorExact(im,R,G,B)) &lt; 0)
+ if ((color=gdImageColorAllocate(im,R,G,B)) &lt; 0)
+ color=gdImageColorClosest(im,R,G,B);</pre></blockquote><p>in a single function.&nbsp; Its advantage is that it is guaranteed to return a color index in one search over the color table.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorResolveAlpha"></a>gdImageColorResolveAlpha</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorDeallocate"></a>gdImageColorDeallocate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorDeallocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorTransparent"></a>gdImageColorTransparent</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorTransparent (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePaletteCopy"></a>gdImagePaletteCopy</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePaletteCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>to,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>from</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorReplace"></a>gdImageColorReplace</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorReplaceThreshold"></a>gdImageColorReplaceThreshold</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceThreshold (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorReplaceArray"></a>gdImageColorReplaceArray</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceArray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>len,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColorReplaceCallback"></a>gdImageColorReplaceCallback</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceCallback (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdCallbackImageColor&nbsp;</td><td class="PParameter prettyprint " nowrap>callback</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetPixel"></a>gdImageSetPixel</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGetPixel"></a>gdImageGetPixel</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGetTrueColorPixel"></a>gdImageGetTrueColorPixel</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetTrueColorPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageAABlend"></a>gdImageAABlend</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAABlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>NO-OP, kept for library compatibility.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageLine"></a>gdImageLine</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Bresenham as presented in Foley &amp; Van Dam.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageDashedLine"></a>gdImageDashedLine</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDashedLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageBoundsSafe"></a>gdImageBoundsSafe</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBoundsSafe (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageChar"></a>gdImageChar</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageChar (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCharUp"></a>gdImageCharUp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCharUp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageString"></a>gdImageString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringUp"></a>gdImageStringUp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageString16"></a>gdImageString16</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringUp16"></a>gdImageStringUp16</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageArc"></a>gdImageArc</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFilledArc"></a>gdImageFilledArc</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>style</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageEllipse"></a>gdImageEllipse</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageEllipse(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFilledEllipse"></a>gdImageFilledEllipse</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledEllipse (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFillToBorder"></a>gdImageFillToBorder</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFillToBorder (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>border,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFill"></a>gdImageFill</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFill(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>nc</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageRectangle"></a>gdImageRectangle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFilledRectangle"></a>gdImageFilledRectangle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageClone"></a>gdImageClone</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageClone (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopy"></a>gdImageCopy</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyMerge"></a>gdImageCopyMerge</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMerge (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyMergeGray"></a>gdImageCopyMergeGray</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMergeGray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyResized"></a>gdImageCopyResized</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResized (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyRotated"></a>gdImageCopyRotated</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyRotated (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcWidth,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcHeight,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyResampled"></a>gdImageCopyResampled</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResampled (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePolygon"></a>gdImagePolygon</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageOpenPolygon"></a>gdImageOpenPolygon</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageOpenPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFilledPolygon"></a>gdImageFilledPolygon</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetStyle"></a>gdImageSetStyle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetStyle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>style,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>noOfPixels</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetThickness"></a>gdImageSetThickness</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetThickness (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>thickness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetBrush"></a>gdImageSetBrush</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetBrush (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>brush</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetTile"></a>gdImageSetTile</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetTile (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>tile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetAntiAliased"></a>gdImageSetAntiAliased</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliased (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetAntiAliasedDontBlend"></a>gdImageSetAntiAliasedDontBlend</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliasedDontBlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dont_blend</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageInterlace"></a>gdImageInterlace</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageInterlace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>interlaceArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCompare"></a>gdImageCompare</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageCompare (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAlphaBlend"></a>gdAlphaBlend</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAlphaBlend (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdLayerOverlay"></a>gdLayerOverlay</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerOverlay (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdLayerMultiply"></a>gdLayerMultiply</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerMultiply (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Apply &lsquo;multiply&rsquo; effect.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageAlphaBlending"></a>gdImageAlphaBlending</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAlphaBlending (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alphaBlendingArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSaveAlpha"></a>gdImageSaveAlpha</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSaveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>saveAlphaArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetClip"></a>gdImageSetClip</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGetClip"></a>gdImageGetClip</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x2P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y2P</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetResolution"></a>gdImageSetResolution</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetResolution(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePaletteToTrueColor"></a>gdImagePaletteToTrueColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePaletteToTrueColor(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Convert a palette image to true color.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd.c</div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdSetErrorMethod(</td><td class="PType prettyprint " nowrap>gdErrorMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>error_method</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdClearErrorMethod(</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetTrueColorPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreate (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreate is called to create palette-based images, with no more than 256 colors. </div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateTrueColor (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosest (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestHWB (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExact (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExactAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocateAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolve (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageColorResolve is an alternative for the code fragment</div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorDeallocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorTransparent (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePaletteCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>to,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>from</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceThreshold (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceArray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>len,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceCallback (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdCallbackImageColor&nbsp;</td><td class="PParameter prettyprint " nowrap>callback</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt24"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAABlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>NO-OP, kept for library compatibility.</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Bresenham as presented in Foley &amp; Van Dam.</div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDashedLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt28"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBoundsSafe (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageChar (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCharUp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt31"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt32"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt33"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt34"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt35"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>style</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt37"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageEllipse(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledEllipse (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFillToBorder (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>border,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFill(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>nc</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt42"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt43"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageClone (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt44"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt45"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMerge (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt46"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMergeGray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt47"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResized (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt48"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyRotated (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcWidth,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcHeight,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt49"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResampled (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt50"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt51"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageOpenPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt52"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt53"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetStyle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>style,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>noOfPixels</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt54"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetThickness (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>thickness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt55"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetBrush (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>brush</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt56"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetTile (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>tile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt57"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliased (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt58"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliasedDontBlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dont_blend</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt59"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageInterlace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>interlaceArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt60"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageCompare (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt61"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAlphaBlend (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt62"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerOverlay (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt63"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerMultiply (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Apply &lsquo;multiply&rsquo; effect.</div></div><div class=CToolTip id="tt64"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAlphaBlending (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alphaBlendingArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt65"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSaveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>saveAlphaArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt66"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt67"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x2P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y2P</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt68"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetResolution(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt69"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePaletteToTrueColor(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert a palette image to true color.</div></div><div class=CToolTip id="tt70"><div class=CType>The data structure in which gd stores images. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd-h.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html
new file mode 100644
index 00000000000..2a88dec77c3
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html
@@ -0,0 +1,113 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd.h</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd.h"></a>gd.h</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd.h" >gd.h</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Transform" >Transform</a></td><td class=SDescription></td></tr><tr class="SConstant SIndent1 SMarked"><td class=SEntry><a href="#gdInterpolationMethod" >gdInterpolationMethod</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdImage" >gdImage</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdImagePtr" >gdImagePtr</a></td><td class=SDescription>The data structure in which gd stores images. </td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdPointF" >gdPointF</a></td><td class=SDescription>Defines a point in a 2D coordinate system using floating point values. </td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdPointFPtr" >gdPointFPtr</a></td><td class=SDescription>Pointer to a <a href="#gdPointF" class=LType id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdPointF</a></td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdFont" >gdFont</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdFontPtr" >gdFontPtr</a></td><td class=SDescription>A font structure, containing the bitmaps of all characters in a font. </td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdSource" >gdSource</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdSourcePtr" >gdSourcePtr</a></td><td class=SDescription><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdFTStringExtra" >gdFTStringExtra</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdFTStringExtraPtr" >gdFTStringExtraPtr</a></td><td class=SDescription>A structure and associated pointer type used to pass additional parameters to the <a href="gdft-c.html#gdImageStringFTEx" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageStringFTEx</a> function. </td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdPoint" >gdPoint</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdPointPtr" >gdPointPtr</a></td><td class=SDescription>Represents a point in the coordinate space of the image; used by <a href="gd-c.html#gdImagePolygon" class=LFunction id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImagePolygon</a>, <a href="gd-c.html#gdImageOpenPolygon" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageOpenPolygon</a> and <a href="gd-c.html#gdImageFilledPolygon" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdImageFilledPolygon</a> for polygon drawing.</td></tr><tr class="SGroup"><td class=SEntry><a href="#GifAnim" >GifAnim</a></td><td class=SDescription>Legal values for Disposal. </td></tr><tr class="SConstant SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifAnim" >gdImageGifAnim</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdSink" >gdSink</a></td><td class=SDescription></td></tr><tr class="SType SIndent1"><td class=SEntry><a href="#gdSinkPtr" >gdSinkPtr</a></td><td class=SDescription><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </td></tr><tr class="SGroup"><td class=SEntry><a href="#Crop" >Crop</a></td><td class=SDescription></td></tr><tr class="SConstant SIndent1 SMarked"><td class=SEntry><a href="#gdCropMode" >gdCropMode</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Transform"></a>Transform</h3></div></div>
+
+<div class="CConstant"><div class=CTopic><h3 class=CTitle><a name="gdInterpolationMethod"></a>gdInterpolationMethod</h3><div class=CBody><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry><a name="GD_BELL"></a>GD_BELL</td><td class=CDLDescription>Bell</td></tr><tr><td class=CDLEntry><a name="GD_BESSEL"></a>GD_BESSEL</td><td class=CDLDescription>Bessel</td></tr><tr><td class=CDLEntry><a name="GD_BILINEAR_FIXED"></a>GD_BILINEAR_FIXED</td><td class=CDLDescription>fixed point bilinear</td></tr><tr><td class=CDLEntry><a name="GD_BICUBIC"></a>GD_BICUBIC</td><td class=CDLDescription>Bicubic</td></tr><tr><td class=CDLEntry><a name="GD_BICUBIC_FIXED"></a>GD_BICUBIC_FIXED</td><td class=CDLDescription>fixed point bicubic integer</td></tr><tr><td class=CDLEntry><a name="GD_BLACKMAN"></a>GD_BLACKMAN</td><td class=CDLDescription>Blackman</td></tr><tr><td class=CDLEntry><a name="GD_BOX"></a>GD_BOX</td><td class=CDLDescription>Box</td></tr><tr><td class=CDLEntry><a name="GD_BSPLINE"></a>GD_BSPLINE</td><td class=CDLDescription>BSpline</td></tr><tr><td class=CDLEntry><a name="GD_CATMULLROM"></a>GD_CATMULLROM</td><td class=CDLDescription>Catmullrom</td></tr><tr><td class=CDLEntry><a name="GD_GAUSSIAN"></a>GD_GAUSSIAN</td><td class=CDLDescription>Gaussian</td></tr><tr><td class=CDLEntry><a name="GD_GENERALIZED_CUBIC"></a>GD_GENERALIZED_CUBIC</td><td class=CDLDescription>Generalized cubic</td></tr><tr><td class=CDLEntry><a name="GD_HERMITE"></a>GD_HERMITE</td><td class=CDLDescription>Hermite</td></tr><tr><td class=CDLEntry><a name="GD_HAMMING"></a>GD_HAMMING</td><td class=CDLDescription>Hamming</td></tr><tr><td class=CDLEntry><a name="GD_HANNING"></a>GD_HANNING</td><td class=CDLDescription>Hannig</td></tr><tr><td class=CDLEntry><a name="GD_MITCHELL"></a>GD_MITCHELL</td><td class=CDLDescription>Mitchell</td></tr><tr><td class=CDLEntry><a name="GD_NEAREST_NEIGHBOUR"></a>GD_NEAREST_NEIGHBOUR</td><td class=CDLDescription>Nearest neighbour interpolation</td></tr><tr><td class=CDLEntry><a name="GD_POWER"></a>GD_POWER</td><td class=CDLDescription>Power</td></tr><tr><td class=CDLEntry><a name="GD_QUADRATIC"></a>GD_QUADRATIC</td><td class=CDLDescription>Quadratic</td></tr><tr><td class=CDLEntry><a name="GD_SINC"></a>GD_SINC</td><td class=CDLDescription>Sinc</td></tr><tr><td class=CDLEntry><a name="GD_TRIANGLE"></a>GD_TRIANGLE</td><td class=CDLDescription>Triangle</td></tr><tr><td class=CDLEntry><a name="GD_WEIGHTED4"></a>GD_WEIGHTED4</td><td class=CDLDescription>4 pixels weighted bilinear interpolation</td></tr><tr><td class=CDLEntry><a name="GD_LINEAR"></a>GD_LINEAR</td><td class=CDLDescription>bilinear interpolation</td></tr></table><h4 class=CHeading>See also</h4><p>&lt;gdSetInterpolationMethod&gt;</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdImage"></a>gdImage</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdImagePtr"></a>gdImagePtr</h3><div class=CBody><p>The data structure in which gd stores images.&nbsp; <a href="gd-c.html#gdImageCreate" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdImageCreate</a>, <a href="gd-c.html#gdImageCreateTrueColor" class=LFunction id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">gdImageCreateTrueColor</a> 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.</p><p><b>gdImagePtr</b> is a pointer to <b>gdImage</b>.</p><p>(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.&nbsp; If you need to poke at the internals of this struct, feel free to look at <b>gd.h</b>.)</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdPointF"></a>gdPointF</h3><div class=CBody><p>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)</p></div></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdPointFPtr"></a>gdPointFPtr</h3><div class=CBody><p>Pointer to a <a href="#gdPointF" class=LType id=link8 onMouseOver="ShowTip(event, 'tt1', 'link8')" onMouseOut="HideTip('tt1')">gdPointF</a></p><h4 class=CHeading>See also</h4><p><a href="gd-c.html#gdImageCreate" class=LFunction id=link9 onMouseOver="ShowTip(event, 'tt6', 'link9')" onMouseOut="HideTip('tt6')">gdImageCreate</a>, <a href="gd-c.html#gdImageCreateTrueColor" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt7', 'link10')" onMouseOut="HideTip('tt7')">gdImageCreateTrueColor</a>,</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdFont"></a>gdFont</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdFontPtr"></a>gdFontPtr</h3><div class=CBody><p>A font structure, containing the bitmaps of all characters in a font.&nbsp; Used to declare the characteristics of a font.&nbsp; Text-output functions expect these as their second argument, following the <a href="#gdImagePtr" class=LType id=link11 onMouseOver="ShowTip(event, 'tt8', 'link11')" onMouseOut="HideTip('tt8')">gdImagePtr</a> argument.&nbsp; &lt;gdFontSmall&gt; and <a href="gdfontl-c.html#gdFontGetLarge" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt9', 'link12')" onMouseOut="HideTip('tt9')">gdFontGetLarge</a> both return one.</p><p>You can provide your own font data by providing such a structure and the associated pixel array.&nbsp; You can determine the width and height of a single character in a font by examining the w and h members of the structure.&nbsp; 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.</p><p>Please see the files gdfontl.c and gdfontl.h for an example of the proper declaration of this structure.</p><blockquote><pre>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;</pre></blockquote><p>gdFontPtr is a pointer to gdFont.</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdSource"></a>gdSource</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdSourcePtr"></a>gdSourcePtr</h3><div class=CBody><p><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility.&nbsp; Use <a href="gd_io-h.html#gdIOCtx" class=LType id=link13 onMouseOver="ShowTip(event, 'tt10', 'link13')" onMouseOut="HideTip('tt10')">gdIOCtx</a> instead.</p><p>Represents a source from which a PNG can be read.&nbsp; Programmers who do not wish to read PNGs from a file can provide their own alternate input mechanism, using the <a href="gd_ss-c.html#gdImageCreateFromPngSource" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt11', 'link14')" onMouseOut="HideTip('tt11')">gdImageCreateFromPngSource</a> function.&nbsp; See the documentation of that function for an example of the proper use of this type.</p><blockquote><pre>typedef struct {
+ int (*source) (void *context, char *buffer, int len);
+ void *context;
+} gdSource, *gdSourcePtr;</pre></blockquote><p>The source function must return -1 on error, otherwise the number of bytes fetched.&nbsp; 0 is EOF, not an error!</p><p>&rsquo;context&rsquo; will be passed to your source function.</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdFTStringExtra"></a>gdFTStringExtra</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdFTStringExtraPtr"></a>gdFTStringExtraPtr</h3><div class=CBody><p>A structure and associated pointer type used to pass additional parameters to the <a href="gdft-c.html#gdImageStringFTEx" class=LFunction id=link15 onMouseOver="ShowTip(event, 'tt2', 'link15')" onMouseOut="HideTip('tt2')">gdImageStringFTEx</a> function.&nbsp; See <a href="gdft-c.html#gdImageStringFTEx" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt2', 'link16')" onMouseOut="HideTip('tt2')">gdImageStringFTEx</a> for the structure definition.</p><p>Thanks to Wez Furlong.</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdPoint"></a>gdPoint</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdPointPtr"></a>gdPointPtr</h3><div class=CBody><p>Represents a point in the coordinate space of the image; used by <a href="gd-c.html#gdImagePolygon" class=LFunction id=link17 onMouseOver="ShowTip(event, 'tt3', 'link17')" onMouseOut="HideTip('tt3')">gdImagePolygon</a>, <a href="gd-c.html#gdImageOpenPolygon" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt4', 'link18')" onMouseOut="HideTip('tt4')">gdImageOpenPolygon</a> and <a href="gd-c.html#gdImageFilledPolygon" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt5', 'link19')" onMouseOut="HideTip('tt5')">gdImageFilledPolygon</a> for polygon drawing.</p><blockquote><pre>typedef struct {
+ int x, y;
+} gdPoint, *gdPointPtr;</pre></blockquote></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="GifAnim"></a>GifAnim</h3><div class=CBody><p>Legal values for Disposal. gdDisposalNone is always used by the built-in optimizer if previm is passed.</p></div></div></div>
+
+<div class="CConstant"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnim"></a>gdImageGifAnim</h3><div class=CBody><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry><a name="gdDisposalUnknown"></a>gdDisposalUnknown</td><td class=CDLDescription>Not recommended</td></tr><tr><td class=CDLEntry><a name="gdDisposalNone"></a>gdDisposalNone</td><td class=CDLDescription>Preserve previous frame</td></tr><tr><td class=CDLEntry><a name="gdDisposalRestoreBackground"></a>gdDisposalRestoreBackground</td><td class=CDLDescription>First allocated color of palette</td></tr><tr><td class=CDLEntry><a name="gdDisposalRestorePrevious"></a>gdDisposalRestorePrevious</td><td class=CDLDescription>Restore to before start of frame</td></tr></table><p>See also: <a href="gd_gif_out-c.html#gdImageGifAnimAdd" class=LFunction id=link20 onMouseOver="ShowTip(event, 'tt12', 'link20')" onMouseOut="HideTip('tt12')">gdImageGifAnimAdd</a></p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdSink"></a>gdSink</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdSinkPtr"></a>gdSinkPtr</h3><div class=CBody><p><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility.&nbsp; Use <a href="gd_io-h.html#gdIOCtx" class=LType id=link21 onMouseOver="ShowTip(event, 'tt10', 'link21')" onMouseOut="HideTip('tt10')">gdIOCtx</a> instead.</p><p>Represents a &ldquo;sink&rdquo; (destination) to which a PNG can be written.&nbsp; Programmers who do not wish to write PNGs to a file can provide their own alternate output mechanism, using the <a href="gd_ss-c.html#gdImagePngToSink" class=LFunction id=link22 onMouseOver="ShowTip(event, 'tt13', 'link22')" onMouseOut="HideTip('tt13')">gdImagePngToSink</a> function.&nbsp; See the documentation of that function for an example of the proper use of this type.</p><blockquote><pre>typedef struct {
+ int (*sink) (void *context, char *buffer, int len);
+ void *context;
+} gdSink, *gdSinkPtr;</pre></blockquote><p>The <u>sink</u> function must return -1 on error, otherwise the number of bytes written, which must be equal to len.</p><p><u>context</u> will be passed to your sink function.</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Crop"></a>Crop</h3></div></div>
+
+<div class="CConstant"><div class=CTopic><h3 class=CTitle><a name="gdCropMode"></a>gdCropMode</h3><div class=CBody><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry><a name="GD_CROP_DEFAULT"></a>GD_CROP_DEFAULT</td><td class=CDLDescription>Default crop mode (4 corners or background)</td></tr><tr><td class=CDLEntry><a name="GD_CROP_TRANSPARENT"></a>GD_CROP_TRANSPARENT</td><td class=CDLDescription>Crop using the transparent color</td></tr><tr><td class=CDLEntry><a name="GD_CROP_BLACK"></a>GD_CROP_BLACK</td><td class=CDLDescription>Crop black borders</td></tr><tr><td class=CDLEntry><a name="GD_CROP_WHITE"></a>GD_CROP_WHITE</td><td class=CDLDescription>Crop white borders</td></tr><tr><td class=CDLEntry><a name="GD_CROP_SIDES"></a>GD_CROP_SIDES</td><td class=CDLDescription>Crop using colors of the 4 corners</td></tr></table><h4 class=CHeading>See also</h4><p>&lt;gdImageAutoCrop&gt;</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd.h</div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CType>Defines a point in a 2D coordinate system using floating point values. </div></div><div class=CToolTip id="tt2"><div class=CFunction>gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageOpenPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreate (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreate is called to create palette-based images, with no more than 256 colors. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateTrueColor (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. </div></div><div class=CToolTip id="tt8"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetLarge (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt10"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng for documentation. </div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAdd(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin. </div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngToSink (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>outSink</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_bmp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html
new file mode 100644
index 00000000000..2d0df0c14a4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html
@@ -0,0 +1,53 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_bmp.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_bmp.c"></a>gd_bmp.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_bmp.c" >gd_bmp.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageBmpPtr" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageBmpPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageBmp" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageBmp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageBmpCtx" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageBmpCtx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromBmp" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageCreateFromBmp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromBmpPtr" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdImageCreateFromBmpPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromBmpCtx" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdImageCreateFromBmpCtx</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageBmpPtr"></a>gdImageBmpPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageBmpPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageBmp"></a>gdImageBmp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmp(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageBmpCtx"></a>gdImageBmpCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmpCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromBmp"></a>gdImageCreateFromBmp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmp(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromBmpPtr"></a>gdImageCreateFromBmpPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromBmpCtx"></a>gdImageCreateFromBmpCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_bmp.c</div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageBmpPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmp(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmpCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmp(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_color_map-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html
new file mode 100644
index 00000000000..f642b70c948
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdColorMapLookup</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdColorMapLookup"></a>gdColorMapLookup</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdColorMapLookup(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdColorMap&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color_map,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>color_name,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdColorMapLookup</div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_color_match-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html
new file mode 100644
index 00000000000..783f7b4b725
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdImageColorMatch</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdImageColorMatch"></a>gdImageColorMatch</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorMatch (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Bring the palette colors in im2 to be closer to im1.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdImageColorMatch</div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_crop-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html
new file mode 100644
index 00000000000..d143048b297
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_crop.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_crop.c"></a>gd_crop.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_crop.c" >gd_crop.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCrop" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCrop</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCropAuto" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCropAuto</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCropThreshold" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageCropThreshold</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCrop"></a>gdImageCrop</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCrop(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdRect&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>crop</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCropAuto"></a>gdImageCropAuto</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropAuto(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCropThreshold"></a>gdImageCropThreshold</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropThreshold(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_crop.c</div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCrop(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdRect&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>crop</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropAuto(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropThreshold(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_filename-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html
new file mode 100644
index 00000000000..ab634bab4cc
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filename.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_filename.c"></a>gd_filename.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_filename.c" >gd_filename.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdSupportsFileType" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdSupportsFileType</a></td><td class=SDescription>Tests if a given file type is supported by GD.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromFile" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromFile</a></td><td class=SDescription>Read an image file of any supported.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFile" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageFile</a></td><td class=SDescription>Writes an image to a file in the format indicated by the filename.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdSupportsFileType"></a>gdSupportsFileType</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdSupportsFileType(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>writing</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Tests if a given file type is supported by GD.</p><p>Given the name of an image file (which does not have to exist), returns 1 (i.e.&nbsp; TRUE) if <a href="#gdImageCreateFromFile" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt2', 'link4')" onMouseOut="HideTip('tt2')">gdImageCreateFromFile</a> can read a file of that type.&nbsp; This is useful if you do not know which image types were enabled at compile time.</p><p>If <u>writing</u> is true, the result will be true only if <a href="#gdImageFile" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt3', 'link5')" onMouseOut="HideTip('tt3')">gdImageFile</a> can write a file of this type.</p><p>Note that filename parsing is done exactly the same as is done by <a href="#gdImageCreateFromFile" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt2', 'link6')" onMouseOut="HideTip('tt2')">gdImageCreateFromFile</a> and <a href="#gdImageFile" class=LFunction id=link7 onMouseOver="ShowTip(event, 'tt3', 'link7')" onMouseOut="HideTip('tt3')">gdImageFile</a> and is subject to the same limitations.</p><p>Assuming LibGD is compiled with support for these image types, the following extensions are supported:</p><ul><li>.gif</li><li>.gd, .gd2</li><li>.wbmp</li><li>.bmp</li><li>.xbm</li><li>.tga</li><li>.png</li><li>.jpg, .jpeg</li><li>.tiff, .tif</li><li>.webp</li><li>.xpm</li></ul><p>Names are parsed case-insenstively.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>filename</td><td class=CDLDescription>Filename with tested extension.</td></tr><tr><td class=CDLEntry>writing</td><td class=CDLDescription>Flag: true tests if writing works</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE (1) if the file type is supported, GD_FALSE (0) if not.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromFile"></a>gdImageCreateFromFile</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromFile(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Read an image file of any supported.</p><p>Given the path to a file, <a href="#gdImageCreateFromFile" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt2', 'link8')" onMouseOut="HideTip('tt2')">gdImageCreateFromFile</a> will open the file, read its contents with the appropriate <u>gdImageCreateFrom*</u> function and return it.</p><p>File type is determined by the filename extension, so having an incorrect extension will probably not work.&nbsp; For example, renaming PNG image &ldquo;foo.png&rdquo; to &ldquo;foo.gif&rdquo; and then attempting to load it will fail even if GD supports both formats.&nbsp; See &lt;gdSupportsFiletype&gt; for more details.</p><p>NULL is returned on error.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>filename</td><td class=CDLDescription>the input file name</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFile"></a>gdImageFile</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageFile(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Writes an image to a file in the format indicated by the filename.</p><p>File type is determined by the extension of the file name.&nbsp; See &lt;gdSupportsFiletype&gt; for an overview of the parsing.</p><p>For file types that require extra arguments, <a href="#gdImageFile" class=LFunction id=link9 onMouseOver="ShowTip(event, 'tt3', 'link9')" onMouseOut="HideTip('tt3')">gdImageFile</a> attempts to use sane defaults:</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>&lt;gdImageGd2&gt;</td><td class=CDLDescription>chunk size = 0, compression is enabled.</td></tr><tr><td class=CDLEntry>&lt;gdImageJpeg&gt;</td><td class=CDLDescription>quality = -1 (i.e. the reasonable default)</td></tr><tr><td class=CDLEntry>&lt;gdImageWBMP&gt;</td><td class=CDLDescription>foreground is the darkest available color</td></tr></table><p>Everything else is called with the two-argument function and so will use the default values.</p><p><a href="#gdImageFile" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt3', 'link10')" onMouseOut="HideTip('tt3')">gdImageFile</a> has some rudimentary error detection and will return GD_FALSE (0) if a detectable error occurred.&nbsp; 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.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to save.</td></tr><tr><td class=CDLEntry>filename</td><td class=CDLDescription>The path to the file to which the image is saved.</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_FALSE (0) if an error was detected, GD_TRUE (1) if not.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_filename.c</div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdSupportsFileType(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>writing</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Tests if a given file type is supported by GD.</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromFile(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Read an image file of any supported.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageFile(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes an image to a file in the format indicated by the filename.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_filter-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html
new file mode 100644
index 00000000000..b41570ca19c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html
@@ -0,0 +1,81 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filter.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_filter.c"></a>gd_filter.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_filter.c" >gd_filter.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageScatter" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageScatter</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageScatterColor" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageScatterColor</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageScatterEx" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageScatterEx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePixelate" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImagePixelate</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageNegate" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdImageNegate</a></td><td class=SDescription>Invert src image.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGrayScale" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdImageGrayScale</a></td><td class=SDescription>Convert the image src to a grayscale image.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageBrightness" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">gdImageBrightness</a></td><td class=SDescription>Set the brightness level &lt;level&gt; for the image src.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageContrast" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">gdImageContrast</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageColor" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">gdImageColor</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageConvolution" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">gdImageConvolution</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSelectiveBlur" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">gdImageSelectiveBlur</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageEdgeDetectQuick" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">gdImageEdgeDetectQuick</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGaussianBlur" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">gdImageGaussianBlur</a></td><td class=SDescription><a href="#gdImageGaussianBlur" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt13', 'link14')" onMouseOut="HideTip('tt13')">gdImageGaussianBlur</a> performs a Gaussian blur of radius 1 on the image. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageEmboss" id=link15 onMouseOver="ShowTip(event, 'tt14', 'link15')" onMouseOut="HideTip('tt14')">gdImageEmboss</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageMeanRemoval" id=link16 onMouseOver="ShowTip(event, 'tt15', 'link16')" onMouseOut="HideTip('tt15')">gdImageMeanRemoval</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSmooth" id=link17 onMouseOver="ShowTip(event, 'tt16', 'link17')" onMouseOut="HideTip('tt16')">gdImageSmooth</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCopyGaussianBlurred" >gdImageCopyGaussianBlurred</a></td><td class=SDescription>Return a copy of the source image <u>src</u> blurred according to the parameters using the Gaussian Blur algorithm.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageScatter"></a>gdImageScatter</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatter(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageScatterColor"></a>gdImageScatterColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colors[],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>num_colors</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageScatterEx"></a>gdImageScatterEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterEx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdScatterPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>scatter</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePixelate"></a>gdImagePixelate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePixelate(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>block_size,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageNegate"></a>gdImageNegate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageNegate(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Invert src image.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGrayScale"></a>gdImageGrayScale</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGrayScale(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Convert the image src to a grayscale image.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageBrightness"></a>gdImageBrightness</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBrightness(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>brightness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set the brightness level &lt;level&gt; for the image src.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageContrast"></a>gdImageContrast</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageContrast(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>contrast</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageColor"></a>gdImageColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>red,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>green,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>blue,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alpha</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageConvolution"></a>gdImageConvolution</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageConvolution(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter[3][3],</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter_div,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>offset</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSelectiveBlur"></a>gdImageSelectiveBlur</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSelectiveBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageEdgeDetectQuick"></a>gdImageEdgeDetectQuick</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEdgeDetectQuick(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGaussianBlur"></a>gdImageGaussianBlur</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGaussianBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageGaussianBlur" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt13', 'link18')" onMouseOut="HideTip('tt13')">gdImageGaussianBlur</a> performs a Gaussian blur of radius 1 on the image.&nbsp; The image is modified in place.</p><p><b>NOTE:</b> You will almost certain want to use <a href="#gdImageCopyGaussianBlurred" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt17', 'link19')" onMouseOut="HideTip('tt17')">gdImageCopyGaussianBlurred</a> instead, as it allows you to change your kernel size and sigma value.&nbsp; Future versions of this function may fall back to calling it instead of <a href="#gdImageConvolution" class=LFunction id=link20 onMouseOver="ShowTip(event, 'tt10', 'link20')" onMouseOut="HideTip('tt10')">gdImageConvolution</a>, causing subtle changes so be warned.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to blur</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE (1) on success, GD_FALSE (0) on failure.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageEmboss"></a>gdImageEmboss</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEmboss(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageMeanRemoval"></a>gdImageMeanRemoval</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageMeanRemoval(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSmooth"></a>gdImageSmooth</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSmooth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>weight</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCopyGaussianBlurred"></a>gdImageCopyGaussianBlurred</h3><div class=CBody><p>Return a copy of the source image <u>src</u> blurred according to the parameters using the Gaussian Blur algorithm.</p><p><u>radius</u> 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).</p><p><u>sigma</u> represents the &ldquo;fatness&rdquo; of the curve (lower == fatter).&nbsp; If <u>sigma</u> is less than or equal to 0, <a href="#gdImageCopyGaussianBlurred" class=LFunction id=link21 onMouseOver="ShowTip(event, 'tt17', 'link21')" onMouseOut="HideTip('tt17')">gdImageCopyGaussianBlurred</a> ignores it and instead computes an &ldquo;optimal&rdquo; value.&nbsp; Be warned that future versions of this function may compute sigma differently.</p><p>The resulting image is always truecolor.</p><h4 class=CHeading>More Details</h4><p>A Gaussian Blur is generated by replacing each pixel&rsquo;s color values with the average of the surrounding pixels&rsquo; colors.&nbsp; This region is a circle whose radius is given by argument <u>radius</u>.&nbsp; Thus, a larger radius will yield a blurrier image.</p><p>This average is not a simple mean of the values.&nbsp; 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.&nbsp; Thus, a fatter curve will give the center pixel more weight and make the image less blurry; lower <u>sigma</u> values will yield flatter curves.</p><p>Currently, <a href="#gdImageCopyGaussianBlurred" class=LFunction id=link22 onMouseOver="ShowTip(event, 'tt17', 'link22')" onMouseOut="HideTip('tt17')">gdImageCopyGaussianBlurred</a> computes the default sigma as</p><p>(2/3)*radius</p><p>Note, however that we reserve the right to change this if we find a better ratio.&nbsp; If you absolutely need the current sigma value, you should set it yourself.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>src</td><td class=CDLDescription>the source image</td></tr><tr><td class=CDLEntry>radius</td><td class=CDLDescription>the blur radius (<b>not</b> diameter--range is 2*radius + 1)</td></tr><tr><td class=CDLEntry>sigma</td><td class=CDLDescription>the sigma value or a value &lt;= 0.0 to use the computed default</td></tr></table><h4 class=CHeading>Returns</h4><p>The new image or NULL if an error occurred.&nbsp; The result is always truecolor.</p><h4 class=CHeading>Example</h4><blockquote><pre>FILE *in;
+gdImagePtr result, src;
+
+in = fopen(&quot;foo.png&quot;, &quot;rb&quot;);
+src = gdImageCreateFromPng(in);
+
+result = gdImageCopyGaussianBlurred(im, src-&gt;sx / 10, -1.0);</pre></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_filter.c</div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatter(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colors[],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>num_colors</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterEx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdScatterPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>scatter</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePixelate(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>block_size,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageNegate(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Invert src image.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGrayScale(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert the image src to a grayscale image.</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBrightness(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>brightness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set the brightness level level for the image src.</div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageContrast(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>contrast</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>red,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>green,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>blue,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alpha</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageConvolution(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter[3][3],</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter_div,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>offset</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSelectiveBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEdgeDetectQuick(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGaussianBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image. </div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEmboss(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageMeanRemoval(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSmooth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>weight</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt17"><div class=CFunction>Return a copy of the source image <u>src</u> blurred according to the parameters using the Gaussian Blur algorithm.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_gd-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html
new file mode 100644
index 00000000000..f9372410373
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html
@@ -0,0 +1,57 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_gd.c"></a>gd_gd.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_gd.c" >gd_gd.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGd" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a></td><td class=SDescription><a href="#gdImageCreateFromGd" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a> is called to load images from gd format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromGdPtr" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageCreateFromGdPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGdCtx" id=link4 onMouseOver="ShowTip(event, 'tt3', 'link4')" onMouseOut="HideTip('tt3')">gdImageCreateFromGdCtx</a></td><td class=SDescription>Reads in a GD image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link5 onMouseOver="ShowTip(event, 'tt4', 'link5')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGd" id=link6 onMouseOver="ShowTip(event, 'tt5', 'link6')" onMouseOut="HideTip('tt5')">gdImageGd</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGdPtr" id=link7 onMouseOver="ShowTip(event, 'tt6', 'link7')" onMouseOut="HideTip('tt6')">gdImageGdPtr</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd"></a>gdImageCreateFromGd</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromGd" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt1', 'link8')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a> is called to load images from gd format files.&nbsp; Invoke <a href="#gdImageCreateFromGd" class=LFunction id=link9 onMouseOver="ShowTip(event, 'tt1', 'link9')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a> 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.&nbsp; (It is not intended for compression; for compression, use PNG or JPEG.)</p><p><a href="#gdImageCreateFromGd" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt1', 'link10')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link11 onMouseOver="ShowTip(event, 'tt7', 'link11')" onMouseOut="HideTip('tt7')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromGd" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt1', 'link12')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a> does not close the file.&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link13 onMouseOver="ShowTip(event, 'tt8', 'link13')" onMouseOut="HideTip('tt8')">gdImageDestroy</a>.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromGdPtr" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt2', 'link14')" onMouseOut="HideTip('tt2')">gdImageCreateFromGdPtr</a> creates an image from GD data (i.e. the contents of a GD file) already in memory.</p><p><a href="#gdImageCreateFromGdCtx" class=LFunction id=link15 onMouseOver="ShowTip(event, 'tt3', 'link15')" onMouseOut="HideTip('tt3')">gdImageCreateFromGdCtx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link16 onMouseOver="ShowTip(event, 'tt4', 'link16')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;mygd.gd&quot;, &quot;rb&quot;);
+im = gdImageCreateFromGd(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGdPtr"></a>gdImageCreateFromGdPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of GD data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>GD data (i.e. contents of a GIF file).</td></tr></table><p>Reads in GD data from memory.&nbsp; See <a href="#gdImageCreateFromGd" class=LFunction id=link17 onMouseOver="ShowTip(event, 'tt1', 'link17')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGdCtx"></a>gdImageCreateFromGdCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdCtx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Reads in a GD image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link18 onMouseOver="ShowTip(event, 'tt4', 'link18')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.&nbsp; See <a href="#gdImageCreateFromGd" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt1', 'link19')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGd"></a>gdImageGd</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGdPtr"></a>gdImageGdPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGdPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_gd.c</div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd is called to load images from gd format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdCtx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt4"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGdPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt7"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_gd2-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html
new file mode 100644
index 00000000000..50046883db8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html
@@ -0,0 +1,63 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd2.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_gd2.c"></a>gd_gd2.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_gd2.c" >gd_gd2.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGd2" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a></td><td class=SDescription><a href="#gdImageCreateFromGd2" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a> is called to load images from gd2 format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromGd2Ptr" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageCreateFromGd2Ptr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGd2Ctx" id=link4 onMouseOver="ShowTip(event, 'tt3', 'link4')" onMouseOut="HideTip('tt3')">gdImageCreateFromGd2Ctx</a></td><td class=SDescription>Reads in a GD2 image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link5 onMouseOver="ShowTip(event, 'tt4', 'link5')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromGd2Part" id=link6 onMouseOver="ShowTip(event, 'tt5', 'link6')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a></td><td class=SDescription><a href="#gdImageCreateFromGd2Part" class=LFunction id=link7 onMouseOver="ShowTip(event, 'tt5', 'link7')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a> is called to load parts of images from gd2 format files. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGd2PartPtr" id=link8 onMouseOver="ShowTip(event, 'tt6', 'link8')" onMouseOut="HideTip('tt6')">gdImageCreateFromGd2PartPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromGd2PartCtx" id=link9 onMouseOver="ShowTip(event, 'tt7', 'link9')" onMouseOut="HideTip('tt7')">gdImageCreateFromGd2PartCtx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGd2" id=link10 onMouseOver="ShowTip(event, 'tt8', 'link10')" onMouseOut="HideTip('tt8')">gdImageGd2</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGd2Ptr" id=link11 onMouseOver="ShowTip(event, 'tt9', 'link11')" onMouseOut="HideTip('tt9')">gdImageGd2Ptr</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2"></a>gdImageCreateFromGd2</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2 (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromGd2" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt1', 'link12')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a> is called to load images from gd2 format files.&nbsp; Invoke <a href="#gdImageCreateFromGd2" class=LFunction id=link13 onMouseOver="ShowTip(event, 'tt1', 'link13')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a> 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.&nbsp; (It is a compressed format, but generally not as good as maximum compression of the entire image would be.)</p><p><a href="#gdImageCreateFromGd2" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt1', 'link14')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link15 onMouseOver="ShowTip(event, 'tt10', 'link15')" onMouseOut="HideTip('tt10')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromGd2" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt1', 'link16')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a> does not close the file.&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link17 onMouseOver="ShowTip(event, 'tt11', 'link17')" onMouseOut="HideTip('tt11')">gdImageDestroy</a>.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromGd2Ptr" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt2', 'link18')" onMouseOut="HideTip('tt2')">gdImageCreateFromGd2Ptr</a> creates an image from GD data (i.e. the contents of a GD2 file) already in memory.</p><p><a href="#gdImageCreateFromGd2Ctx" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt3', 'link19')" onMouseOut="HideTip('tt3')">gdImageCreateFromGd2Ctx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link20 onMouseOver="ShowTip(event, 'tt4', 'link20')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;mygd.gd2&quot;, &quot;rb&quot;);
+im = gdImageCreateFromGd2(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2Ptr"></a>gdImageCreateFromGd2Ptr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ptr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of GD2 data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>GD2 data (i.e. contents of a GIF file).</td></tr></table><p>See <a href="#gdImageCreateFromGd2" class=LFunction id=link21 onMouseOver="ShowTip(event, 'tt1', 'link21')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2Ctx"></a>gdImageCreateFromGd2Ctx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ctx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Reads in a GD2 image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link22 onMouseOver="ShowTip(event, 'tt4', 'link22')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.&nbsp; See <a href="#gdImageCreateFromGd2" class=LFunction id=link23 onMouseOver="ShowTip(event, 'tt1', 'link23')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2Part"></a>gdImageCreateFromGd2Part</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Part (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromGd2Part" class=LFunction id=link24 onMouseOver="ShowTip(event, 'tt5', 'link24')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a> is called to load parts of images from gd2 format files.&nbsp; Invoked in the same way as <a href="#gdImageCreateFromGd2" class=LFunction id=link25 onMouseOver="ShowTip(event, 'tt1', 'link25')" onMouseOut="HideTip('tt1')">gdImageCreateFromGd2</a>, but with extra parameters indicating the source (x, y) and width/height of the desired image.&nbsp; <a href="#gdImageCreateFromGd2Part" class=LFunction id=link26 onMouseOver="ShowTip(event, 'tt5', 'link26')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link27 onMouseOver="ShowTip(event, 'tt10', 'link27')" onMouseOut="HideTip('tt10')">gdImagePtr</a> to the new image, or NULL if unable to load the image.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link28 onMouseOver="ShowTip(event, 'tt11', 'link28')" onMouseOut="HideTip('tt11')">gdImageDestroy</a>.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromGd2PartPtr" class=LFunction id=link29 onMouseOver="ShowTip(event, 'tt6', 'link29')" onMouseOut="HideTip('tt6')">gdImageCreateFromGd2PartPtr</a> creates an image from GD2 data (i.e. the contents of a GD2 file) already in memory.</p><p><a href="#gdImageCreateFromGd2Ctx" class=LFunction id=link30 onMouseOver="ShowTip(event, 'tt3', 'link30')" onMouseOut="HideTip('tt3')">gdImageCreateFromGd2Ctx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link31 onMouseOver="ShowTip(event, 'tt4', 'link31')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer</td></tr><tr><td class=CDLEntry>srcx, srcy</td><td class=CDLDescription>The source X and Y coordinates</td></tr><tr><td class=CDLEntry>w, h</td><td class=CDLDescription>The resulting image&rsquo;s width and height</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2PartPtr"></a>gdImageCreateFromGd2PartPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of GD data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>GD data (i.e. contents of a GIF file).</td></tr><tr><td class=CDLEntry>srcx, srcy</td><td class=CDLDescription>The source X and Y coordinates</td></tr><tr><td class=CDLEntry>w, h</td><td class=CDLDescription>The resulting image&rsquo;s width and height</td></tr></table><p>Reads in part of a GD2 image file stored from memory.&nbsp; See <a href="#gdImageCreateFromGd2Part" class=LFunction id=link32 onMouseOver="ShowTip(event, 'tt5', 'link32')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGd2PartCtx"></a>gdImageCreateFromGd2PartCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>in,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>in</td><td class=CDLDescription>The data source.</td></tr><tr><td class=CDLEntry>srcx, srcy</td><td class=CDLDescription>The source X and Y coordinates</td></tr><tr><td class=CDLEntry>w, h</td><td class=CDLDescription>The resulting image&rsquo;s width and height</td></tr></table><p>Reads in part of a GD2 data image file via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link33 onMouseOver="ShowTip(event, 'tt4', 'link33')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.&nbsp; See <a href="#gdImageCreateFromGd2Part" class=LFunction id=link34 onMouseOver="ShowTip(event, 'tt5', 'link34')" onMouseOut="HideTip('tt5')">gdImageCreateFromGd2Part</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGd2"></a>gdImageGd2</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd2 (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGd2Ptr"></a>gdImageGd2Ptr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGd2Ptr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_gd2.c</div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2 (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2 is called to load images from gd2 format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ptr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ctx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD2 image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt4"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Part (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>in,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd2 (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGd2Ptr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt10"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_gif_in-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html
new file mode 100644
index 00000000000..8772d80a40f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html
@@ -0,0 +1,54 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_in.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_gif_in.c"></a>gd_gif_in.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_gif_in.c" >gd_gif_in.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGif" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a></td><td class=SDescription><a href="#gdImageCreateFromGif" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a> is called to load images from GIF format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromGifPtr" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageCreateFromGifPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromGifCtx" id=link4 onMouseOver="ShowTip(event, 'tt3', 'link4')" onMouseOut="HideTip('tt3')">gdImageCreateFromGifCtx</a></td><td class=SDescription>See <a href="#gdImageCreateFromGif" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt1', 'link5')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a>.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGif"></a>gdImageCreateFromGif</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGif(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fdFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromGif" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt1', 'link6')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a> is called to load images from GIF format files.&nbsp; Invoke <a href="#gdImageCreateFromGif" class=LFunction id=link7 onMouseOver="ShowTip(event, 'tt1', 'link7')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a> with an already opened pointer to a file containing the desired image.</p><p><a href="#gdImageCreateFromGif" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt1', 'link8')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link9 onMouseOver="ShowTip(event, 'tt4', 'link9')" onMouseOut="HideTip('tt4')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromGif" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt1', 'link10')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a> does not close the file.&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link11 onMouseOver="ShowTip(event, 'tt5', 'link11')" onMouseOut="HideTip('tt5')">gdImageDestroy</a>.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromGifPtr" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt2', 'link12')" onMouseOut="HideTip('tt2')">gdImageCreateFromGifPtr</a> creates an image from GIF data (i.e. the contents of a GIF file) already in memory.</p><p><a href="#gdImageCreateFromGifCtx" class=LFunction id=link13 onMouseOver="ShowTip(event, 'tt3', 'link13')" onMouseOut="HideTip('tt3')">gdImageCreateFromGifCtx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link14 onMouseOver="ShowTip(event, 'tt6', 'link14')" onMouseOut="HideTip('tt6')">gdIOCtx</a> struct.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+... inside a function ...
+FILE *in;
+in = fopen(&quot;mygif.gif&quot;, &quot;rb&quot;);
+im = gdImageCreateFromGif(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGifPtr"></a>gdImageCreateFromGifPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of GIF data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>GIF data (i.e. contents of a GIF file).</td></tr></table><p>See <a href="#gdImageCreateFromGif" class=LFunction id=link15 onMouseOver="ShowTip(event, 'tt1', 'link15')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromGifCtx"></a>gdImageCreateFromGifCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromGif" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt1', 'link16')" onMouseOut="HideTip('tt1')">gdImageCreateFromGif</a>.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_gif_in.c</div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGif(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fdFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGif is called to load images from GIF format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromGif.</div></div><div class=CToolTip id="tt4"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><div class=CToolTip id="tt6"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_gif_out-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html
new file mode 100644
index 00000000000..8a8c8d8a510
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html
@@ -0,0 +1,124 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_out.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_gif_out.c"></a>gd_gif_out.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_gif_out.c" >gd_gif_out.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifPtr" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageGifPtr</a></td><td class=SDescription>Identical to <a href="#gdImageGif" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageGif</a> except that it returns a pointer to a memory area with the GIF data. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGif" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageGif</a></td><td class=SDescription><a href="#gdImageGif" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt2', 'link4')" onMouseOut="HideTip('tt2')">gdImageGif</a> outputs the specified image to the specified file in GIF format. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifCtx" id=link5 onMouseOver="ShowTip(event, 'tt3', 'link5')" onMouseOut="HideTip('tt3')">gdImageGifCtx</a></td><td class=SDescription>Writes a GIF image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link6 onMouseOver="ShowTip(event, 'tt4', 'link6')" onMouseOut="HideTip('tt4')">gdIOCtx</a>. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGifAnimBeginPtr" id=link7 onMouseOver="ShowTip(event, 'tt5', 'link7')" onMouseOut="HideTip('tt5')">gdImageGifAnimBeginPtr</a></td><td class=SDescription>Like <a href="#gdImageGifAnimBegin" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt6', 'link8')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a> except that it outputs to a memory buffer. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifAnimBegin" id=link9 onMouseOver="ShowTip(event, 'tt6', 'link9')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a></td><td class=SDescription>This function must be called as the first function when creating a GIF animation. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGifAnimBeginCtx" id=link10 onMouseOver="ShowTip(event, 'tt7', 'link10')" onMouseOut="HideTip('tt7')">gdImageGifAnimBeginCtx</a></td><td class=SDescription>Like <a href="#gdImageGifAnimBegin" class=LFunction id=link11 onMouseOver="ShowTip(event, 'tt6', 'link11')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a> except that it outputs to <a href="gd_io-h.html#gdIOCtx" class=LType id=link12 onMouseOver="ShowTip(event, 'tt4', 'link12')" onMouseOut="HideTip('tt4')">gdIOCtx</a>. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifAnimAddPtr" id=link13 onMouseOver="ShowTip(event, 'tt8', 'link13')" onMouseOut="HideTip('tt8')">gdImageGifAnimAddPtr</a></td><td class=SDescription>Like <a href="#gdImageGifAnimAdd" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt9', 'link14')" onMouseOut="HideTip('tt9')">gdImageGifAnimAdd</a> (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGifAnimAdd" id=link15 onMouseOver="ShowTip(event, 'tt9', 'link15')" onMouseOut="HideTip('tt9')">gdImageGifAnimAdd</a></td><td class=SDescription>This function writes GIF animation frames to GIF animation, which was initialized with <a href="#gdImageGifAnimBegin" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt6', 'link16')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifAnimAddCtx" id=link17 onMouseOver="ShowTip(event, 'tt10', 'link17')" onMouseOut="HideTip('tt10')">gdImageGifAnimAddCtx</a></td><td class=SDescription>Adds an animation frame via a &lt;gdIOCtxPtr&gt;. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGifAnimEnd" id=link18 onMouseOver="ShowTip(event, 'tt11', 'link18')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a></td><td class=SDescription>Terminates the GIF file properly.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGifAnimEndPtr" id=link19 onMouseOver="ShowTip(event, 'tt12', 'link19')" onMouseOut="HideTip('tt12')">gdImageGifAnimEndPtr</a></td><td class=SDescription>Like <a href="#gdImageGifAnimEnd" class=LFunction id=link20 onMouseOver="ShowTip(event, 'tt11', 'link20')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a> (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageGifAnimEndCtx" id=link21 onMouseOver="ShowTip(event, 'tt13', 'link21')" onMouseOut="HideTip('tt13')">gdImageGifAnimEndCtx</a></td><td class=SDescription>Like <a href="#gdImageGifAnimEnd" class=LFunction id=link22 onMouseOver="ShowTip(event, 'tt11', 'link22')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a>, but writes its data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link23 onMouseOver="ShowTip(event, 'tt4', 'link23')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifPtr"></a>gdImageGifPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Identical to <a href="#gdImageGif" class=LFunction id=link24 onMouseOver="ShowTip(event, 'tt2', 'link24')" onMouseOut="HideTip('tt2')">gdImageGif</a> except that it returns a pointer to a memory area with the GIF data.&nbsp; This memory must be freed by the caller when it is no longer needed.</p><p>The caller <b>must</b> invoke <a href="gdhelpers-c.html#gdFree" class=LFunction id=link25 onMouseOver="ShowTip(event, 'tt14', 'link25')" onMouseOut="HideTip('tt14')">gdFree</a>, not <u>free()</u>.&nbsp; This is because it is not guaranteed that libgd will use the same implementation of malloc, free, etc. as your proggram.</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to write</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: the size of the resulting image.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the GIF data or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGif"></a>gdImageGif</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGif(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageGif" class=LFunction id=link26 onMouseOver="ShowTip(event, 'tt2', 'link26')" onMouseOut="HideTip('tt2')">gdImageGif</a> outputs the specified image to the specified file in GIF format.&nbsp; The file must be open for binary writing.&nbsp; (Under MSDOS and all versions of Windows, it is important to use &ldquo;wb&rdquo; as opposed to simply &ldquo;w&rdquo; as the mode when opening the file; under Unix there is no penalty for doing so).&nbsp; <a href="#gdImageGif" class=LFunction id=link27 onMouseOver="ShowTip(event, 'tt2', 'link27')" onMouseOut="HideTip('tt2')">gdImageGif</a> does not close the file; your code must do so.</p><p>GIF does not support true color; GIF images can contain a maximum of 256 colors.&nbsp; 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 <a href="gd_topal-c.html#gdImageCreatePaletteFromTrueColor" class=LFunction id=link28 onMouseOver="ShowTip(event, 'tt15', 'link28')" onMouseOut="HideTip('tt15')">gdImageCreatePaletteFromTrueColor</a> function.&nbsp; The original image pixels are not modified.&nbsp; This conversion produces high quality palettes but does require some CPU time.&nbsp; 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.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageGifCtx" class=LFunction id=link29 onMouseOver="ShowTip(event, 'tt3', 'link29')" onMouseOut="HideTip('tt3')">gdImageGifCtx</a> outputs the image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link30 onMouseOver="ShowTip(event, 'tt4', 'link30')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><p><a href="#gdImageGifPtr" class=LFunction id=link31 onMouseOver="ShowTip(event, 'tt1', 'link31')" onMouseOut="HideTip('tt1')">gdImageGifPtr</a> stores the image in a large array of bytes.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to write</td></tr><tr><td class=CDLEntry>outFile</td><td class=CDLDescription>The FILE pointer to write the image to.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing</p><h4 class=CHeading>Example</h4><blockquote><pre>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(&quot;rect.gif&quot;, &quot;wb&quot;);
+// Write GIF
+gdImageGif(im, out);
+// Close file
+fclose(out);
+// Destroy image
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifCtx"></a>gdImageGifCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Writes a GIF image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link32 onMouseOver="ShowTip(event, 'tt4', 'link32')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.&nbsp; See <a href="#gdImageGif" class=LFunction id=link33 onMouseOver="ShowTip(event, 'tt2', 'link33')" onMouseOut="HideTip('tt2')">gdImageGif</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to write</td></tr><tr><td class=CDLEntry>out</td><td class=CDLDescription>The <a href="gd_io-h.html#gdIOCtx" class=LType id=link34 onMouseOver="ShowTip(event, 'tt4', 'link34')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct used to do the writing.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimBeginPtr"></a>gdImageGifAnimBeginPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimBeginPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Like <a href="#gdImageGifAnimBegin" class=LFunction id=link35 onMouseOver="ShowTip(event, 'tt6', 'link35')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a> except that it outputs to a memory buffer.&nbsp; See <a href="#gdImageGifAnimBegin" class=LFunction id=link36 onMouseOver="ShowTip(event, 'tt6', 'link36')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>.</p><p>The returned memory must be freed by the caller when it is no longer needed.&nbsp; **The caller must invoke &lt;gdFree&gt;(), 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&rsquo;t; it could always change).</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The reference image</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: the size in bytes of the result.</td></tr><tr><td class=CDLEntry>GlobalCM</td><td class=CDLDescription>Global colormap flag: 1 -&gt; yes, 0 -&gt; no, -1 -&gt; do default</td></tr><tr><td class=CDLEntry>Loops</td><td class=CDLDescription>Loop count; 0 -&gt; infinite, -1 means no loop</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the resulting data (the contents of the start of the GIF) or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimBegin"></a>gdImageGifAnimBegin</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBegin(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function must be called as the first function when creating a GIF animation.&nbsp; It writes the correct GIF file headers to selected file output, and prepares for frames to be added for the animation.&nbsp; 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.&nbsp; <a href="#gdImageGifAnimAdd" class=LFunction id=link37 onMouseOver="ShowTip(event, 'tt9', 'link37')" onMouseOut="HideTip('tt9')">gdImageGifAnimAdd</a> 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.</p><p>The GlobalCM flag indicates if a global color map (or palette) is used in the GIF89A header.&nbsp; A nonzero value specifies that a global color map should be used to reduce the size of the animation.&nbsp; Of course, if the color maps of individual frames differ greatly, a global color map may not be a good idea.&nbsp; 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.</p><p>If Loops is 0 or greater, the Netscape 2.0 extension for animation loop count is written.&nbsp; 0 means infinite loop count.&nbsp; -1 means that the extension is not added which results in no looping.&nbsp; -1 is the default.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageGifAnimBeginCtx" class=LFunction id=link38 onMouseOver="ShowTip(event, 'tt7', 'link38')" onMouseOut="HideTip('tt7')">gdImageGifAnimBeginCtx</a> outputs the image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link39 onMouseOver="ShowTip(event, 'tt4', 'link39')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><p><a href="#gdImageGifAnimBeginPtr" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt5', 'link40')" onMouseOut="HideTip('tt5')">gdImageGifAnimBeginPtr</a> stores the image in a large array of bytes.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The reference image</td></tr><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>The output FILE*.</td></tr><tr><td class=CDLEntry>GlobalCM</td><td class=CDLDescription>Global colormap flag: 1 -&gt; yes, 0 -&gt; no, -1 -&gt; do default</td></tr><tr><td class=CDLEntry>Loops</td><td class=CDLDescription>Loop count; 0 -&gt; infinite, -1 means no loop</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p><h4 class=CHeading>Example</h4><p>See <a href="#gdImageGifAnimBegin" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt6', 'link41')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimBeginCtx"></a>gdImageGifAnimBeginCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBeginCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Like <a href="#gdImageGifAnimBegin" class=LFunction id=link42 onMouseOver="ShowTip(event, 'tt6', 'link42')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a> except that it outputs to <a href="gd_io-h.html#gdIOCtx" class=LType id=link43 onMouseOver="ShowTip(event, 'tt4', 'link43')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.&nbsp; See <a href="#gdImageGifAnimBegin" class=LFunction id=link44 onMouseOver="ShowTip(event, 'tt6', 'link44')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The reference image</td></tr><tr><td class=CDLEntry>out</td><td class=CDLDescription>Pointer to the output <a href="gd_io-h.html#gdIOCtx" class=LType id=link45 onMouseOver="ShowTip(event, 'tt4', 'link45')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.</td></tr><tr><td class=CDLEntry>GlobalCM</td><td class=CDLDescription>Global colormap flag: 1 -&gt; yes, 0 -&gt; no, -1 -&gt; do default</td></tr><tr><td class=CDLEntry>Loops</td><td class=CDLDescription>Loop count; 0 -&gt; infinite, -1 means no loop</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimAddPtr"></a>gdImageGifAnimAddPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimAddPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Like <a href="#gdImageGifAnimAdd" class=LFunction id=link46 onMouseOver="ShowTip(event, 'tt9', 'link46')" onMouseOut="HideTip('tt9')">gdImageGifAnimAdd</a> (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</p><p>This memory must be freed by the caller when it is no longer needed.&nbsp; **The caller must invoke &lt;gdFree&gt;(), 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&rsquo;t; it could always change).</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to add.</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: the size of the resulting buffer.</td></tr><tr><td class=CDLEntry>LocalCM</td><td class=CDLDescription>Flag.&nbsp; If 1, use a local color map for this frame.</td></tr><tr><td class=CDLEntry>LeftOfs</td><td class=CDLDescription>Left offset of image in frame.</td></tr><tr><td class=CDLEntry>TopOfs</td><td class=CDLDescription>Top offset of image in frame.</td></tr><tr><td class=CDLEntry>Delay</td><td class=CDLDescription>Delay before next frame (in 1/100 seconds)</td></tr><tr><td class=CDLEntry>Disposal</td><td class=CDLDescription>MODE: How to treat this frame when the next one loads.</td></tr><tr><td class=CDLEntry>previm</td><td class=CDLDescription>NULL or a pointer to the previous image written.</td></tr></table><h4 class=CHeading>Returns</h4><p>Pointer to the resulting data or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimAdd"></a>gdImageGifAnimAdd</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAdd(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function writes GIF animation frames to GIF animation, which was initialized with <a href="#gdImageGifAnimBegin" class=LFunction id=link47 onMouseOver="ShowTip(event, 'tt6', 'link47')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>.&nbsp; With <u>LeftOfs</u> and <u>TopOfs</u> you can place this frame in different offset than (0,0) inside the image screen as defined in <a href="#gdImageGifAnimBegin" class=LFunction id=link48 onMouseOver="ShowTip(event, 'tt6', 'link48')" onMouseOut="HideTip('tt6')">gdImageGifAnimBegin</a>.&nbsp; Delay between the previous frame and this frame is in 1/100s units.&nbsp; <u>Disposal</u> is usually <a href="gd-h.html#gdDisposalNone" class=LConstant id=link49 onMouseOver="ShowTip(event, 'tt16', 'link49')" onMouseOut="HideTip('tt16')">gdDisposalNone</a>, meaning that the pixels changed by this frame should remain on the display when the next frame begins to render, but can also be <a href="gd-h.html#gdDisposalUnknown" class=LConstant id=link50 onMouseOver="ShowTip(event, 'tt17', 'link50')" onMouseOut="HideTip('tt17')">gdDisposalUnknown</a> (not recommended), <a href="gd-h.html#gdDisposalRestoreBackground" class=LConstant id=link51 onMouseOver="ShowTip(event, 'tt18', 'link51')" onMouseOut="HideTip('tt18')">gdDisposalRestoreBackground</a> (restores the first allocated color of the global palette), or <a href="gd-h.html#gdDisposalRestorePrevious" class=LConstant id=link52 onMouseOver="ShowTip(event, 'tt19', 'link52')" onMouseOut="HideTip('tt19')">gdDisposalRestorePrevious</a> (restores the appearance of the affected area before the frame was rendered).&nbsp; Only <a href="gd-h.html#gdDisposalNone" class=LConstant id=link53 onMouseOver="ShowTip(event, 'tt16', 'link53')" onMouseOut="HideTip('tt16')">gdDisposalNone</a> is a sensible choice for the first frame.&nbsp; If <u>previm</u> is passed, the built-in GIF optimizer will always use <a href="gd-h.html#gdDisposalNone" class=LConstant id=link54 onMouseOver="ShowTip(event, 'tt16', 'link54')" onMouseOut="HideTip('tt16')">gdDisposalNone</a> regardless of the Disposal parameter.</p><p>Setting the <u>LocalCM</u> flag to 1 adds a local palette for this image to the animation.&nbsp; Otherwise the global palette is assumed and the user must make sure the palettes match.&nbsp; Use <a href="gd-c.html#gdImagePaletteCopy" class=LFunction id=link55 onMouseOver="ShowTip(event, 'tt20', 'link55')" onMouseOut="HideTip('tt20')">gdImagePaletteCopy</a> to do that.</p><p>Automatic optimization is activated by giving the previous image as a parameter.&nbsp; This function then compares the images and only writes the changed pixels to the new frame in animation.&nbsp; The <u>Disposal</u> parameter for optimized animations must be set to 1, also for the first frame.&nbsp; <u>LeftOfs</u> and <u>TopOfs</u> parameters are ignored for optimized frames.&nbsp; To achieve good optimization, it is usually best to use a single global color map.&nbsp; To allow <a href="#gdImageGifAnimAdd" class=LFunction id=link56 onMouseOver="ShowTip(event, 'tt9', 'link56')" onMouseOut="HideTip('tt9')">gdImageGifAnimAdd</a> to compress unchanged pixels via the use of a transparent color, the image must include a transparent color.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageGifAnimAddCtx" class=LFunction id=link57 onMouseOver="ShowTip(event, 'tt10', 'link57')" onMouseOut="HideTip('tt10')">gdImageGifAnimAddCtx</a> outputs its data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link58 onMouseOver="ShowTip(event, 'tt4', 'link58')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><p><a href="#gdImageGifAnimAddPtr" class=LFunction id=link59 onMouseOver="ShowTip(event, 'tt8', 'link59')" onMouseOut="HideTip('tt8')">gdImageGifAnimAddPtr</a> outputs its data to a memory buffer which it returns.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to add.</td></tr><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>The output FILE* being written.</td></tr><tr><td class=CDLEntry>LocalCM</td><td class=CDLDescription>Flag.&nbsp; If 1, use a local color map for this frame.</td></tr><tr><td class=CDLEntry>LeftOfs</td><td class=CDLDescription>Left offset of image in frame.</td></tr><tr><td class=CDLEntry>TopOfs</td><td class=CDLDescription>Top offset of image in frame.</td></tr><tr><td class=CDLEntry>Delay</td><td class=CDLDescription>Delay before next frame (in 1/100 seconds)</td></tr><tr><td class=CDLEntry>Disposal</td><td class=CDLDescription>MODE: How to treat this frame when the next one loads.</td></tr><tr><td class=CDLEntry>previm</td><td class=CDLDescription>NULL or a pointer to the previous image written.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p><h4 class=CHeading>Example</h4><blockquote><pre>{
+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(&quot;anim.gif&quot;, &quot;wb&quot;);// 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);
+}</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimAddCtx"></a>gdImageGifAnimAddCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAddCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds an animation frame via a &lt;gdIOCtxPtr&gt;.&nbsp; See gdImageGifAnimAdd&gt;.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to add.</td></tr><tr><td class=CDLEntry>out</td><td class=CDLDescription>The output &lt;gdIOCtxPtr&gt;.</td></tr><tr><td class=CDLEntry>LocalCM</td><td class=CDLDescription>Flag.&nbsp; If 1, use a local color map for this frame.</td></tr><tr><td class=CDLEntry>LeftOfs</td><td class=CDLDescription>Left offset of image in frame.</td></tr><tr><td class=CDLEntry>TopOfs</td><td class=CDLDescription>Top offset of image in frame.</td></tr><tr><td class=CDLEntry>Delay</td><td class=CDLDescription>Delay before next frame (in 1/100 seconds)</td></tr><tr><td class=CDLEntry>Disposal</td><td class=CDLDescription>MODE: How to treat this frame when the next one loads.</td></tr><tr><td class=CDLEntry>previm</td><td class=CDLDescription>NULL or a pointer to the previous image written.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimEnd"></a>gdImageGifAnimEnd</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEnd(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Terminates the GIF file properly.</p><p>(Previous versions of this function&rsquo;s documentation suggested just manually writing a semicolon (&lsquo;;&rsquo;) instead since that is all this function does.&nbsp; While that has no longer changed, we now suggest that you do not do this and instead always call <a href="#gdImageGifAnimEnd" class=LFunction id=link60 onMouseOver="ShowTip(event, 'tt11', 'link60')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a> (or equivalent) since later versions could possibly do more or different things.)</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageGifAnimEndCtx" class=LFunction id=link61 onMouseOver="ShowTip(event, 'tt13', 'link61')" onMouseOut="HideTip('tt13')">gdImageGifAnimEndCtx</a> outputs its data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link62 onMouseOver="ShowTip(event, 'tt4', 'link62')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><p><a href="#gdImageGifAnimEndPtr" class=LFunction id=link63 onMouseOver="ShowTip(event, 'tt12', 'link63')" onMouseOut="HideTip('tt12')">gdImageGifAnimEndPtr</a> outputs its data to a memory buffer which it returns.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>the destination FILE*.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimEndPtr"></a>gdImageGifAnimEndPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimEndPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Like <a href="#gdImageGifAnimEnd" class=LFunction id=link64 onMouseOver="ShowTip(event, 'tt11', 'link64')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a> (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</p><p>This memory must be freed by the caller when it is no longer needed.&nbsp; **The caller must invoke &lt;gdFree&gt;(), 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&rsquo;t; it could always change).</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: the size of the resulting buffer.</td></tr></table><h4 class=CHeading>Returns</h4><p>Pointer to the resulting data or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGifAnimEndCtx"></a>gdImageGifAnimEndCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEndCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Like <a href="#gdImageGifAnimEnd" class=LFunction id=link65 onMouseOver="ShowTip(event, 'tt11', 'link65')" onMouseOut="HideTip('tt11')">gdImageGifAnimEnd</a>, but writes its data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link66 onMouseOver="ShowTip(event, 'tt4', 'link66')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>out</td><td class=CDLDescription>the destination <a href="gd_io-h.html#gdIOCtx" class=LType id=link67 onMouseOver="ShowTip(event, 'tt4', 'link67')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_gif_out.c</div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGif(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGif outputs the specified image to the specified file in GIF format. </div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes a GIF image via a gdIOCtx. </div></div><div class=CToolTip id="tt4"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimBeginPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to a memory buffer. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBegin(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function must be called as the first function when creating a GIF animation. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBeginCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to gdIOCtx. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimAddPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAdd(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin. </div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAddCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Adds an animation frame via a gdIOCtxPtr. </div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEnd(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Terminates the GIF file properly.</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimEndPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEndCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.</div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdFree (</td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ptr</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreatePaletteFromTrueColor (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt16"><div class=CConstant>Preserve previous frame</div></div><div class=CToolTip id="tt17"><div class=CConstant>Not recommended</div></div><div class=CToolTip id="tt18"><div class=CConstant>First allocated color of palette</div></div><div class=CToolTip id="tt19"><div class=CConstant>Restore to before start of frame</div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePaletteCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>to,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>from</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_interpolation-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html
new file mode 100644
index 00000000000..17f72e98d8c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html
@@ -0,0 +1,59 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_interpolation.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_interpolation.c"></a>gd_interpolation.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_interpolation.c" >gd_interpolation.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageScale" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageScale</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageRotateInterpolated" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageRotateInterpolated</a></td><td class=SDescription></td></tr><tr class="SSection"><td class=SEntry><a href="#Affine_transformation" >Affine transformation</a></td><td class=SDescription></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Transform" >Transform</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdTransformAffineGetImage" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdTransformAffineGetImage</a></td><td class=SDescription>Applies an affine transformation to a region and return an image containing the complete transformation.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdTransformAffineCopy" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdTransformAffineCopy</a></td><td class=SDescription>Applies an affine transformation to a region and copy the result in a destination to the given position.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdTransformAffineBoundingBox" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdTransformAffineBoundingBox</a></td><td class=SDescription>Returns the bounding box of an affine transformation applied to a rectangular area &lt;gdRect&gt;</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdImageSetInterpolationMethod" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdImageSetInterpolationMethod</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdImageGetInterpolationMethod" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">gdImageGetInterpolationMethod</a></td><td class=SDescription>Return the interpolation mode set in &lsquo;im&rsquo;. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageScale"></a>gdImageScale</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageScale(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_width,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_height</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageRotateInterpolated"></a>gdImageRotateInterpolated</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageRotateInterpolated(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>bgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CSection"><div class=CTopic><h2 class=CTitle><a name="Affine_transformation"></a>Affine transformation</h2><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#Transform" >Transform</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdTransformAffineGetImage" id=link8 onMouseOver="ShowTip(event, 'tt3', 'link8')" onMouseOut="HideTip('tt3')">gdTransformAffineGetImage</a></td><td class=SDescription>Applies an affine transformation to a region and return an image containing the complete transformation.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdTransformAffineCopy" id=link9 onMouseOver="ShowTip(event, 'tt4', 'link9')" onMouseOut="HideTip('tt4')">gdTransformAffineCopy</a></td><td class=SDescription>Applies an affine transformation to a region and copy the result in a destination to the given position.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdTransformAffineBoundingBox" id=link10 onMouseOver="ShowTip(event, 'tt5', 'link10')" onMouseOut="HideTip('tt5')">gdTransformAffineBoundingBox</a></td><td class=SDescription>Returns the bounding box of an affine transformation applied to a rectangular area &lt;gdRect&gt;</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSetInterpolationMethod" id=link11 onMouseOver="ShowTip(event, 'tt6', 'link11')" onMouseOut="HideTip('tt6')">gdImageSetInterpolationMethod</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageGetInterpolationMethod" id=link12 onMouseOver="ShowTip(event, 'tt7', 'link12')" onMouseOut="HideTip('tt7')">gdImageGetInterpolationMethod</a></td><td class=SDescription>Return the interpolation mode set in &lsquo;im&rsquo;. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Transform"></a>Transform</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdTransformAffineGetImage"></a>gdTransformAffineGetImage</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineGetImage(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src_area,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies an affine transformation to a region and return an image containing the complete transformation.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Pointer to a gdImagePtr to store the created image, NULL when the creation or the transformation failed</td></tr><tr><td class=CDLEntry>src</td><td class=CDLDescription>Source image</td></tr><tr><td class=CDLEntry>src_area</td><td class=CDLDescription>rectangle defining the source region to transform</td></tr><tr><td class=CDLEntry>dstY</td><td class=CDLDescription>Y position in the destination image</td></tr><tr><td class=CDLEntry>affine</td><td class=CDLDescription>The desired affine transformation</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdTransformAffineCopy"></a>gdTransformAffineCopy</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineCopy(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src_region,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies an affine transformation to a region and copy the result in a destination to the given position.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Image to draw the transformed image</td></tr><tr><td class=CDLEntry>src</td><td class=CDLDescription>Source image</td></tr><tr><td class=CDLEntry>dstX</td><td class=CDLDescription>X position in the destination image</td></tr><tr><td class=CDLEntry>dstY</td><td class=CDLDescription>Y position in the destination image</td></tr><tr><td class=CDLEntry>src_area</td><td class=CDLDescription>Rectangular region to rotate in the src image</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdTransformAffineBoundingBox"></a>gdTransformAffineBoundingBox</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineBoundingBox(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>bbox</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the bounding box of an affine transformation applied to a rectangular area &lt;gdRect&gt;</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>src</td><td class=CDLDescription>Rectangular source area for the affine transformation</td></tr><tr><td class=CDLEntry>affine</td><td class=CDLDescription>the affine transformation</td></tr><tr><td class=CDLEntry>bbox</td><td class=CDLDescription>the resulting bounding box</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSetInterpolationMethod"></a>gdImageSetInterpolationMethod</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdInterpolationMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>id</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageGetInterpolationMethod"></a>gdImageGetInterpolationMethod</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdInterpolationMethod gdImageGetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Return the interpolation mode set in &lsquo;im&rsquo;.&nbsp; 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.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_interpolation.c</div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageScale(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_width,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_height</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageRotateInterpolated(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>bgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineGetImage(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src_area,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and return an image containing the complete transformation.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineCopy(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src_region,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and copy the result in a destination to the given position.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineBoundingBox(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>bbox</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the bounding box of an affine transformation applied to a rectangular area gdRect</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdInterpolationMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>id</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdInterpolationMethod gdImageGetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return the interpolation mode set in &lsquo;im&rsquo;. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_io-h.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html
new file mode 100644
index 00000000000..85ca851eec6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html
@@ -0,0 +1,56 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io.h</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_io.h"></a>gd_io.h</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_io.h" >gd_io.h</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Types" >Types</a></td><td class=SDescription></td></tr><tr class="SType SIndent1 SMarked"><td class=SEntry><a href="#gdIOCtx" >gdIOCtx</a></td><td class=SDescription>gdIOCtx structures hold function pointers for doing image IO.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Types"></a>Types</h3></div></div>
+
+<div class="CType"><div class=CTopic><h3 class=CTitle><a name="gdIOCtx"></a>gdIOCtx</h3><div class=CBody><p>gdIOCtx structures hold function pointers for doing image IO.</p><p>Most of the gd functions that read and write files, such as <a href="gd_png-c.html#gdImagePng" class=LFunction id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImagePng</a> also have variants that accept a <a href="#gdIOCtx" class=LType id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdIOCtx</a> structure; see <a href="gd_png-c.html#gdImagePngCtx" class=LFunction id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImagePngCtx</a> and <a href="gd_jpeg-c.html#gdImageCreateFromJpegCtx" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageCreateFromJpegCtx</a>.</p><p>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.&nbsp; 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.&nbsp; These functions must read the number of characters requested unless at the end of the file.</p><p>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.&nbsp; The seek and tell functions are only required in conjunction with the gd2 file format, which supports quick loading of partial images.&nbsp; 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.&nbsp; 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.</p><blockquote><pre>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;</pre></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_io.h</div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePng (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngEx with compression of -1.</div></div><div class=CToolTip id="tt2"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngCtx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngCtxEx with compression of -1. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_io_dp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html
new file mode 100644
index 00000000000..747b62fe2ad
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_dp.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_io_dp.c"></a>gd_io_dp.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_io_dp.c" >gd_io_dp.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdNewDynamicCtx" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdNewDynamicCtx</a></td><td class=SDescription>Return data as a dynamic pointer.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdNewDynamicCtxEx" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdNewDynamicCtxEx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdDPExtractData" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdDPExtractData</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdNewDynamicCtx"></a>gdNewDynamicCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Return data as a dynamic pointer.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdNewDynamicCtxEx"></a>gdNewDynamicCtxEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtxEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>freeOKFlag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdDPExtractData"></a>gdDPExtractData</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdDPExtractData (</td><td class="PTypePrefix prettyprint " nowrap>struct&nbsp;</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_io_dp.c</div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtxEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>freeOKFlag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdDPExtractData (</td><td class="PTypePrefix prettyprint " nowrap>struct&nbsp;</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_io_file-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html
new file mode 100644
index 00000000000..036c3dcd444
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdNewFileCtx</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdNewFileCtx"></a>gdNewFileCtx</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewFileCtx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>f</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Return data as a dynamic pointer.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdNewFileCtx</div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_io_ss-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html
new file mode 100644
index 00000000000..4a247ccc0c7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdNewSSCtx</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdNewSSCtx"></a>gdNewSSCtx</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewSSCtx(</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>snk</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Return data as a dynamic pointer.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdNewSSCtx</div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_jpeg-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html
new file mode 100644
index 00000000000..dd1f8509acf
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html
@@ -0,0 +1,83 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_jpeg.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_jpeg.c"></a>gd_jpeg.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_jpeg.c" >gd_jpeg.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageJpeg" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageJpeg</a></td><td class=SDescription><a href="#gdImageJpeg" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> outputs the specified image to the specified file in JPEG format. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageJpegPtr" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageJpegPtr</a></td><td class=SDescription>Identical to <a href="#gdImageJpeg" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt1', 'link4')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> except that it returns a pointer to a memory area with the JPEG data. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageJpegCtx" id=link5 onMouseOver="ShowTip(event, 'tt3', 'link5')" onMouseOut="HideTip('tt3')">gdImageJpegCtx</a></td><td class=SDescription>Write the image as JPEG data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link6 onMouseOver="ShowTip(event, 'tt4', 'link6')" onMouseOut="HideTip('tt4')">gdIOCtx</a>. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromJpeg" id=link7 onMouseOver="ShowTip(event, 'tt5', 'link7')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a></td><td class=SDescription>See <a href="#gdImageCreateFromJpegEx" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt6', 'link8')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a>.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromJpegEx" id=link9 onMouseOver="ShowTip(event, 'tt6', 'link9')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a></td><td class=SDescription><a href="#gdImageCreateFromJpegEx" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt6', 'link10')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a> is called to load truecolor images from JPEG format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromJpegPtr" id=link11 onMouseOver="ShowTip(event, 'tt7', 'link11')" onMouseOut="HideTip('tt7')">gdImageCreateFromJpegPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromJpegPtrEx" id=link12 onMouseOver="ShowTip(event, 'tt8', 'link12')" onMouseOut="HideTip('tt8')">gdImageCreateFromJpegPtrEx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromJpegCtx" id=link13 onMouseOver="ShowTip(event, 'tt9', 'link13')" onMouseOut="HideTip('tt9')">gdImageCreateFromJpegCtx</a></td><td class=SDescription>See <a href="#gdImageCreateFromJpeg" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt5', 'link14')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a>.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromJpegCtxEx" id=link15 onMouseOver="ShowTip(event, 'tt10', 'link15')" onMouseOut="HideTip('tt10')">gdImageCreateFromJpegCtxEx</a></td><td class=SDescription>See <a href="#gdImageCreateFromJpeg" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt5', 'link16')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a>.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageJpeg"></a>gdImageJpeg</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpeg(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageJpeg" class=LFunction id=link17 onMouseOver="ShowTip(event, 'tt1', 'link17')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> outputs the specified image to the specified file in JPEG format.&nbsp; The file must be open for writing.&nbsp; Under MSDOS and all versions of Windows, it is important to use &ldquo;wb&rdquo; as opposed to simply &ldquo;w&rdquo; as the mode when opening the file, and under Unix there is no penalty for doing so.&nbsp; <a href="#gdImageJpeg" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt1', 'link18')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> does not close the file; your code must do so.</p><p>If <u>quality</u> is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used.&nbsp; Otherwise, for practical purposes, <u>quality</u> should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes.</p><p>If you have set image interlacing using <a href="gd-c.html#gdImageInterlace" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt11', 'link19')" onMouseOut="HideTip('tt11')">gdImageInterlace</a>, this function will interpret that to mean you wish to output a progressive JPEG.&nbsp; 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.&nbsp; Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageJpegCtx" class=LFunction id=link20 onMouseOver="ShowTip(event, 'tt3', 'link20')" onMouseOut="HideTip('tt3')">gdImageJpegCtx</a> stores the image using a <a href="gd_io-h.html#gdIOCtx" class=LType id=link21 onMouseOver="ShowTip(event, 'tt4', 'link21')" onMouseOut="HideTip('tt4')">gdIOCtx</a> struct.</p><p><a href="#gdImageJpegPtr" class=LFunction id=link22 onMouseOver="ShowTip(event, 'tt2', 'link22')" onMouseOut="HideTip('tt2')">gdImageJpegPtr</a> stores the image to RAM.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to save</td></tr><tr><td class=CDLEntry>outFile</td><td class=CDLDescription>The FILE pointer to write to.</td></tr><tr><td class=CDLEntry>quality</td><td class=CDLDescription>Compression quality (0-95, 0 means use the default).</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p><h4 class=CHeading>Example</h4><blockquote><pre>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(&quot;rect.jpg&quot;, &quot;wb&quot;);
+// Write JPEG using default quality
+gdImageJpeg(im, out, -1);
+// Close file
+fclose(out);
+// Destroy image
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageJpegPtr"></a>gdImageJpegPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageJpegPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Identical to <a href="#gdImageJpeg" class=LFunction id=link23 onMouseOver="ShowTip(event, 'tt1', 'link23')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> except that it returns a pointer to a memory area with the JPEG data.&nbsp; This memory must be freed by the caller when it is no longer needed.</p><p>The caller <b>must</b> invoke <a href="gdhelpers-c.html#gdFree" class=LFunction id=link24 onMouseOver="ShowTip(event, 'tt12', 'link24')" onMouseOut="HideTip('tt12')">gdFree</a>, not free().&nbsp; This is because it is not guaranteed that libgd will use the same implementation of malloc, free, etc. as your proggram.</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to write</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: the size of the resulting image.</td></tr><tr><td class=CDLEntry>quality</td><td class=CDLDescription>Compression quality.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the JPEG data or NULL if an error occurred.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageJpegCtx"></a>gdImageJpegCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpegCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Write the image as JPEG data via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link25 onMouseOver="ShowTip(event, 'tt4', 'link25')" onMouseOut="HideTip('tt4')">gdIOCtx</a>.&nbsp; See <a href="#gdImageJpeg" class=LFunction id=link26 onMouseOver="ShowTip(event, 'tt1', 'link26')" onMouseOut="HideTip('tt1')">gdImageJpeg</a> for more details.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>The image to write.</td></tr><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>The output sink.</td></tr><tr><td class=CDLEntry>quality</td><td class=CDLDescription>Image quality.</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpeg"></a>gdImageCreateFromJpeg</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpeg(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromJpegEx" class=LFunction id=link27 onMouseOver="ShowTip(event, 'tt6', 'link27')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpegEx"></a>gdImageCreateFromJpegEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegEx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromJpegEx" class=LFunction id=link28 onMouseOver="ShowTip(event, 'tt6', 'link28')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a> is called to load truecolor images from JPEG format files.&nbsp; Invoke <a href="#gdImageCreateFromJpegEx" class=LFunction id=link29 onMouseOver="ShowTip(event, 'tt6', 'link29')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a> with an already opened pointer to a file containing the desired image.&nbsp; <a href="#gdImageCreateFromJpegEx" class=LFunction id=link30 onMouseOver="ShowTip(event, 'tt6', 'link30')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link31 onMouseOver="ShowTip(event, 'tt13', 'link31')" onMouseOut="HideTip('tt13')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromJpegEx" class=LFunction id=link32 onMouseOver="ShowTip(event, 'tt6', 'link32')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a> does not close the file.</p><p>You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link33 onMouseOver="ShowTip(event, 'tt14', 'link33')" onMouseOut="HideTip('tt14')">gdImageDestroy</a>.</p><p><b>The returned image is always a truecolor image.</b></p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromJpegPtrEx" class=LFunction id=link34 onMouseOver="ShowTip(event, 'tt8', 'link34')" onMouseOut="HideTip('tt8')">gdImageCreateFromJpegPtrEx</a> creates an image from JPEG data already in memory.</p><p><a href="#gdImageCreateFromJpegCtxEx" class=LFunction id=link35 onMouseOver="ShowTip(event, 'tt10', 'link35')" onMouseOut="HideTip('tt10')">gdImageCreateFromJpegCtxEx</a> reads its data via the function pointers in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link36 onMouseOver="ShowTip(event, 'tt4', 'link36')" onMouseOut="HideTip('tt4')">gdIOCtx</a> structure.</p><p><a href="#gdImageCreateFromJpeg" class=LFunction id=link37 onMouseOver="ShowTip(event, 'tt5', 'link37')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a>, <a href="#gdImageCreateFromJpegPtr" class=LFunction id=link38 onMouseOver="ShowTip(event, 'tt7', 'link38')" onMouseOut="HideTip('tt7')">gdImageCreateFromJpegPtr</a> and <a href="#gdImageCreateFromJpegCtx" class=LFunction id=link39 onMouseOver="ShowTip(event, 'tt9', 'link39')" onMouseOut="HideTip('tt9')">gdImageCreateFromJpegCtx</a> are equivalent to calling their <u>Ex</u>-named counterparts with an ignore_warning set to 1 (i.e.&nbsp; TRUE).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer.</td></tr><tr><td class=CDLEntry>ignore_warning</td><td class=CDLDescription>Flag.&nbsp; If true, ignores recoverable warnings.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new <b>truecolor</b> image.&nbsp; This will need to be destroyed with <a href="gd-c.html#gdImageDestroy" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt14', 'link40')" onMouseOut="HideTip('tt14')">gdImageDestroy</a> once it is no longer needed.</p><p>On error, returns NULL.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;myjpeg.jpg&quot;, &quot;rb&quot;);
+im = gdImageCreateFromJpegEx(in, GD_TRUE);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpegPtr"></a>gdImageCreateFromJpegPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of JPEG data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>pointer to JPEG data.</td></tr></table><p>See <a href="#gdImageCreateFromJpegEx" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt6', 'link41')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpegPtrEx"></a>gdImageCreateFromJpegPtrEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtrEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of JPEG data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>pointer to JPEG data.</td></tr><tr><td class=CDLEntry>ignore_warning</td><td class=CDLDescription>if true, ignore recoverable warnings</td></tr></table><p>See <a href="#gdImageCreateFromJpegEx" class=LFunction id=link42 onMouseOver="ShowTip(event, 'tt6', 'link42')" onMouseOut="HideTip('tt6')">gdImageCreateFromJpegEx</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpegCtx"></a>gdImageCreateFromJpegCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromJpeg" class=LFunction id=link43 onMouseOver="ShowTip(event, 'tt5', 'link43')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromJpegCtxEx"></a>gdImageCreateFromJpegCtxEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtxEx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromJpeg" class=LFunction id=link44 onMouseOver="ShowTip(event, 'tt5', 'link44')" onMouseOut="HideTip('tt5')">gdImageCreateFromJpeg</a>.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_jpeg.c</div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpeg(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageJpeg outputs the specified image to the specified file in JPEG format. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageJpegPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. </div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpegCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as JPEG data via a gdIOCtx. </div></div><div class=CToolTip id="tt4"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpeg(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpegEx.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegEx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtrEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtxEx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageInterlace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>interlaceArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdFree (</td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ptr</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt13"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_matrix-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html
new file mode 100644
index 00000000000..962aa7075b8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html
@@ -0,0 +1,65 @@
+<!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"><title>Matrix</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="Matrix"></a>Matrix</h1><div class=CBody><p>Group: Affine Matrix</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#Matrix" >Matrix</a></td><td class=SDescription>Group: Affine Matrix</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineApplyToPointF" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdAffineApplyToPointF</a></td><td class=SDescription>Applies an affine transformation to a point (floating point gdPointF)</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineInvert" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdAffineInvert</a></td><td class=SDescription>Find the inverse of an affine transformation.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineFlip" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdAffineFlip</a></td><td class=SDescription>Flip an affine transformation horizontally or vertically.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineConcat" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdAffineConcat</a></td><td class=SDescription>Concat (Multiply) two affine transformation matrices.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineIdentity" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdAffineIdentity</a></td><td class=SDescription>Set up the identity matrix.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineScale" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdAffineScale</a></td><td class=SDescription>Set up a scaling matrix.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineRotate" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">gdAffineRotate</a></td><td class=SDescription>Set up a rotation affine transform.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineShearHorizontal" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">gdAffineShearHorizontal</a></td><td class=SDescription>Set up a horizontal shearing matrix || becomes \\.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineShearVertical" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">gdAffineShearVertical</a></td><td class=SDescription>Set up a vertical shearing matrix, columns are untouched.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineTranslate" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">gdAffineTranslate</a></td><td class=SDescription>Set up a translation matrix.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#gdAffineRectilinear" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">gdAffineRectilinear</a></td><td class=SDescription>Determines whether the affine transformation is axis aligned. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#gdAffineEqual" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">gdAffineEqual</a></td><td class=SDescription>Determines whether two affine transformations are equal. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineApplyToPointF"></a>gdAffineApplyToPointF</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineApplyToPointF (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies an affine transformation to a point (floating point gdPointF)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting point</td></tr><tr><td class=CDLEntry>affine</td><td class=CDLDescription>Source Point</td></tr><tr><td class=CDLEntry>flip_horz</td><td class=CDLDescription>affine matrix</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineInvert"></a>gdAffineInvert</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineInvert (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Find the inverse of an affine transformation.</p><p>All non-degenerate affine transforms are invertible.&nbsp; Applying the inverted matrix will restore the original values.&nbsp; Multiplying &lt;src&gt; by &lt;dst&gt; (commutative) will return the identity affine (rounding error possible).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>src_affine</td><td class=CDLDescription>Original affine matrix</td></tr><tr><td class=CDLEntry>flip_horz</td><td class=CDLDescription>Whether or not to flip horizontally</td></tr><tr><td class=CDLEntry>flip_vert</td><td class=CDLDescription>Whether or not to flip vertically</td></tr></table><h4 class=CHeading>See also</h4><p><a href="#gdAffineIdentity" class=LFunction id=link13 onMouseOver="ShowTip(event, 'tt5', 'link13')" onMouseOut="HideTip('tt5')">gdAffineIdentity</a></p><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineFlip"></a>gdAffineFlip</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineFlip (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_h,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_v</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Flip an affine transformation horizontally or vertically.</p><p>Flips the affine transform, giving GD_FALSE for &lt;flip_horz&gt; and &lt;flip_vert&gt; will clone the affine matrix.&nbsp; GD_TRUE for both will copy a 180° rotation.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>src_affine</td><td class=CDLDescription>Original affine matrix</td></tr><tr><td class=CDLEntry>flip_h</td><td class=CDLDescription>Whether or not to flip horizontally</td></tr><tr><td class=CDLEntry>flip_v</td><td class=CDLDescription>Whether or not to flip vertically</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineConcat"></a>gdAffineConcat</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineConcat (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Concat (Multiply) two affine transformation matrices.</p><p>Concats two affine transforms together, i.e. the result will be the equivalent of doing first the transformation m1 and then m2.&nbsp; All parameters can be the same matrix (safe to call using the same array for all three arguments).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>m1</td><td class=CDLDescription>First affine matrix</td></tr><tr><td class=CDLEntry>m2</td><td class=CDLDescription>Second affine matrix</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineIdentity"></a>gdAffineIdentity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineIdentity (</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up the identity matrix.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineScale"></a>gdAffineScale</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineScale (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up a scaling matrix.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>scale_x</td><td class=CDLDescription>X scale factor</td></tr><tr><td class=CDLEntry>scale_y</td><td class=CDLDescription>Y scale factor</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineRotate"></a>gdAffineRotate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRotate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up a rotation affine transform.</p><p>Like the other angle in libGD, in which increasing y moves downward, this is a counterclockwise rotation.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>angle</td><td class=CDLDescription>Rotation angle in degrees</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineShearHorizontal"></a>gdAffineShearHorizontal</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearHorizontal(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up a horizontal shearing matrix || becomes \\.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>angle</td><td class=CDLDescription>Shear angle in degrees</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineShearVertical"></a>gdAffineShearVertical</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearVertical(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up a vertical shearing matrix, columns are untouched.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>angle</td><td class=CDLDescription>Shear angle in degrees</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineTranslate"></a>gdAffineTranslate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineTranslate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set up a translation matrix.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dst</td><td class=CDLDescription>Where to store the resulting affine transform</td></tr><tr><td class=CDLEntry>offset_x</td><td class=CDLDescription>Horizontal translation amount</td></tr><tr><td class=CDLEntry>offset_y</td><td class=CDLDescription>Vertical translation amount</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineRectilinear"></a>gdAffineRectilinear</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRectilinear (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Determines whether the affine transformation is axis aligned.&nbsp; A tolerance has been implemented using GD_EPSILON.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>m</td><td class=CDLDescription>The affine transformation</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE if the affine is rectilinear or GD_FALSE</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdAffineEqual"></a>gdAffineEqual</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineEqual (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Determines whether two affine transformations are equal.&nbsp; A tolerance has been implemented using GD_EPSILON.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>m1</td><td class=CDLDescription>The first affine transformation</td></tr><tr><td class=CDLEntry>m2</td><td class=CDLDescription>The first affine transformation</td></tr></table><h4 class=CHeading>Returns</h4><p>GD_TRUE on success or GD_FALSE</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile id=MSelected>Matrix</div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineApplyToPointF (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a point (floating point gdPointF)</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineInvert (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Find the inverse of an affine transformation.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineFlip (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_h,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_v</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Flip an affine transformation horizontally or vertically.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineConcat (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Concat (Multiply) two affine transformation matrices.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineIdentity (</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up the identity matrix.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineScale (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a scaling matrix.</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRotate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a rotation affine transform.</div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearHorizontal(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a horizontal shearing matrix || becomes \\.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearVertical(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a vertical shearing matrix, columns are untouched.</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineTranslate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a translation matrix.</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRectilinear (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether the affine transformation is axis aligned. </div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineEqual (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether two affine transformations are equal. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_nnquant-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html
new file mode 100644
index 00000000000..ccfe82bf694
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdImageNeuQuant</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdImageNeuQuant"></a>gdImageNeuQuant</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageNeuQuant(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sample_factor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdImageNeuQuant</div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_png-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html
new file mode 100644
index 00000000000..beab57bbd51
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html
@@ -0,0 +1,77 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_png.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_png.c"></a>gd_png.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_png.c" >gd_png.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromPng" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a></td><td class=SDescription><a href="#gdImageCreateFromPng" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a> is called to load images from PNG format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromPngPtr" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageCreateFromPngPtr</a></td><td class=SDescription>See <a href="#gdImageCreateFromPng" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt1', 'link4')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a>.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromPngCtx" id=link5 onMouseOver="ShowTip(event, 'tt3', 'link5')" onMouseOut="HideTip('tt3')">gdImageCreateFromPngCtx</a></td><td class=SDescription>See <a href="#gdImageCreateFromPng" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt1', 'link6')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a>.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePngEx" id=link7 onMouseOver="ShowTip(event, 'tt4', 'link7')" onMouseOut="HideTip('tt4')">gdImagePngEx</a></td><td class=SDescription><a href="#gdImagePngEx" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt4', 'link8')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> outputs the specified image to the specified file in PNG format. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImagePng" id=link9 onMouseOver="ShowTip(event, 'tt5', 'link9')" onMouseOut="HideTip('tt5')">gdImagePng</a></td><td class=SDescription>Equivalent to calling <a href="#gdImagePngEx" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt4', 'link10')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> with compression of -1.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePngPtr" id=link11 onMouseOver="ShowTip(event, 'tt6', 'link11')" onMouseOut="HideTip('tt6')">gdImagePngPtr</a></td><td class=SDescription>Equivalent to calling <a href="#gdImagePngPtrEx" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt7', 'link12')" onMouseOut="HideTip('tt7')">gdImagePngPtrEx</a> with compression of -1.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImagePngPtrEx" id=link13 onMouseOver="ShowTip(event, 'tt7', 'link13')" onMouseOut="HideTip('tt7')">gdImagePngPtrEx</a></td><td class=SDescription>Identical to <a href="#gdImagePngEx" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt4', 'link14')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> except that it returns a pointer to a memory area with the PNG data. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImagePngCtx" id=link15 onMouseOver="ShowTip(event, 'tt8', 'link15')" onMouseOut="HideTip('tt8')">gdImagePngCtx</a></td><td class=SDescription>Equivalent to calling <a href="#gdImagePngCtxEx" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt9', 'link16')" onMouseOut="HideTip('tt9')">gdImagePngCtxEx</a> with compression of -1. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImagePngCtxEx" >gdImagePngCtxEx</a></td><td class=SDescription>Outputs the given image as PNG data, but using a <a href="gd_io-h.html#gdIOCtx" class=LType id=link17 onMouseOver="ShowTip(event, 'tt10', 'link17')" onMouseOut="HideTip('tt10')">gdIOCtx</a> instead of a file. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromPng"></a>gdImageCreateFromPng</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPng (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromPng" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt1', 'link18')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a> is called to load images from PNG format files.&nbsp; Invoke <a href="#gdImageCreateFromPng" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt1', 'link19')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a> with an already opened pointer to a FILE containing the desired image.&nbsp; <a href="#gdImageCreateFromPng" class=LFunction id=link20 onMouseOver="ShowTip(event, 'tt1', 'link20')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link21 onMouseOver="ShowTip(event, 'tt11', 'link21')" onMouseOut="HideTip('tt11')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromPng" class=LFunction id=link22 onMouseOver="ShowTip(event, 'tt1', 'link22')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a> does not close the file.&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using gdImageDestroy().</p><p>If the PNG image being loaded is a truecolor image, the resulting gdImagePtr will refer to a truecolor image.&nbsp; 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.&nbsp; The former restriction affects only a handful of very rare 48-bit color and 16-bit grayscale PNG images.&nbsp; The second restriction affects all semitransparent PNG images, but the difference is essentially invisible to the eye.&nbsp; 7 bits of alpha channel resolution is, in practice, quite a lot.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromPngPtr" class=LFunction id=link23 onMouseOver="ShowTip(event, 'tt2', 'link23')" onMouseOut="HideTip('tt2')">gdImageCreateFromPngPtr</a> creates an image from PNG data (i.e. the contents of a PNG file) already in memory.</p><p><a href="#gdImageCreateFromPngCtx" class=LFunction id=link24 onMouseOver="ShowTip(event, 'tt3', 'link24')" onMouseOut="HideTip('tt3')">gdImageCreateFromPngCtx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link25 onMouseOver="ShowTip(event, 'tt10', 'link25')" onMouseOut="HideTip('tt10')">gdIOCtx</a> struct.</p><p><a href="gd_ss-c.html#gdImageCreateFromPngSource" class=LFunction id=link26 onMouseOver="ShowTip(event, 'tt12', 'link26')" onMouseOut="HideTip('tt12')">gdImageCreateFromPngSource</a> is similar to <a href="#gdImageCreateFromPngCtx" class=LFunction id=link27 onMouseOver="ShowTip(event, 'tt3', 'link27')" onMouseOut="HideTip('tt3')">gdImageCreateFromPngCtx</a> but uses the old <a href="gd-h.html#gdSource" class=LType >gdSource</a> interface.&nbsp; It is <b>obsolete</b>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+... inside a function ...
+FILE *in;
+in = fopen(&quot;mypng.png&quot;, &quot;rb&quot;);
+im = gdImageCreateFromPng(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromPngPtr"></a>gdImageCreateFromPngPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromPng" class=LFunction id=link28 onMouseOver="ShowTip(event, 'tt1', 'link28')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromPngCtx"></a>gdImageCreateFromPngCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="#gdImageCreateFromPng" class=LFunction id=link29 onMouseOver="ShowTip(event, 'tt1', 'link29')" onMouseOut="HideTip('tt1')">gdImageCreateFromPng</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngEx"></a>gdImagePngEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImagePngEx" class=LFunction id=link30 onMouseOver="ShowTip(event, 'tt4', 'link30')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> outputs the specified image to the specified file in PNG format.&nbsp; The file must be open for writing.&nbsp; Under MSDOS and all versions of Windows, it is important to use &ldquo;wb&rdquo; as opposed to simply &ldquo;w&rdquo; as the mode when opening the file, and under Unix there is no penalty for doing so.&nbsp; <a href="#gdImagePngEx" class=LFunction id=link31 onMouseOver="ShowTip(event, 'tt4', 'link31')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> does not close the file; your code must do so.</p><p>In addition, <a href="#gdImagePngEx" class=LFunction id=link32 onMouseOver="ShowTip(event, 'tt4', 'link32')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> allows the level of compression to be specified.&nbsp; A compression level of 0 means &ldquo;no compression.&rdquo;&nbsp; A compression level of 1 means &ldquo;compressed, but as quickly as possible.&rdquo;&nbsp; A compression level of 9 means &ldquo;compressed as much as possible to produce the smallest possible file.&rdquo;&nbsp; A compression level of -1 will use the default compression level at the time zlib was compiled on your system.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImagePng" class=LFunction id=link33 onMouseOver="ShowTip(event, 'tt5', 'link33')" onMouseOut="HideTip('tt5')">gdImagePng</a> is equivalent to calling <a href="#gdImagePngEx" class=LFunction id=link34 onMouseOver="ShowTip(event, 'tt4', 'link34')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> with compression of -1.</p><p><a href="#gdImagePngCtx" class=LFunction id=link35 onMouseOver="ShowTip(event, 'tt8', 'link35')" onMouseOut="HideTip('tt8')">gdImagePngCtx</a> and <a href="#gdImagePngCtxEx" class=LFunction id=link36 onMouseOver="ShowTip(event, 'tt9', 'link36')" onMouseOut="HideTip('tt9')">gdImagePngCtxEx</a> write via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link37 onMouseOver="ShowTip(event, 'tt10', 'link37')" onMouseOut="HideTip('tt10')">gdIOCtx</a> instead of a file handle.</p><p><a href="#gdImagePngPtr" class=LFunction id=link38 onMouseOver="ShowTip(event, 'tt6', 'link38')" onMouseOut="HideTip('tt6')">gdImagePngPtr</a> and <a href="#gdImagePngPtrEx" class=LFunction id=link39 onMouseOver="ShowTip(event, 'tt7', 'link39')" onMouseOut="HideTip('tt7')">gdImagePngPtrEx</a> store the image file to memory.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to write</td></tr><tr><td class=CDLEntry>outFile</td><td class=CDLDescription>the output FILE* object.</td></tr><tr><td class=CDLEntry>level</td><td class=CDLDescription>compression level: 0 -&gt; none, 1-9 -&gt; level, -1 -&gt; default</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p><h4 class=CHeading>Example</h4><blockquote><pre>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(&quot;rect.png&quot;, &quot;wb&quot;); // Open output file (binary)
+gdImagePngEx(im, out, 9); // Write PNG, max compression
+fclose(out); // Close file
+gdImageDestroy(im); // Destroy image</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePng"></a>gdImagePng</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePng (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Equivalent to calling <a href="#gdImagePngEx" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt4', 'link40')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> with compression of -1.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to save.</td></tr><tr><td class=CDLEntry>outFile</td><td class=CDLDescription>the output FILE*.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngPtr"></a>gdImagePngPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Equivalent to calling <a href="#gdImagePngPtrEx" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt7', 'link41')" onMouseOut="HideTip('tt7')">gdImagePngPtrEx</a> with compression of -1.</p><p>See <a href="#gdImagePngEx" class=LFunction id=link42 onMouseOver="ShowTip(event, 'tt4', 'link42')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> for more information.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to save.</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: size in bytes of the result.</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to memory containing the image data or NULL on error.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngPtrEx"></a>gdImagePngPtrEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Identical to <a href="#gdImagePngEx" class=LFunction id=link43 onMouseOver="ShowTip(event, 'tt4', 'link43')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> except that it returns a pointer to a memory area with the PNG data.&nbsp; This memory must be freed by the caller when it is no longer needed.&nbsp; **The caller must invoke gdFree(), not free()**</p><p>The &lsquo;size&rsquo; parameter receives the total size of the block of memory.</p><p>See <a href="#gdImagePngEx" class=LFunction id=link44 onMouseOver="ShowTip(event, 'tt4', 'link44')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> for more information.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to save.</td></tr><tr><td class=CDLEntry>size</td><td class=CDLDescription>Output: size in bytes of the result.</td></tr><tr><td class=CDLEntry>level</td><td class=CDLDescription>compression level: 0 -&gt; none, 1-9 -&gt; level, -1 -&gt; default</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to memory containing the image data or NULL on error.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngCtx"></a>gdImagePngCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngCtx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Equivalent to calling <a href="#gdImagePngCtxEx" class=LFunction id=link45 onMouseOver="ShowTip(event, 'tt9', 'link45')" onMouseOut="HideTip('tt9')">gdImagePngCtxEx</a> with compression of -1.&nbsp; See <a href="#gdImagePngEx" class=LFunction id=link46 onMouseOver="ShowTip(event, 'tt4', 'link46')" onMouseOut="HideTip('tt4')">gdImagePngEx</a> for more information.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to save.</td></tr><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>the <a href="gd_io-h.html#gdIOCtx" class=LType id=link47 onMouseOver="ShowTip(event, 'tt10', 'link47')" onMouseOut="HideTip('tt10')">gdIOCtx</a> to write to.</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngCtxEx"></a>gdImagePngCtxEx</h3><div class=CBody><p>Outputs the given image as PNG data, but using a <a href="gd_io-h.html#gdIOCtx" class=LType id=link48 onMouseOver="ShowTip(event, 'tt10', 'link48')" onMouseOut="HideTip('tt10')">gdIOCtx</a> instead of a file.&nbsp; See &lt;gdIamgePnEx&gt;.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>im</td><td class=CDLDescription>the image to save.</td></tr><tr><td class=CDLEntry>outfile</td><td class=CDLDescription>the <a href="gd_io-h.html#gdIOCtx" class=LType id=link49 onMouseOver="ShowTip(event, 'tt10', 'link49')" onMouseOut="HideTip('tt10')">gdIOCtx</a> to write to.</td></tr><tr><td class=CDLEntry>level</td><td class=CDLDescription>compression level: 0 -&gt; none, 1-9 -&gt; level, -1 -&gt; default</td></tr></table><h4 class=CHeading>Returns</h4><p>Nothing.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_png.c</div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPng (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromPng is called to load images from PNG format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImagePngEx outputs the specified image to the specified file in PNG format. </div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePng (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngEx with compression of -1.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngPtrEx with compression of -1.</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngCtx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngCtxEx with compression of -1. </div></div><div class=CToolTip id="tt9"><div class=CFunction>Outputs the given image as PNG data, but using a gdIOCtx instead of a file. </div></div><div class=CToolTip id="tt10"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt11"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng for documentation. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_ss-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html
new file mode 100644
index 00000000000..55c0b36da36
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html
@@ -0,0 +1,45 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_ss.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_ss.c"></a>gd_ss.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_ss.c" >gd_ss.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImagePngToSink" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImagePngToSink</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromPngSource" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromPngSource</a></td><td class=SDescription>See <a href="gd_png-c.html#gdImageCreateFromPng" class=LFunction id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageCreateFromPng</a> for documentation. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImagePngToSink"></a>gdImagePngToSink</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngToSink (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>outSink</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromPngSource"></a>gdImageCreateFromPngSource</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>See <a href="gd_png-c.html#gdImageCreateFromPng" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt3', 'link4')" onMouseOut="HideTip('tt3')">gdImageCreateFromPng</a> for documentation.&nbsp; This is obsolete; use <a href="gd_png-c.html#gdImageCreateFromPngCtx" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt4', 'link5')" onMouseOut="HideTip('tt4')">gdImageCreateFromPngCtx</a> instead.</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_ss.c</div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngToSink (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>outSink</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng for documentation. </div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPng (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromPng is called to load images from PNG format files. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_tga-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html
new file mode 100644
index 00000000000..666fc5369ee
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tga.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_tga.c"></a>gd_tga.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_tga.c" >gd_tga.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromTga" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromTga</a></td><td class=SDescription>Creates a gdImage from a TGA file</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromTgaPtr" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromTgaPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromTgaCtx" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageCreateFromTgaCtx</a></td><td class=SDescription>Creates a gdImage from a gdIOCtx referencing a TGA binary file.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTga"></a>gdImageCreateFromTga</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTga(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fp</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Creates a gdImage from a TGA file</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>Pointer to TGA binary file</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTgaPtr"></a>gdImageCreateFromTgaPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTgaCtx"></a>gdImageCreateFromTgaCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Creates a gdImage from a gdIOCtx referencing a TGA binary file.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>ctx</td><td class=CDLDescription>Pointer to a gdIOCtx structure</td></tr></table></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_tga.c</div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTga(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fp</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a TGA file</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a gdIOCtx referencing a TGA binary file.</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_tiff-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html
new file mode 100644
index 00000000000..3b9c2a97040
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html
@@ -0,0 +1,53 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tiff.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_tiff.c"></a>gd_tiff.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_tiff.c" >gd_tiff.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageTiffCtx" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageTiffCtx</a></td><td class=SDescription>Write the gd image as a tiff file.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromTiffCtx" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromTiffCtx</a></td><td class=SDescription>Create a gdImage from a TIFF file input from an gdIOCtx.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromTIFF" >gdImageCreateFromTIFF</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromTiffPtr" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageCreateFromTiffPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageTiff" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageTiff</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageTiffPtr" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdImageTiffPtr</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTiffCtx"></a>gdImageTiffCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiffCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Write the gd image as a tiff file.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>image</td><td class=CDLDescription>gd image structure;</td></tr><tr><td class=CDLEntry>out</td><td class=CDLDescription>the stream where to write</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTiffCtx"></a>gdImageCreateFromTiffCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Create a gdImage from a TIFF file input from an gdIOCtx.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTIFF"></a>gdImageCreateFromTIFF</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromTiffPtr"></a>gdImageCreateFromTiffPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTiff"></a>gdImageTiff</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiff(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTiffPtr"></a>gdImageTiffPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageTiffPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_tiff.c</div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiffCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the gd image as a tiff file.</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Create a gdImage from a TIFF file input from an gdIOCtx.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiff(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageTiffPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_topal-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html
new file mode 100644
index 00000000000..5ad6da7172d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html
@@ -0,0 +1,49 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_topal.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_topal.c"></a>gd_topal.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_topal.c" >gd_topal.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageTrueColorToPaletteSetMethod" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageTrueColorToPaletteSetMethod</a></td><td class=SDescription>Selects quantization method used for subsequent gdImageTrueColorToPalette calls. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageTrueColorToPaletteSetQuality" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageTrueColorToPaletteSetQuality</a></td><td class=SDescription>Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreatePaletteFromTrueColor" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageCreatePaletteFromTrueColor</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageTrueColorToPalette" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageTrueColorToPalette</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTrueColorToPaletteSetMethod"></a>gdImageTrueColorToPaletteSetMethod</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPaletteSetMethod (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>method,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>speed</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Selects quantization method used for subsequent gdImageTrueColorToPalette calls.&nbsp; See gdPaletteQuantizationMethod enum (e.g.&nbsp; GD_QUANT_NEUQUANT, GD_QUANT_LIQ).&nbsp; Speed is from 1 (highest quality) to 10 (fastest).&nbsp; Speed 0 selects method-specific default (recommended).</p><p>Returns FALSE if the given method is invalid or not available.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTrueColorToPaletteSetQuality"></a>gdImageTrueColorToPaletteSetQuality</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTrueColorToPaletteSetQuality (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>min_quality,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for.&nbsp; Min and max quality is in range 1-100 (1 = ugly, 100 = perfect).&nbsp; Max must be higher than min.&nbsp; If palette cannot represent image with at least min_quality, then image will remain true-color.&nbsp; If palette can represent image with quality better than max_quality, then lower number of colors will be used.&nbsp; This function has effect only when GD_QUANT_LIQ method has been selected.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreatePaletteFromTrueColor"></a>gdImageCreatePaletteFromTrueColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreatePaletteFromTrueColor (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageTrueColorToPalette"></a>gdImageTrueColorToPalette</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPalette (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_topal.c</div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPaletteSetMethod (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>method,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>speed</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Selects quantization method used for subsequent gdImageTrueColorToPalette calls. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTrueColorToPaletteSetQuality (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>min_quality,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for. </div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreatePaletteFromTrueColor (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPalette (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_transform-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html
new file mode 100644
index 00000000000..7e4a29acf43
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_transform.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_transform.c"></a>gd_transform.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_transform.c" >gd_transform.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFlipVertical" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageFlipVertical</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageFlipHorizontal" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageFlipHorizontal</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageFlipBoth" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageFlipBoth</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFlipVertical"></a>gdImageFlipVertical</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipVertical(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFlipHorizontal"></a>gdImageFlipHorizontal</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipHorizontal(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageFlipBoth"></a>gdImageFlipBoth</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipBoth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_transform.c</div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipVertical(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipHorizontal(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipBoth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_version-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html
new file mode 100644
index 00000000000..75d7f80ab08
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html
@@ -0,0 +1,51 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_version.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_version.c"></a>gd_version.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_version.c" >gd_version.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdMajorVersion" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdMajorVersion</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdMinorVersion" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdMinorVersion</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdReleaseVersion" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdReleaseVersion</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdExtraVersion" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdExtraVersion</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdVersionString" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdVersionString</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdMajorVersion"></a>gdMajorVersion</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMajorVersion()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdMinorVersion"></a>gdMinorVersion</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMinorVersion()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdReleaseVersion"></a>gdReleaseVersion</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdReleaseVersion()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdExtraVersion"></a>gdExtraVersion</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdExtraVersion()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdVersionString"></a>gdVersionString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdVersionString()</td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_version.c</div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMajorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMinorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdReleaseVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdExtraVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdVersionString()</td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_wbmp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html
new file mode 100644
index 00000000000..9d47268eb48
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html
@@ -0,0 +1,59 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_wbmp.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_wbmp.c"></a>gd_wbmp.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_wbmp.c" >gd_wbmp.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageWBMPCtx" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageWBMPCtx</a></td><td class=SDescription>Write the image as a wbmp file</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromWBMPCtx" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromWBMPCtx</a></td><td class=SDescription>Reads in a WBMP image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdIOCtx</a> struct. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromWBMP" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a></td><td class=SDescription><a href="#gdImageCreateFromWBMP" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt4', 'link5')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a> is called to load images from WBMP format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageCreateFromWBMPPtr" id=link6 onMouseOver="ShowTip(event, 'tt5', 'link6')" onMouseOut="HideTip('tt5')">gdImageCreateFromWBMPPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageWBMP" id=link7 onMouseOver="ShowTip(event, 'tt6', 'link7')" onMouseOut="HideTip('tt6')">gdImageWBMP</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageWBMPPtr" id=link8 onMouseOver="ShowTip(event, 'tt7', 'link8')" onMouseOut="HideTip('tt7')">gdImageWBMPPtr</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWBMPCtx"></a>gdImageWBMPCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMPCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Write the image as a wbmp file</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>image</td><td class=CDLDescription>gd image structure</td></tr><tr><td class=CDLEntry>fg</td><td class=CDLDescription>the index of the foreground color. any other value will be considered as background and will not be written</td></tr><tr><td class=CDLEntry>out</td><td class=CDLDescription>the stream where to write</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromWBMPCtx"></a>gdImageCreateFromWBMPCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Reads in a WBMP image via a <a href="gd_io-h.html#gdIOCtx" class=LType id=link9 onMouseOver="ShowTip(event, 'tt3', 'link9')" onMouseOut="HideTip('tt3')">gdIOCtx</a> struct.&nbsp; See <a href="#gdImageCreateFromWBMP" class=LFunction id=link10 onMouseOver="ShowTip(event, 'tt4', 'link10')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromWBMP"></a>gdImageCreateFromWBMP</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMP(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromWBMP" class=LFunction id=link11 onMouseOver="ShowTip(event, 'tt4', 'link11')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a> is called to load images from WBMP format files.&nbsp; Invoke <a href="#gdImageCreateFromWBMP" class=LFunction id=link12 onMouseOver="ShowTip(event, 'tt4', 'link12')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a> with an already opened pointer to a file containing the desired image.&nbsp; <a href="#gdImageCreateFromWBMP" class=LFunction id=link13 onMouseOver="ShowTip(event, 'tt4', 'link13')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a> 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).&nbsp; <a href="#gdImageCreateFromWBMP" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt4', 'link14')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a> does not close the file.&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link15 onMouseOver="ShowTip(event, 'tt8', 'link15')" onMouseOut="HideTip('tt8')">gdImageDestroy</a>.</p><h4 class=CHeading>Variants</h4><p><a href="#gdImageCreateFromWBMPPtr" class=LFunction id=link16 onMouseOver="ShowTip(event, 'tt5', 'link16')" onMouseOut="HideTip('tt5')">gdImageCreateFromWBMPPtr</a> creates an image from WBMP data (i.e. the contents of a WBMP file) already in memory.</p><p><a href="#gdImageCreateFromWBMPCtx" class=LFunction id=link17 onMouseOver="ShowTip(event, 'tt2', 'link17')" onMouseOut="HideTip('tt2')">gdImageCreateFromWBMPCtx</a> reads in an image using the functions in a <a href="gd_io-h.html#gdIOCtx" class=LType id=link18 onMouseOver="ShowTip(event, 'tt3', 'link18')" onMouseOut="HideTip('tt3')">gdIOCtx</a> struct.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>infile</td><td class=CDLDescription>The input FILE pointer</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;mywbmp.wbmp&quot;, &quot;rb&quot;);
+im = gdImageCreateFromWBMP(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromWBMPPtr"></a>gdImageCreateFromWBMPPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>size</td><td class=CDLDescription>size of WBMP data in bytes.</td></tr><tr><td class=CDLEntry>data</td><td class=CDLDescription>WBMP data (i.e. contents of a WBMP file).</td></tr></table><p>See <a href="#gdImageCreateFromWBMP" class=LFunction id=link19 onMouseOver="ShowTip(event, 'tt4', 'link19')" onMouseOut="HideTip('tt4')">gdImageCreateFromWBMP</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWBMP"></a>gdImageWBMP</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMP(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWBMPPtr"></a>gdImageWBMPPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWBMPPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_wbmp.c</div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMPCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as a wbmp file</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a WBMP image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt3"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMP(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromWBMP is called to load images from WBMP format files. </div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMP(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWBMPPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_webp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html
new file mode 100644
index 00000000000..ce4efcc5249
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html
@@ -0,0 +1,49 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_webp.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_webp.c"></a>gd_webp.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_webp.c" >gd_webp.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageWebpEx" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageWebpEx</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageWebp" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageWebp</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageWebpPtr" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageWebpPtr</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageWebpPtrEx" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageWebpPtrEx</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWebpEx"></a>gdImageWebpEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebpEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWebp"></a>gdImageWebp</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWebpPtr"></a>gdImageWebpPtr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageWebpPtrEx"></a>gdImageWebpPtrEx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_webp.c</div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebpEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gd_xbm-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html
new file mode 100644
index 00000000000..623e136890c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html
@@ -0,0 +1,51 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_xbm.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gd_xbm.c"></a>gd_xbm.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gd_xbm.c" >gd_xbm.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageCreateFromXbm" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a></td><td class=SDescription><a href="#gdImageCreateFromXbm" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> is called to load images from X bitmap format files. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageXbmCtx" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">gdImageXbmCtx</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageCreateFromXbm"></a>gdImageCreateFromXbm</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXbm(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="#gdImageCreateFromXbm" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt1', 'link4')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> is called to load images from X bitmap format files.&nbsp; Invoke <a href="#gdImageCreateFromXbm" class=LFunction id=link5 onMouseOver="ShowTip(event, 'tt1', 'link5')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> with an already opened pointer to a file containing the desired image.&nbsp; <a href="#gdImageCreateFromXbm" class=LFunction id=link6 onMouseOver="ShowTip(event, 'tt1', 'link6')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link7 onMouseOver="ShowTip(event, 'tt3', 'link7')" onMouseOut="HideTip('tt3')">gdImagePtr</a> 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).&nbsp; <a href="#gdImageCreateFromXbm" class=LFunction id=link8 onMouseOver="ShowTip(event, 'tt1', 'link8')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> does not close the file.</p><p>You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link9 onMouseOver="ShowTip(event, 'tt4', 'link9')" onMouseOut="HideTip('tt4')">gdImageDestroy</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>fd</td><td class=CDLDescription>The input FILE pointer</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;myxbm.xbm&quot;, &quot;rb&quot;);
+im = gdImageCreateFromXbm(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageXbmCtx"></a>gdImageXbmCtx</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageXbmCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>file_name,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gd_xbm.c</div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXbm(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from X bitmap format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageXbmCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>file_name,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfontg-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html
new file mode 100644
index 00000000000..951edab3b54
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFontGetGiant</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFontGetGiant"></a>gdFontGetGiant</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetGiant (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFontGetGiant</div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfontl-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html
new file mode 100644
index 00000000000..841291cc143
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFontGetLarge</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFontGetLarge"></a>gdFontGetLarge</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetLarge (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFontGetLarge</div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfontmb-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html
new file mode 100644
index 00000000000..eca8703bb6d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFontGetMediumBold</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFontGetMediumBold"></a>gdFontGetMediumBold</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetMediumBold (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFontGetMediumBold</div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfonts-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html
new file mode 100644
index 00000000000..29b78571312
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFontGetSmall</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFontGetSmall"></a>gdFontGetSmall</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetSmall (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFontGetSmall</div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfontt-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html
new file mode 100644
index 00000000000..7ae8ca25454
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFontGetTiny</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFontGetTiny"></a>gdFontGetTiny</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetTiny (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFontGetTiny</div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdft-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html
new file mode 100644
index 00000000000..62a554de960
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html
@@ -0,0 +1,70 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gdft.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdft.c"></a>gdft.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gdft.c" >gdft.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageStringTTF" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageStringTTF</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdFreeFontCache" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdFreeFontCache</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdFontCacheShutdown" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdFontCacheShutdown</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageStringFT" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageStringFT</a></td><td class=SDescription>Render a utf8 string onto a gd image.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdFontCacheSetup" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">gdFontCacheSetup</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageStringFTEx" >gdImageStringFTEx</a></td><td class=SDescription>gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdFTUseFontConfig" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">gdFTUseFontConfig</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringTTF"></a>gdImageStringTTF</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringTTF (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdFreeFontCache"></a>gdFreeFontCache</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFreeFontCache ()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdFontCacheShutdown"></a>gdFontCacheShutdown</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFontCacheShutdown ()</td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringFT"></a>gdImageStringFT</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFT (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Render a utf8 string onto a gd image.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdFontCacheSetup"></a>gdFontCacheSetup</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFontCacheSetup (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringFTEx"></a>gdImageStringFTEx</h3><div class=CBody><p>gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.</p><p>If the strex parameter is not null, it must point to a gdFTStringExtra structure.&nbsp; As of gd 2.0.5, this structure is defined as follows:</p><blockquote><pre>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;</pre></blockquote><p>To output multiline text with a specific line spacing, include gdFTEX_LINESPACE in the setting of flags:</p><blockquote><pre>flags |= gdFTEX_LINESPACE;</pre></blockquote><p>And also set linespacing to the desired spacing, expressed as a multiple of the font height.&nbsp; Thus a line spacing of 1.0 is the minimum to guarantee that lines of text do not collide.</p><p>If gdFTEX_LINESPACE is not present, or strex is null, or gdImageStringFT is called, linespacing defaults to 1.05.</p><p>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:</p><blockquote><pre>flags |= gdFTEX_CHARMAP;</pre></blockquote><p>And set charmap to the desired value, which can be any of gdFTEX_Unicode, gdFTEX_Shift_JIS, gdFTEX_Big5, or gdFTEX_Adobe_Custom.&nbsp; If you do not specify a preference, Unicode will be tried first.&nbsp; If the preferred character mapping is not found in the font, other character mappings are attempted.</p><p>GD operates on the assumption that the output image will be rendered to a computer screen.&nbsp; By default, gd passes a resolution of 96 dpi to the freetype text rendering engine.&nbsp; This influences the &ldquo;hinting&rdquo; decisions made by the renderer.&nbsp; To specify a different resolution, set hdpi and vdpi accordingly (in dots per inch) and add gdFTEX_RESOLUTION to flags:</p><blockquote><pre>flags | gdFTEX_RESOLUTION;</pre></blockquote><p>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.&nbsp; This can be turn off by specifying the gdFTEX_DISABLE_KERNING flag:</p><blockquote><pre>flags | gdFTEX_DISABLE_KERNING;</pre></blockquote><p>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.&nbsp; This is returned in the xshow element of the gdFTStringExtra structure if the gdFTEX_XSHOW flag is set:</p><blockquote><pre>flags | gdFTEX_XSHOW;</pre></blockquote><p>The caller is responsible for calling gdFree() on the xshow element after the call if gdFTEX_XSHOW is set.</p><p>GD 2.0.29 and later can also return the path to the actual font file used if the gdFTEX_RETURNFONTPATHNAME flag is set.&nbsp; 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.&nbsp; This information is returned in the fontpath element of the gdFTStringExtra structure.</p><blockquote><pre>flags | gdFTEX_RETURNFONTPATHNAME;</pre></blockquote><p>The caller is responsible for calling gdFree() on the fontpath element after the call if gdFTEX_RETURNFONTPATHNAME is set.</p><p>GD 2.0.29 and later can use fontconfig to resolve font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is set.&nbsp; As a convenience, this behavior can be made the default by calling gdFTUseFontConfig with a nonzero value.&nbsp; 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:</p><blockquote><pre>flags | gdFTEX_FONTPATHNAME;</pre></blockquote><p>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.&nbsp; 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:</p><blockquote><pre>flags | gdFTEX_FONTCONFIG;</pre></blockquote><p>GD 2.0.29 and above can use fontconfig to resolve font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is set.&nbsp; As a convenience, this behavior can be made the default by calling gdFTUseFontConfig with a nonzero value.&nbsp; 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:</p><blockquote><pre>flags | gdFTEX_FONTPATHNAME;</pre></blockquote><p>For more information, see <a href="#gdImageStringFT" class=LFunction id=link7 onMouseOver="ShowTip(event, 'tt4', 'link7')" onMouseOut="HideTip('tt4')">gdImageStringFT</a>.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdFTUseFontConfig"></a>gdFTUseFontConfig</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFTUseFontConfig(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdft.c</div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringTTF (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFreeFontCache ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFontCacheShutdown ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFT (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Render a utf8 string onto a gd image.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFontCacheSetup (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFTUseFontConfig(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdfx-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html
new file mode 100644
index 00000000000..0a96ca4530e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html
@@ -0,0 +1,47 @@
+<!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"><title>/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfx.c</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdfx.c"></a>gdfx.c</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#gdfx.c" >gdfx.c</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageStringFTCircle" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageStringFTCircle</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#gdImageSquareToCircle" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageSquareToCircle</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#gdImageSharpen" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImageSharpen</a></td><td class=SDescription>Sharpen function added on 2003-11-19 by Paul Troughton (paul&lt;dot&gt;troughton&lt;at&gt;ieee&lt;dot&gt;org) Simple 3x3 convolution kernel Makes use of seperability Faster, but less flexible, than full-blown unsharp masking pct is sharpening percentage, and can be greater than 100 Silently does nothing to non-truecolor images Silently does nothing for pct&lt;0, as not a useful blurring function Leaves transparency/alpha-channel untouched</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageStringFTCircle"></a>gdImageStringFTCircle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFTCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>radius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>textRadius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fillPortion,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>font,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>points,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>top,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>bottom,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSquareToCircle"></a>gdImageSquareToCircle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageSquareToCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>radius</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="gdImageSharpen"></a>gdImageSharpen</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSharpen (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sharpen function added on 2003-11-19 by Paul Troughton (paul&lt;dot&gt;troughton&lt;at&gt;ieee&lt;dot&gt;org) Simple 3x3 convolution kernel Makes use of seperability Faster, but less flexible, than full-blown unsharp masking pct is sharpening percentage, and can be greater than 100 Silently does nothing to non-truecolor images Silently does nothing for pct&lt;0, as not a useful blurring function Leaves transparency/alpha-channel untouched</p></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdfx.c</div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFTCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>radius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>textRadius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fillPortion,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>font,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>points,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>top,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>bottom,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageSquareToCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>radius</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSharpen (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Sharpen function added on 2003-11-19 by Paul Troughton (paul&lt;dot&gt;troughton&lt;at&gt;ieee&lt;dot&gt;org) Simple 3x3 convolution kernel Makes use of seperability Faster, but less flexible, than full-blown unsharp masking pct is sharpening percentage, and can be greater than 100 Silently does nothing to non-truecolor images Silently does nothing for pct&lt;0, as not a useful blurring function Leaves transparency/alpha-channel untouched</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdhelpers-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html
new file mode 100644
index 00000000000..218c8617df4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html
@@ -0,0 +1,39 @@
+<!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"><title>gdFree</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdFree"></a>gdFree</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdFree (</td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ptr</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdFree</div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/gdxpm-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html
new file mode 100644
index 00000000000..4130aea9658
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html
@@ -0,0 +1,45 @@
+<!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"><title>gdImageCreateFromXpm</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CFunction"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="gdImageCreateFromXpm"></a>gdImageCreateFromXpm</h1><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXpm(</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p><a href="gd_xbm-c.html#gdImageCreateFromXbm" class=LFunction id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">gdImageCreateFromXbm</a> is called to load images from XPM X Window System color bitmap format files.&nbsp; This function is available only if HAVE_XPM is selected in the Makefile and the Xpm library is linked with the application.&nbsp; Unlike most gd file functions, the Xpm functions <b>require filenames</b>, not file pointers.&nbsp; <a href="#gdImageCreateFromXpm" class=LFunction id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">gdImageCreateFromXpm</a> returns a <a href="gd-h.html#gdImagePtr" class=LType id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">gdImagePtr</a> 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).&nbsp; You can inspect the sx and sy members of the image to determine its size.&nbsp; The image must eventually be destroyed using <a href="gd-c.html#gdImageDestroy" class=LFunction id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">gdImageDestroy</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>filename</td><td class=CDLDescription>The input filename (<b>not</b> FILE pointer)</td></tr></table><h4 class=CHeading>Returns</h4><p>A pointer to the new image or NULL if an error occurred.</p><h4 class=CHeading>Example</h4><blockquote><pre>gdImagePtr im;
+FILE *in;
+in = fopen(&quot;myxpm.xpm&quot;, &quot;rb&quot;);
+im = gdImageCreateFromXpm(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);</pre></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile id=MSelected>gdImageCreateFromXpm</div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXbm(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from X bitmap format files. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXpm(</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. </div></div><div class=CToolTip id="tt3"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/license-txt.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html
new file mode 100644
index 00000000000..5f662f1eb44
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html
@@ -0,0 +1,108 @@
+<!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"><title>License</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="License"></a>License</h1><div class=CBody><h4 class=CHeading>Credits and license terms</h4><blockquote><pre>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 (ellson@graphviz.org).
+
+ Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John
+ Ellson (ellson@graphviz.org).
+
+ Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Pierre-Alain Joye (pierre@libgd.org).
+
+ Portions relating to JPEG and to color quantization copyright
+ 2000, 2001, 2002, 2003, 2004, Doug Becker and copyright (C) 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.hyvatti@iki.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. &quot;Derived works&quot; includes all programs that utilize
+the library. Credit must be given in user-accessible
+documentation.
+
+This software is provided &quot;AS IS.&quot; 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 also wish to thank Hutchison Avenue Software Corporation
+for their prior contributions.</pre></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile id=MSelected>License</div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/files/preamble-txt.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html
new file mode 100644
index 00000000000..7dcb09b2d64
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html
@@ -0,0 +1,89 @@
+<!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"><title>About LibGD 2.2.3</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="About_LibGD_2.2.3"></a>About LibGD 2.2.3</h1><div class=CBody><h4 class=CHeading>What is gd?</h4><p>gd is a graphics library.&nbsp; 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.&nbsp; 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.</p><p>gd is not a paint program.&nbsp; If you are looking for a paint program, you are looking in the wrong place.&nbsp; 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.</p><p>gd does not provide for every possible desirable graphics operation.&nbsp; 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.</p><h4 class=CHeading>gd basics: using gd in your program</h4><p>gd lets you create PNG or JPEG images on the fly.&nbsp; 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:</p><blockquote><pre>-lgd -lpng -lz -ljpeg -lfreetype -lm</pre></blockquote><p>Assuming that all of these libraries are available.</p><p>If you want to use the provided simple fonts, include gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h.&nbsp; For more impressive results, install FreeType 2.x and use the gdImageStringFT function.&nbsp; 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.</p><p>Here is a short example program.&nbsp; (For a more advanced example, see gddemo.c, included in the distribution. gddemo.c is NOT the same program; it demonstrates additional features!)</p><blockquote><pre>/* Bring in gd library functions */
+#include &quot;gd.h&quot;
+
+/* Bring in standard I/O so we can output the PNG to a file */
+#include &lt;stdio.h&gt;
+
+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. &quot;wb&quot; means &quot;write binary&quot;, important
+ under MSDOS, harmless under Unix. */
+ pngout = fopen(&quot;test.png&quot;, &quot;wb&quot;);
+
+ /* Do the same for a JPEG-format file. */
+ jpegout = fopen(&quot;test.jpg&quot;, &quot;wb&quot;);
+
+ /* 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);
+}</pre></blockquote></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile id=MSelected>About LibGD 2.2.3</div></div><div class=MEntry><div class=MFile><a href="gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([], 2);// --></script></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html
new file mode 100644
index 00000000000..d426aa1c9ae
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html
@@ -0,0 +1 @@
+<html><head><meta http-equiv="Refresh" CONTENT="0; URL=files/preamble-txt.html"></head></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html
new file mode 100644
index 00000000000..8683e13ac45
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html
@@ -0,0 +1,34 @@
+<!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"><title>Constant Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Constant Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; A &middot; B &middot; C &middot; D &middot; E &middot; F &middot; <a href="#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; L &middot; M &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; T &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BELL" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>GD_BELL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BESSEL" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>GD_BESSEL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BICUBIC" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>GD_BICUBIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BICUBIC_FIXED" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>GD_BICUBIC_FIXED</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BILINEAR_FIXED" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>GD_BILINEAR_FIXED</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BLACKMAN" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>GD_BLACKMAN</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BOX" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>GD_BOX</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BSPLINE" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=ISymbol>GD_BSPLINE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CATMULLROM" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=ISymbol>GD_CATMULLROM</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_BLACK" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=ISymbol>GD_CROP_BLACK</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_DEFAULT" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>GD_CROP_DEFAULT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_SIDES" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>GD_CROP_SIDES</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_TRANSPARENT" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>GD_CROP_TRANSPARENT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_WHITE" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>GD_CROP_WHITE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_GAUSSIAN" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>GD_GAUSSIAN</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_GENERALIZED_CUBIC" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>GD_GENERALIZED_CUBIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HAMMING" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>GD_HAMMING</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HANNING" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>GD_HANNING</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HERMITE" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>GD_HERMITE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_LINEAR" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>GD_LINEAR</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_MITCHELL" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>GD_MITCHELL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_NEAREST_NEIGHBOUR" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>GD_NEAREST_NEIGHBOUR</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_POWER" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>GD_POWER</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_QUADRATIC" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')" class=ISymbol>GD_QUADRATIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_SINC" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')" class=ISymbol>GD_SINC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_TRIANGLE" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')" class=ISymbol>GD_TRIANGLE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_WEIGHTED4" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')" class=ISymbol>GD_WEIGHTED4</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdCropMode" class=ISymbol>gdCropMode</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalNone" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')" class=ISymbol>gdDisposalNone</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalRestoreBackground" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')" class=ISymbol>gdDisposalRestoreBackground</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalRestorePrevious" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')" class=ISymbol>gdDisposalRestorePrevious</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalUnknown" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')" class=ISymbol>gdDisposalUnknown</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImageGifAnim" class=ISymbol>gdImageGifAnim</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdInterpolationMethod" class=ISymbol>gdInterpolationMethod</a></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CConstant>Bell</div></div><div class=CToolTip id="tt2"><div class=CConstant>Bessel</div></div><div class=CToolTip id="tt3"><div class=CConstant>Bicubic</div></div><div class=CToolTip id="tt4"><div class=CConstant>fixed point bicubic integer</div></div><div class=CToolTip id="tt5"><div class=CConstant>fixed point bilinear</div></div><div class=CToolTip id="tt6"><div class=CConstant>Blackman</div></div><div class=CToolTip id="tt7"><div class=CConstant>Box</div></div><div class=CToolTip id="tt8"><div class=CConstant>BSpline</div></div><div class=CToolTip id="tt9"><div class=CConstant>Catmullrom</div></div><div class=CToolTip id="tt10"><div class=CConstant>Crop black borders</div></div><div class=CToolTip id="tt11"><div class=CConstant>Default crop mode (4 corners or background)</div></div><div class=CToolTip id="tt12"><div class=CConstant>Crop using colors of the 4 corners</div></div><div class=CToolTip id="tt13"><div class=CConstant>Crop using the transparent color</div></div><div class=CToolTip id="tt14"><div class=CConstant>Crop white borders</div></div><div class=CToolTip id="tt15"><div class=CConstant>Gaussian</div></div><div class=CToolTip id="tt16"><div class=CConstant>Generalized cubic</div></div><div class=CToolTip id="tt17"><div class=CConstant>Hamming</div></div><div class=CToolTip id="tt18"><div class=CConstant>Hannig</div></div><div class=CToolTip id="tt19"><div class=CConstant>Hermite</div></div><div class=CToolTip id="tt20"><div class=CConstant>bilinear interpolation</div></div><div class=CToolTip id="tt21"><div class=CConstant>Mitchell</div></div><div class=CToolTip id="tt22"><div class=CConstant>Nearest neighbour interpolation</div></div><div class=CToolTip id="tt23"><div class=CConstant>Power</div></div><div class=CToolTip id="tt24"><div class=CConstant>Quadratic</div></div><div class=CToolTip id="tt25"><div class=CConstant>Sinc</div></div><div class=CToolTip id="tt26"><div class=CConstant>Triangle</div></div><div class=CToolTip id="tt27"><div class=CConstant>4 pixels weighted bilinear interpolation</div></div><div class=CToolTip id="tt28"><div class=CConstant>Preserve previous frame</div></div><div class=CToolTip id="tt29"><div class=CConstant>First allocated color of palette</div></div><div class=CToolTip id="tt30"><div class=CConstant>Restore to before start of frame</div></div><div class=CToolTip id="tt31"><div class=CConstant>Not recommended</div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex id=MSelected>Constants</div></div><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/Files.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html
new file mode 100644
index 00000000000..f000f2feb40
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html
@@ -0,0 +1,34 @@
+<!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"><title>File Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>File Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; A &middot; B &middot; C &middot; D &middot; E &middot; F &middot; <a href="#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; L &middot; M &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; T &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gd.c" class=ISymbol>gd.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gd.h" class=ISymbol>gd.h</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gd_bmp.c" class=ISymbol>gd_bmp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gd_crop.c" class=ISymbol>gd_crop.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gd_filename.c" class=ISymbol>gd_filename.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gd_filter.c" class=ISymbol>gd_filter.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gd_gd.c" class=ISymbol>gd_gd.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gd_gd2.c" class=ISymbol>gd_gd2.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gd_gif_in.c" class=ISymbol>gd_gif_in.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gd_gif_out.c" class=ISymbol>gd_gif_out.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gd_interpolation.c" class=ISymbol>gd_interpolation.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io-h.html#gd_io.h" class=ISymbol>gd_io.h</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gd_io_dp.c" class=ISymbol>gd_io_dp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gd_jpeg.c" class=ISymbol>gd_jpeg.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gd_png.c" class=ISymbol>gd_png.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gd_ss.c" class=ISymbol>gd_ss.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gd_tga.c" class=ISymbol>gd_tga.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gd_tiff.c" class=ISymbol>gd_tiff.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gd_topal.c" class=ISymbol>gd_topal.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gd_transform.c" class=ISymbol>gd_transform.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gd_version.c" class=ISymbol>gd_version.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gd_wbmp.c" class=ISymbol>gd_wbmp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gd_webp.c" class=ISymbol>gd_webp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gd_xbm.c" class=ISymbol>gd_xbm.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdft.c" class=ISymbol>gdft.c</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdfx.c" class=ISymbol>gdfx.c</a></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Files</div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/Functions.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html
new file mode 100644
index 00000000000..70e638a53d6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html
@@ -0,0 +1,34 @@
+<!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"><title>Function Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Function Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; A &middot; B &middot; C &middot; D &middot; E &middot; F &middot; <a href="#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; L &middot; M &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; T &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineApplyToPointF" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>gdAffineApplyToPointF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineConcat" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>gdAffineConcat</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineEqual" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>gdAffineEqual</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineFlip" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>gdAffineFlip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineIdentity" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>gdAffineIdentity</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineInvert" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>gdAffineInvert</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRectilinear" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>gdAffineRectilinear</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRotate" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=ISymbol>gdAffineRotate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineScale" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=ISymbol>gdAffineScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearHorizontal" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=ISymbol>gdAffineShearHorizontal</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearVertical" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>gdAffineShearVertical</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineTranslate" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>gdAffineTranslate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdAlphaBlend" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>gdAlphaBlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdClearErrorMethod" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>gdClearErrorMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_color_map-c.html#gdColorMapLookup" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>gdColorMapLookup</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdDPExtractData" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>gdDPExtractData</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdExtraVersion" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>gdExtraVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFontCacheSetup" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>gdFontCacheSetup</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFontCacheShutdown" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>gdFontCacheShutdown</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontg-c.html#gdFontGetGiant" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>gdFontGetGiant</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontl-c.html#gdFontGetLarge" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>gdFontGetLarge</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontmb-c.html#gdFontGetMediumBold" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>gdFontGetMediumBold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfonts-c.html#gdFontGetSmall" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>gdFontGetSmall</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontt-c.html#gdFontGetTiny" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')" class=ISymbol>gdFontGetTiny</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdhelpers-c.html#gdFree" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')" class=ISymbol>gdFree</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFreeFontCache" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')" class=ISymbol>gdFreeFontCache</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFTUseFontConfig" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')" class=ISymbol>gdFTUseFontConfig</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageAABlend" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')" class=ISymbol>gdImageAABlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageAlphaBlending" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')" class=ISymbol>gdImageAlphaBlending</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageArc" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')" class=ISymbol>gdImageArc</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmp" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')" class=ISymbol>gdImageBmp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpCtx" id=link32 onMouseOver="ShowTip(event, 'tt32', 'link32')" onMouseOut="HideTip('tt32')" class=ISymbol>gdImageBmpCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpPtr" id=link33 onMouseOver="ShowTip(event, 'tt33', 'link33')" onMouseOut="HideTip('tt33')" class=ISymbol>gdImageBmpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageBoundsSafe" id=link34 onMouseOver="ShowTip(event, 'tt34', 'link34')" onMouseOut="HideTip('tt34')" class=ISymbol>gdImageBoundsSafe</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageBrightness" id=link35 onMouseOver="ShowTip(event, 'tt35', 'link35')" onMouseOut="HideTip('tt35')" class=ISymbol>gdImageBrightness</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageChar" id=link36 onMouseOver="ShowTip(event, 'tt36', 'link36')" onMouseOut="HideTip('tt36')" class=ISymbol>gdImageChar</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCharUp" id=link37 onMouseOver="ShowTip(event, 'tt37', 'link37')" onMouseOut="HideTip('tt37')" class=ISymbol>gdImageCharUp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageClone" id=link38 onMouseOver="ShowTip(event, 'tt38', 'link38')" onMouseOut="HideTip('tt38')" class=ISymbol>gdImageClone</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageColor" id=link39 onMouseOver="ShowTip(event, 'tt39', 'link39')" onMouseOut="HideTip('tt39')" class=ISymbol>gdImageColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorAllocate" id=link40 onMouseOver="ShowTip(event, 'tt40', 'link40')" onMouseOut="HideTip('tt40')" class=ISymbol>gdImageColorAllocate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorAllocateAlpha" id=link41 onMouseOver="ShowTip(event, 'tt41', 'link41')" onMouseOut="HideTip('tt41')" class=ISymbol>gdImageColorAllocateAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosest" id=link42 onMouseOver="ShowTip(event, 'tt42', 'link42')" onMouseOut="HideTip('tt42')" class=ISymbol>gdImageColorClosest</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosestAlpha" id=link43 onMouseOver="ShowTip(event, 'tt43', 'link43')" onMouseOut="HideTip('tt43')" class=ISymbol>gdImageColorClosestAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosestHWB" id=link44 onMouseOver="ShowTip(event, 'tt44', 'link44')" onMouseOut="HideTip('tt44')" class=ISymbol>gdImageColorClosestHWB</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorDeallocate" id=link45 onMouseOver="ShowTip(event, 'tt45', 'link45')" onMouseOut="HideTip('tt45')" class=ISymbol>gdImageColorDeallocate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorExact" id=link46 onMouseOver="ShowTip(event, 'tt46', 'link46')" onMouseOut="HideTip('tt46')" class=ISymbol>gdImageColorExact</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorExactAlpha" id=link47 onMouseOver="ShowTip(event, 'tt47', 'link47')" onMouseOut="HideTip('tt47')" class=ISymbol>gdImageColorExactAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_color_match-c.html#gdImageColorMatch" id=link48 onMouseOver="ShowTip(event, 'tt48', 'link48')" onMouseOut="HideTip('tt48')" class=ISymbol>gdImageColorMatch</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplace" id=link49 onMouseOver="ShowTip(event, 'tt49', 'link49')" onMouseOut="HideTip('tt49')" class=ISymbol>gdImageColorReplace</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceArray" id=link50 onMouseOver="ShowTip(event, 'tt50', 'link50')" onMouseOut="HideTip('tt50')" class=ISymbol>gdImageColorReplaceArray</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceCallback" id=link51 onMouseOver="ShowTip(event, 'tt51', 'link51')" onMouseOut="HideTip('tt51')" class=ISymbol>gdImageColorReplaceCallback</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceThreshold" id=link52 onMouseOver="ShowTip(event, 'tt52', 'link52')" onMouseOut="HideTip('tt52')" class=ISymbol>gdImageColorReplaceThreshold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorResolve" id=link53 onMouseOver="ShowTip(event, 'tt53', 'link53')" onMouseOut="HideTip('tt53')" class=ISymbol>gdImageColorResolve</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorResolveAlpha" id=link54 onMouseOver="ShowTip(event, 'tt54', 'link54')" onMouseOut="HideTip('tt54')" class=ISymbol>gdImageColorResolveAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorTransparent" id=link55 onMouseOver="ShowTip(event, 'tt55', 'link55')" onMouseOut="HideTip('tt55')" class=ISymbol>gdImageColorTransparent</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCompare" id=link56 onMouseOver="ShowTip(event, 'tt56', 'link56')" onMouseOut="HideTip('tt56')" class=ISymbol>gdImageCompare</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageContrast" id=link57 onMouseOver="ShowTip(event, 'tt57', 'link57')" onMouseOut="HideTip('tt57')" class=ISymbol>gdImageContrast</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageConvolution" id=link58 onMouseOver="ShowTip(event, 'tt58', 'link58')" onMouseOut="HideTip('tt58')" class=ISymbol>gdImageConvolution</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopy" id=link59 onMouseOver="ShowTip(event, 'tt59', 'link59')" onMouseOut="HideTip('tt59')" class=ISymbol>gdImageCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageCopyGaussianBlurred" id=link60 onMouseOver="ShowTip(event, 'tt60', 'link60')" onMouseOut="HideTip('tt60')" class=ISymbol>gdImageCopyGaussianBlurred</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyMerge" id=link61 onMouseOver="ShowTip(event, 'tt61', 'link61')" onMouseOut="HideTip('tt61')" class=ISymbol>gdImageCopyMerge</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyMergeGray" id=link62 onMouseOver="ShowTip(event, 'tt62', 'link62')" onMouseOut="HideTip('tt62')" class=ISymbol>gdImageCopyMergeGray</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyResampled" id=link63 onMouseOver="ShowTip(event, 'tt63', 'link63')" onMouseOut="HideTip('tt63')" class=ISymbol>gdImageCopyResampled</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyResized" id=link64 onMouseOver="ShowTip(event, 'tt64', 'link64')" onMouseOut="HideTip('tt64')" class=ISymbol>gdImageCopyResized</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyRotated" id=link65 onMouseOver="ShowTip(event, 'tt65', 'link65')" onMouseOut="HideTip('tt65')" class=ISymbol>gdImageCopyRotated</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCreate" id=link66 onMouseOver="ShowTip(event, 'tt66', 'link66')" onMouseOut="HideTip('tt66')" class=ISymbol>gdImageCreate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmp" id=link67 onMouseOver="ShowTip(event, 'tt67', 'link67')" onMouseOut="HideTip('tt67')" class=ISymbol>gdImageCreateFromBmp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpCtx" id=link68 onMouseOver="ShowTip(event, 'tt68', 'link68')" onMouseOut="HideTip('tt68')" class=ISymbol>gdImageCreateFromBmpCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpPtr" id=link69 onMouseOver="ShowTip(event, 'tt69', 'link69')" onMouseOut="HideTip('tt69')" class=ISymbol>gdImageCreateFromBmpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdImageCreateFromFile" id=link70 onMouseOver="ShowTip(event, 'tt70', 'link70')" onMouseOut="HideTip('tt70')" class=ISymbol>gdImageCreateFromFile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGd" id=link71 onMouseOver="ShowTip(event, 'tt71', 'link71')" onMouseOut="HideTip('tt71')" class=ISymbol>gdImageCreateFromGd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2" id=link72 onMouseOver="ShowTip(event, 'tt72', 'link72')" onMouseOut="HideTip('tt72')" class=ISymbol>gdImageCreateFromGd2</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ctx" id=link73 onMouseOver="ShowTip(event, 'tt73', 'link73')" onMouseOut="HideTip('tt73')" class=ISymbol>gdImageCreateFromGd2Ctx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Part" id=link74 onMouseOver="ShowTip(event, 'tt74', 'link74')" onMouseOut="HideTip('tt74')" class=ISymbol>gdImageCreateFromGd2Part</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartCtx" id=link75 onMouseOver="ShowTip(event, 'tt75', 'link75')" onMouseOut="HideTip('tt75')" class=ISymbol>gdImageCreateFromGd2PartCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartPtr" id=link76 onMouseOver="ShowTip(event, 'tt76', 'link76')" onMouseOut="HideTip('tt76')" class=ISymbol>gdImageCreateFromGd2PartPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ptr" id=link77 onMouseOver="ShowTip(event, 'tt77', 'link77')" onMouseOut="HideTip('tt77')" class=ISymbol>gdImageCreateFromGd2Ptr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdCtx" id=link78 onMouseOver="ShowTip(event, 'tt78', 'link78')" onMouseOut="HideTip('tt78')" class=ISymbol>gdImageCreateFromGdCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdPtr" id=link79 onMouseOver="ShowTip(event, 'tt79', 'link79')" onMouseOut="HideTip('tt79')" class=ISymbol>gdImageCreateFromGdPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGif" id=link80 onMouseOver="ShowTip(event, 'tt80', 'link80')" onMouseOut="HideTip('tt80')" class=ISymbol>gdImageCreateFromGif</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifCtx" id=link81 onMouseOver="ShowTip(event, 'tt81', 'link81')" onMouseOut="HideTip('tt81')" class=ISymbol>gdImageCreateFromGifCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifPtr" id=link82 onMouseOver="ShowTip(event, 'tt82', 'link82')" onMouseOut="HideTip('tt82')" class=ISymbol>gdImageCreateFromGifPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpeg" id=link83 onMouseOver="ShowTip(event, 'tt83', 'link83')" onMouseOut="HideTip('tt83')" class=ISymbol>gdImageCreateFromJpeg</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtx" id=link84 onMouseOver="ShowTip(event, 'tt84', 'link84')" onMouseOut="HideTip('tt84')" class=ISymbol>gdImageCreateFromJpegCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtxEx" id=link85 onMouseOver="ShowTip(event, 'tt85', 'link85')" onMouseOut="HideTip('tt85')" class=ISymbol>gdImageCreateFromJpegCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegEx" id=link86 onMouseOver="ShowTip(event, 'tt86', 'link86')" onMouseOut="HideTip('tt86')" class=ISymbol>gdImageCreateFromJpegEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtr" id=link87 onMouseOver="ShowTip(event, 'tt87', 'link87')" onMouseOut="HideTip('tt87')" class=ISymbol>gdImageCreateFromJpegPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtrEx" id=link88 onMouseOver="ShowTip(event, 'tt88', 'link88')" onMouseOut="HideTip('tt88')" class=ISymbol>gdImageCreateFromJpegPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPng" id=link89 onMouseOver="ShowTip(event, 'tt89', 'link89')" onMouseOut="HideTip('tt89')" class=ISymbol>gdImageCreateFromPng</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngCtx" id=link90 onMouseOver="ShowTip(event, 'tt90', 'link90')" onMouseOut="HideTip('tt90')" class=ISymbol>gdImageCreateFromPngCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngPtr" id=link91 onMouseOver="ShowTip(event, 'tt91', 'link91')" onMouseOut="HideTip('tt91')" class=ISymbol>gdImageCreateFromPngPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gdImageCreateFromPngSource" id=link92 onMouseOver="ShowTip(event, 'tt92', 'link92')" onMouseOut="HideTip('tt92')" class=ISymbol>gdImageCreateFromPngSource</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTga" id=link93 onMouseOver="ShowTip(event, 'tt93', 'link93')" onMouseOut="HideTip('tt93')" class=ISymbol>gdImageCreateFromTga</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaCtx" id=link94 onMouseOver="ShowTip(event, 'tt94', 'link94')" onMouseOut="HideTip('tt94')" class=ISymbol>gdImageCreateFromTgaCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaPtr" id=link95 onMouseOver="ShowTip(event, 'tt95', 'link95')" onMouseOut="HideTip('tt95')" class=ISymbol>gdImageCreateFromTgaPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTIFF" class=ISymbol>gdImageCreateFromTIFF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffCtx" id=link96 onMouseOver="ShowTip(event, 'tt96', 'link96')" onMouseOut="HideTip('tt96')" class=ISymbol>gdImageCreateFromTiffCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffPtr" id=link97 onMouseOver="ShowTip(event, 'tt97', 'link97')" onMouseOut="HideTip('tt97')" class=ISymbol>gdImageCreateFromTiffPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMP" id=link98 onMouseOver="ShowTip(event, 'tt98', 'link98')" onMouseOut="HideTip('tt98')" class=ISymbol>gdImageCreateFromWBMP</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPCtx" id=link99 onMouseOver="ShowTip(event, 'tt99', 'link99')" onMouseOut="HideTip('tt99')" class=ISymbol>gdImageCreateFromWBMPCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPPtr" id=link100 onMouseOver="ShowTip(event, 'tt100', 'link100')" onMouseOut="HideTip('tt100')" class=ISymbol>gdImageCreateFromWBMPPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gdImageCreateFromXbm" id=link101 onMouseOver="ShowTip(event, 'tt101', 'link101')" onMouseOut="HideTip('tt101')" class=ISymbol>gdImageCreateFromXbm</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdxpm-c.html#gdImageCreateFromXpm" id=link102 onMouseOver="ShowTip(event, 'tt102', 'link102')" onMouseOut="HideTip('tt102')" class=ISymbol>gdImageCreateFromXpm</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageCreatePaletteFromTrueColor" id=link103 onMouseOver="ShowTip(event, 'tt103', 'link103')" onMouseOut="HideTip('tt103')" class=ISymbol>gdImageCreatePaletteFromTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCreateTrueColor" id=link104 onMouseOver="ShowTip(event, 'tt104', 'link104')" onMouseOut="HideTip('tt104')" class=ISymbol>gdImageCreateTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCrop" id=link105 onMouseOver="ShowTip(event, 'tt105', 'link105')" onMouseOut="HideTip('tt105')" class=ISymbol>gdImageCrop</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCropAuto" id=link106 onMouseOver="ShowTip(event, 'tt106', 'link106')" onMouseOut="HideTip('tt106')" class=ISymbol>gdImageCropAuto</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCropThreshold" id=link107 onMouseOver="ShowTip(event, 'tt107', 'link107')" onMouseOut="HideTip('tt107')" class=ISymbol>gdImageCropThreshold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageDashedLine" id=link108 onMouseOver="ShowTip(event, 'tt108', 'link108')" onMouseOut="HideTip('tt108')" class=ISymbol>gdImageDashedLine</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageDestroy" id=link109 onMouseOver="ShowTip(event, 'tt109', 'link109')" onMouseOut="HideTip('tt109')" class=ISymbol>gdImageDestroy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageEdgeDetectQuick" id=link110 onMouseOver="ShowTip(event, 'tt110', 'link110')" onMouseOut="HideTip('tt110')" class=ISymbol>gdImageEdgeDetectQuick</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageEllipse" id=link111 onMouseOver="ShowTip(event, 'tt111', 'link111')" onMouseOut="HideTip('tt111')" class=ISymbol>gdImageEllipse</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageEmboss" id=link112 onMouseOver="ShowTip(event, 'tt112', 'link112')" onMouseOut="HideTip('tt112')" class=ISymbol>gdImageEmboss</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdImageFile" id=link113 onMouseOver="ShowTip(event, 'tt113', 'link113')" onMouseOut="HideTip('tt113')" class=ISymbol>gdImageFile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFill" id=link114 onMouseOver="ShowTip(event, 'tt114', 'link114')" onMouseOut="HideTip('tt114')" class=ISymbol>gdImageFill</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledArc" id=link115 onMouseOver="ShowTip(event, 'tt115', 'link115')" onMouseOut="HideTip('tt115')" class=ISymbol>gdImageFilledArc</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledEllipse" id=link116 onMouseOver="ShowTip(event, 'tt116', 'link116')" onMouseOut="HideTip('tt116')" class=ISymbol>gdImageFilledEllipse</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledPolygon" id=link117 onMouseOver="ShowTip(event, 'tt117', 'link117')" onMouseOut="HideTip('tt117')" class=ISymbol>gdImageFilledPolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledRectangle" id=link118 onMouseOver="ShowTip(event, 'tt118', 'link118')" onMouseOut="HideTip('tt118')" class=ISymbol>gdImageFilledRectangle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFillToBorder" id=link119 onMouseOver="ShowTip(event, 'tt119', 'link119')" onMouseOut="HideTip('tt119')" class=ISymbol>gdImageFillToBorder</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipBoth" id=link120 onMouseOver="ShowTip(event, 'tt120', 'link120')" onMouseOut="HideTip('tt120')" class=ISymbol>gdImageFlipBoth</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipHorizontal" id=link121 onMouseOver="ShowTip(event, 'tt121', 'link121')" onMouseOut="HideTip('tt121')" class=ISymbol>gdImageFlipHorizontal</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipVertical" id=link122 onMouseOver="ShowTip(event, 'tt122', 'link122')" onMouseOut="HideTip('tt122')" class=ISymbol>gdImageFlipVertical</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageGaussianBlur" id=link123 onMouseOver="ShowTip(event, 'tt123', 'link123')" onMouseOut="HideTip('tt123')" class=ISymbol>gdImageGaussianBlur</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageGd" id=link124 onMouseOver="ShowTip(event, 'tt124', 'link124')" onMouseOut="HideTip('tt124')" class=ISymbol>gdImageGd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2" id=link125 onMouseOver="ShowTip(event, 'tt125', 'link125')" onMouseOut="HideTip('tt125')" class=ISymbol>gdImageGd2</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2Ptr" id=link126 onMouseOver="ShowTip(event, 'tt126', 'link126')" onMouseOut="HideTip('tt126')" class=ISymbol>gdImageGd2Ptr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageGdPtr" id=link127 onMouseOver="ShowTip(event, 'tt127', 'link127')" onMouseOut="HideTip('tt127')" class=ISymbol>gdImageGdPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetClip" id=link128 onMouseOver="ShowTip(event, 'tt128', 'link128')" onMouseOut="HideTip('tt128')" class=ISymbol>gdImageGetClip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageGetInterpolationMethod" id=link129 onMouseOver="ShowTip(event, 'tt129', 'link129')" onMouseOut="HideTip('tt129')" class=ISymbol>gdImageGetInterpolationMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetPixel" id=link130 onMouseOver="ShowTip(event, 'tt130', 'link130')" onMouseOut="HideTip('tt130')" class=ISymbol>gdImageGetPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetTrueColorPixel" id=link131 onMouseOver="ShowTip(event, 'tt131', 'link131')" onMouseOut="HideTip('tt131')" class=ISymbol>gdImageGetTrueColorPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGif" id=link132 onMouseOver="ShowTip(event, 'tt132', 'link132')" onMouseOut="HideTip('tt132')" class=ISymbol>gdImageGif</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAdd" id=link133 onMouseOver="ShowTip(event, 'tt133', 'link133')" onMouseOut="HideTip('tt133')" class=ISymbol>gdImageGifAnimAdd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddCtx" id=link134 onMouseOver="ShowTip(event, 'tt134', 'link134')" onMouseOut="HideTip('tt134')" class=ISymbol>gdImageGifAnimAddCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddPtr" id=link135 onMouseOver="ShowTip(event, 'tt135', 'link135')" onMouseOut="HideTip('tt135')" class=ISymbol>gdImageGifAnimAddPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBegin" id=link136 onMouseOver="ShowTip(event, 'tt136', 'link136')" onMouseOut="HideTip('tt136')" class=ISymbol>gdImageGifAnimBegin</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginCtx" id=link137 onMouseOver="ShowTip(event, 'tt137', 'link137')" onMouseOut="HideTip('tt137')" class=ISymbol>gdImageGifAnimBeginCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginPtr" id=link138 onMouseOver="ShowTip(event, 'tt138', 'link138')" onMouseOut="HideTip('tt138')" class=ISymbol>gdImageGifAnimBeginPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEnd" id=link139 onMouseOver="ShowTip(event, 'tt139', 'link139')" onMouseOut="HideTip('tt139')" class=ISymbol>gdImageGifAnimEnd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndCtx" id=link140 onMouseOver="ShowTip(event, 'tt140', 'link140')" onMouseOut="HideTip('tt140')" class=ISymbol>gdImageGifAnimEndCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndPtr" id=link141 onMouseOver="ShowTip(event, 'tt141', 'link141')" onMouseOut="HideTip('tt141')" class=ISymbol>gdImageGifAnimEndPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifCtx" id=link142 onMouseOver="ShowTip(event, 'tt142', 'link142')" onMouseOut="HideTip('tt142')" class=ISymbol>gdImageGifCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifPtr" id=link143 onMouseOver="ShowTip(event, 'tt143', 'link143')" onMouseOut="HideTip('tt143')" class=ISymbol>gdImageGifPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageGrayScale" id=link144 onMouseOver="ShowTip(event, 'tt144', 'link144')" onMouseOut="HideTip('tt144')" class=ISymbol>gdImageGrayScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageInterlace" id=link145 onMouseOver="ShowTip(event, 'tt145', 'link145')" onMouseOut="HideTip('tt145')" class=ISymbol>gdImageInterlace</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpeg" id=link146 onMouseOver="ShowTip(event, 'tt146', 'link146')" onMouseOut="HideTip('tt146')" class=ISymbol>gdImageJpeg</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegCtx" id=link147 onMouseOver="ShowTip(event, 'tt147', 'link147')" onMouseOut="HideTip('tt147')" class=ISymbol>gdImageJpegCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegPtr" id=link148 onMouseOver="ShowTip(event, 'tt148', 'link148')" onMouseOut="HideTip('tt148')" class=ISymbol>gdImageJpegPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageLine" id=link149 onMouseOver="ShowTip(event, 'tt149', 'link149')" onMouseOut="HideTip('tt149')" class=ISymbol>gdImageLine</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageMeanRemoval" id=link150 onMouseOver="ShowTip(event, 'tt150', 'link150')" onMouseOut="HideTip('tt150')" class=ISymbol>gdImageMeanRemoval</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageNegate" id=link151 onMouseOver="ShowTip(event, 'tt151', 'link151')" onMouseOut="HideTip('tt151')" class=ISymbol>gdImageNegate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_nnquant-c.html#gdImageNeuQuant" id=link152 onMouseOver="ShowTip(event, 'tt152', 'link152')" onMouseOut="HideTip('tt152')" class=ISymbol>gdImageNeuQuant</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageOpenPolygon" id=link153 onMouseOver="ShowTip(event, 'tt153', 'link153')" onMouseOut="HideTip('tt153')" class=ISymbol>gdImageOpenPolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePaletteCopy" id=link154 onMouseOver="ShowTip(event, 'tt154', 'link154')" onMouseOut="HideTip('tt154')" class=ISymbol>gdImagePaletteCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePaletteToTrueColor" id=link155 onMouseOver="ShowTip(event, 'tt155', 'link155')" onMouseOut="HideTip('tt155')" class=ISymbol>gdImagePaletteToTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImagePixelate" id=link156 onMouseOver="ShowTip(event, 'tt156', 'link156')" onMouseOut="HideTip('tt156')" class=ISymbol>gdImagePixelate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePng" id=link157 onMouseOver="ShowTip(event, 'tt157', 'link157')" onMouseOut="HideTip('tt157')" class=ISymbol>gdImagePng</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtx" id=link158 onMouseOver="ShowTip(event, 'tt158', 'link158')" onMouseOut="HideTip('tt158')" class=ISymbol>gdImagePngCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtxEx" id=link159 onMouseOver="ShowTip(event, 'tt159', 'link159')" onMouseOut="HideTip('tt159')" class=ISymbol>gdImagePngCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngEx" id=link160 onMouseOver="ShowTip(event, 'tt160', 'link160')" onMouseOut="HideTip('tt160')" class=ISymbol>gdImagePngEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtr" id=link161 onMouseOver="ShowTip(event, 'tt161', 'link161')" onMouseOut="HideTip('tt161')" class=ISymbol>gdImagePngPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtrEx" id=link162 onMouseOver="ShowTip(event, 'tt162', 'link162')" onMouseOut="HideTip('tt162')" class=ISymbol>gdImagePngPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gdImagePngToSink" id=link163 onMouseOver="ShowTip(event, 'tt163', 'link163')" onMouseOut="HideTip('tt163')" class=ISymbol>gdImagePngToSink</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePolygon" id=link164 onMouseOver="ShowTip(event, 'tt164', 'link164')" onMouseOut="HideTip('tt164')" class=ISymbol>gdImagePolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageRectangle" id=link165 onMouseOver="ShowTip(event, 'tt165', 'link165')" onMouseOut="HideTip('tt165')" class=ISymbol>gdImageRectangle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageRotateInterpolated" id=link166 onMouseOver="ShowTip(event, 'tt166', 'link166')" onMouseOut="HideTip('tt166')" class=ISymbol>gdImageRotateInterpolated</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSaveAlpha" id=link167 onMouseOver="ShowTip(event, 'tt167', 'link167')" onMouseOut="HideTip('tt167')" class=ISymbol>gdImageSaveAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageScale" id=link168 onMouseOver="ShowTip(event, 'tt168', 'link168')" onMouseOut="HideTip('tt168')" class=ISymbol>gdImageScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatter" id=link169 onMouseOver="ShowTip(event, 'tt169', 'link169')" onMouseOut="HideTip('tt169')" class=ISymbol>gdImageScatter</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterColor" id=link170 onMouseOver="ShowTip(event, 'tt170', 'link170')" onMouseOut="HideTip('tt170')" class=ISymbol>gdImageScatterColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterEx" id=link171 onMouseOver="ShowTip(event, 'tt171', 'link171')" onMouseOut="HideTip('tt171')" class=ISymbol>gdImageScatterEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageSelectiveBlur" id=link172 onMouseOver="ShowTip(event, 'tt172', 'link172')" onMouseOut="HideTip('tt172')" class=ISymbol>gdImageSelectiveBlur</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliased" id=link173 onMouseOver="ShowTip(event, 'tt173', 'link173')" onMouseOut="HideTip('tt173')" class=ISymbol>gdImageSetAntiAliased</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliasedDontBlend" id=link174 onMouseOver="ShowTip(event, 'tt174', 'link174')" onMouseOut="HideTip('tt174')" class=ISymbol>gdImageSetAntiAliasedDontBlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetBrush" id=link175 onMouseOver="ShowTip(event, 'tt175', 'link175')" onMouseOut="HideTip('tt175')" class=ISymbol>gdImageSetBrush</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetClip" id=link176 onMouseOver="ShowTip(event, 'tt176', 'link176')" onMouseOut="HideTip('tt176')" class=ISymbol>gdImageSetClip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageSetInterpolationMethod" id=link177 onMouseOver="ShowTip(event, 'tt177', 'link177')" onMouseOut="HideTip('tt177')" class=ISymbol>gdImageSetInterpolationMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetPixel" id=link178 onMouseOver="ShowTip(event, 'tt178', 'link178')" onMouseOut="HideTip('tt178')" class=ISymbol>gdImageSetPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetResolution" id=link179 onMouseOver="ShowTip(event, 'tt179', 'link179')" onMouseOut="HideTip('tt179')" class=ISymbol>gdImageSetResolution</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetStyle" id=link180 onMouseOver="ShowTip(event, 'tt180', 'link180')" onMouseOut="HideTip('tt180')" class=ISymbol>gdImageSetStyle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetThickness" id=link181 onMouseOver="ShowTip(event, 'tt181', 'link181')" onMouseOut="HideTip('tt181')" class=ISymbol>gdImageSetThickness</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetTile" id=link182 onMouseOver="ShowTip(event, 'tt182', 'link182')" onMouseOut="HideTip('tt182')" class=ISymbol>gdImageSetTile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageSharpen" id=link183 onMouseOver="ShowTip(event, 'tt183', 'link183')" onMouseOut="HideTip('tt183')" class=ISymbol>gdImageSharpen</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageSmooth" id=link184 onMouseOver="ShowTip(event, 'tt184', 'link184')" onMouseOut="HideTip('tt184')" class=ISymbol>gdImageSmooth</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageSquareToCircle" id=link185 onMouseOver="ShowTip(event, 'tt185', 'link185')" onMouseOut="HideTip('tt185')" class=ISymbol>gdImageSquareToCircle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageString" id=link186 onMouseOver="ShowTip(event, 'tt186', 'link186')" onMouseOut="HideTip('tt186')" class=ISymbol>gdImageString</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageString16" id=link187 onMouseOver="ShowTip(event, 'tt187', 'link187')" onMouseOut="HideTip('tt187')" class=ISymbol>gdImageString16</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringFT" id=link188 onMouseOver="ShowTip(event, 'tt188', 'link188')" onMouseOut="HideTip('tt188')" class=ISymbol>gdImageStringFT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageStringFTCircle" id=link189 onMouseOver="ShowTip(event, 'tt189', 'link189')" onMouseOut="HideTip('tt189')" class=ISymbol>gdImageStringFTCircle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringFTEx" id=link190 onMouseOver="ShowTip(event, 'tt190', 'link190')" onMouseOut="HideTip('tt190')" class=ISymbol>gdImageStringFTEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringTTF" id=link191 onMouseOver="ShowTip(event, 'tt191', 'link191')" onMouseOut="HideTip('tt191')" class=ISymbol>gdImageStringTTF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageStringUp" id=link192 onMouseOver="ShowTip(event, 'tt192', 'link192')" onMouseOut="HideTip('tt192')" class=ISymbol>gdImageStringUp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageStringUp16" id=link193 onMouseOver="ShowTip(event, 'tt193', 'link193')" onMouseOut="HideTip('tt193')" class=ISymbol>gdImageStringUp16</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiff" id=link194 onMouseOver="ShowTip(event, 'tt194', 'link194')" onMouseOut="HideTip('tt194')" class=ISymbol>gdImageTiff</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffCtx" id=link195 onMouseOver="ShowTip(event, 'tt195', 'link195')" onMouseOut="HideTip('tt195')" class=ISymbol>gdImageTiffCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffPtr" id=link196 onMouseOver="ShowTip(event, 'tt196', 'link196')" onMouseOut="HideTip('tt196')" class=ISymbol>gdImageTiffPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPalette" id=link197 onMouseOver="ShowTip(event, 'tt197', 'link197')" onMouseOut="HideTip('tt197')" class=ISymbol>gdImageTrueColorToPalette</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetMethod" id=link198 onMouseOver="ShowTip(event, 'tt198', 'link198')" onMouseOut="HideTip('tt198')" class=ISymbol>gdImageTrueColorToPaletteSetMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetQuality" id=link199 onMouseOver="ShowTip(event, 'tt199', 'link199')" onMouseOut="HideTip('tt199')" class=ISymbol>gdImageTrueColorToPaletteSetQuality</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMP" id=link200 onMouseOver="ShowTip(event, 'tt200', 'link200')" onMouseOut="HideTip('tt200')" class=ISymbol>gdImageWBMP</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPCtx" id=link201 onMouseOver="ShowTip(event, 'tt201', 'link201')" onMouseOut="HideTip('tt201')" class=ISymbol>gdImageWBMPCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPPtr" id=link202 onMouseOver="ShowTip(event, 'tt202', 'link202')" onMouseOut="HideTip('tt202')" class=ISymbol>gdImageWBMPPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebp" id=link203 onMouseOver="ShowTip(event, 'tt203', 'link203')" onMouseOut="HideTip('tt203')" class=ISymbol>gdImageWebp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpEx" id=link204 onMouseOver="ShowTip(event, 'tt204', 'link204')" onMouseOut="HideTip('tt204')" class=ISymbol>gdImageWebpEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtr" id=link205 onMouseOver="ShowTip(event, 'tt205', 'link205')" onMouseOut="HideTip('tt205')" class=ISymbol>gdImageWebpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtrEx" id=link206 onMouseOver="ShowTip(event, 'tt206', 'link206')" onMouseOut="HideTip('tt206')" class=ISymbol>gdImageWebpPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gdImageXbmCtx" id=link207 onMouseOver="ShowTip(event, 'tt207', 'link207')" onMouseOut="HideTip('tt207')" class=ISymbol>gdImageXbmCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdLayerMultiply" id=link208 onMouseOver="ShowTip(event, 'tt208', 'link208')" onMouseOut="HideTip('tt208')" class=ISymbol>gdLayerMultiply</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdLayerOverlay" id=link209 onMouseOver="ShowTip(event, 'tt209', 'link209')" onMouseOut="HideTip('tt209')" class=ISymbol>gdLayerOverlay</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdMajorVersion" id=link210 onMouseOver="ShowTip(event, 'tt210', 'link210')" onMouseOut="HideTip('tt210')" class=ISymbol>gdMajorVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdMinorVersion" id=link211 onMouseOver="ShowTip(event, 'tt211', 'link211')" onMouseOut="HideTip('tt211')" class=ISymbol>gdMinorVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtx" id=link212 onMouseOver="ShowTip(event, 'tt212', 'link212')" onMouseOut="HideTip('tt212')" class=ISymbol>gdNewDynamicCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtxEx" id=link213 onMouseOver="ShowTip(event, 'tt213', 'link213')" onMouseOut="HideTip('tt213')" class=ISymbol>gdNewDynamicCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_file-c.html#gdNewFileCtx" id=link214 onMouseOver="ShowTip(event, 'tt214', 'link214')" onMouseOut="HideTip('tt214')" class=ISymbol>gdNewFileCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_ss-c.html#gdNewSSCtx" id=link215 onMouseOver="ShowTip(event, 'tt215', 'link215')" onMouseOut="HideTip('tt215')" class=ISymbol>gdNewSSCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdReleaseVersion" id=link216 onMouseOver="ShowTip(event, 'tt216', 'link216')" onMouseOut="HideTip('tt216')" class=ISymbol>gdReleaseVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdSetErrorMethod" id=link217 onMouseOver="ShowTip(event, 'tt217', 'link217')" onMouseOut="HideTip('tt217')" class=ISymbol>gdSetErrorMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdSupportsFileType" id=link218 onMouseOver="ShowTip(event, 'tt218', 'link218')" onMouseOut="HideTip('tt218')" class=ISymbol>gdSupportsFileType</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineBoundingBox" id=link219 onMouseOver="ShowTip(event, 'tt219', 'link219')" onMouseOut="HideTip('tt219')" class=ISymbol>gdTransformAffineBoundingBox</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineCopy" id=link220 onMouseOver="ShowTip(event, 'tt220', 'link220')" onMouseOut="HideTip('tt220')" class=ISymbol>gdTransformAffineCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineGetImage" id=link221 onMouseOver="ShowTip(event, 'tt221', 'link221')" onMouseOut="HideTip('tt221')" class=ISymbol>gdTransformAffineGetImage</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdVersionString" id=link222 onMouseOver="ShowTip(event, 'tt222', 'link222')" onMouseOut="HideTip('tt222')" class=ISymbol>gdVersionString</a></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineApplyToPointF (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a point (floating point gdPointF)</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineConcat (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Concat (Multiply) two affine transformation matrices.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineEqual (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether two affine transformations are equal. </div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineFlip (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_h,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_v</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Flip an affine transformation horizontally or vertically.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineIdentity (</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up the identity matrix.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineInvert (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Find the inverse of an affine transformation.</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRectilinear (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether the affine transformation is axis aligned. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRotate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a rotation affine transform.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineScale (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a scaling matrix.</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearHorizontal(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a horizontal shearing matrix || becomes \\.</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearVertical(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a vertical shearing matrix, columns are untouched.</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineTranslate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a translation matrix.</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAlphaBlend (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdClearErrorMethod(</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdColorMapLookup(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdColorMap&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color_map,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>color_name,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdDPExtractData (</td><td class="PTypePrefix prettyprint " nowrap>struct&nbsp;</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdExtraVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFontCacheSetup (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFontCacheShutdown ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetGiant (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetLarge (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetMediumBold (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetSmall (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt24"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetTiny (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdFree (</td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ptr</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFreeFontCache ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFTUseFontConfig(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt28"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAABlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>NO-OP, kept for library compatibility.</div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAlphaBlending (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alphaBlendingArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt31"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmp(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt32"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmpCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt33"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageBmpPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt34"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBoundsSafe (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt35"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBrightness(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>brightness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set the brightness level level for the image src.</div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageChar (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt37"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCharUp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageClone (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>red,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>green,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>blue,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alpha</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocateAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt42"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosest (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt43"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt44"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestHWB (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt45"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorDeallocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt46"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExact (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt47"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExactAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt48"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorMatch (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Bring the palette colors in im2 to be closer to im1.</div></div><div class=CToolTip id="tt49"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt50"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceArray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>len,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt51"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceCallback (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdCallbackImageColor&nbsp;</td><td class="PParameter prettyprint " nowrap>callback</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt52"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceThreshold (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt53"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolve (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageColorResolve is an alternative for the code fragment</div></div><div class=CToolTip id="tt54"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt55"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorTransparent (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt56"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageCompare (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt57"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageContrast(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>contrast</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt58"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageConvolution(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter[3][3],</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter_div,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>offset</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt59"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt60"><div class=CFunction>Return a copy of the source image <u>src</u> blurred according to the parameters using the Gaussian Blur algorithm.</div></div><div class=CToolTip id="tt61"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMerge (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt62"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMergeGray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt63"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResampled (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt64"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResized (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt65"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyRotated (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcWidth,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcHeight,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt66"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreate (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreate is called to create palette-based images, with no more than 256 colors. </div></div><div class=CToolTip id="tt67"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmp(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt68"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt69"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt70"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromFile(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Read an image file of any supported.</div></div><div class=CToolTip id="tt71"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd is called to load images from gd format files. </div></div><div class=CToolTip id="tt72"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2 (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2 is called to load images from gd2 format files. </div></div><div class=CToolTip id="tt73"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ctx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD2 image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt74"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Part (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. </div></div><div class=CToolTip id="tt75"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>in,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt76"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt77"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ptr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt78"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdCtx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt79"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt80"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGif(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fdFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGif is called to load images from GIF format files. </div></div><div class=CToolTip id="tt81"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromGif.</div></div><div class=CToolTip id="tt82"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt83"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpeg(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpegEx.</div></div><div class=CToolTip id="tt84"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt85"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtxEx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt86"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegEx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files. </div></div><div class=CToolTip id="tt87"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt88"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtrEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt89"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPng (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromPng is called to load images from PNG format files. </div></div><div class=CToolTip id="tt90"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt91"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt92"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng for documentation. </div></div><div class=CToolTip id="tt93"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTga(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fp</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a TGA file</div></div><div class=CToolTip id="tt94"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a gdIOCtx referencing a TGA binary file.</div></div><div class=CToolTip id="tt95"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt96"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Create a gdImage from a TIFF file input from an gdIOCtx.</div></div><div class=CToolTip id="tt97"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt98"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMP(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromWBMP is called to load images from WBMP format files. </div></div><div class=CToolTip id="tt99"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a WBMP image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt100"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt101"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXbm(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from X bitmap format files. </div></div><div class=CToolTip id="tt102"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXpm(</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. </div></div><div class=CToolTip id="tt103"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreatePaletteFromTrueColor (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt104"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateTrueColor (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. </div></div><div class=CToolTip id="tt105"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCrop(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdRect&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>crop</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt106"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropAuto(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt107"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropThreshold(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt108"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDashedLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt109"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><div class=CToolTip id="tt110"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEdgeDetectQuick(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt111"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageEllipse(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt112"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEmboss(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt113"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageFile(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes an image to a file in the format indicated by the filename.</div></div><div class=CToolTip id="tt114"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFill(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>nc</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt115"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>style</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt116"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledEllipse (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt117"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt118"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt119"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFillToBorder (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>border,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt120"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipBoth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt121"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipHorizontal(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt122"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipVertical(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt123"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGaussianBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image. </div></div><div class=CToolTip id="tt124"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt125"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd2 (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt126"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGd2Ptr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt127"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGdPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt128"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x2P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y2P</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt129"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdInterpolationMethod gdImageGetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return the interpolation mode set in &lsquo;im&rsquo;. </div></div><div class=CToolTip id="tt130"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt131"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetTrueColorPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt132"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGif(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGif outputs the specified image to the specified file in GIF format. </div></div><div class=CToolTip id="tt133"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAdd(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin. </div></div><div class=CToolTip id="tt134"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAddCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Adds an animation frame via a gdIOCtxPtr. </div></div><div class=CToolTip id="tt135"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimAddPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt136"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBegin(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function must be called as the first function when creating a GIF animation. </div></div><div class=CToolTip id="tt137"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBeginCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to gdIOCtx. </div></div><div class=CToolTip id="tt138"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimBeginPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to a memory buffer. </div></div><div class=CToolTip id="tt139"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEnd(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Terminates the GIF file properly.</div></div><div class=CToolTip id="tt140"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEndCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.</div></div><div class=CToolTip id="tt141"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimEndPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt142"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes a GIF image via a gdIOCtx. </div></div><div class=CToolTip id="tt143"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data. </div></div><div class=CToolTip id="tt144"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGrayScale(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert the image src to a grayscale image.</div></div><div class=CToolTip id="tt145"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageInterlace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>interlaceArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt146"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpeg(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageJpeg outputs the specified image to the specified file in JPEG format. </div></div><div class=CToolTip id="tt147"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpegCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as JPEG data via a gdIOCtx. </div></div><div class=CToolTip id="tt148"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageJpegPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. </div></div><div class=CToolTip id="tt149"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Bresenham as presented in Foley &amp; Van Dam.</div></div><div class=CToolTip id="tt150"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageMeanRemoval(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt151"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageNegate(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Invert src image.</div></div><div class=CToolTip id="tt152"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageNeuQuant(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sample_factor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt153"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageOpenPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt154"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePaletteCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>to,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>from</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt155"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePaletteToTrueColor(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert a palette image to true color.</div></div><div class=CToolTip id="tt156"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePixelate(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>block_size,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt157"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePng (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngEx with compression of -1.</div></div><div class=CToolTip id="tt158"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngCtx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngCtxEx with compression of -1. </div></div><div class=CToolTip id="tt159"><div class=CFunction>Outputs the given image as PNG data, but using a gdIOCtx instead of a file. </div></div><div class=CToolTip id="tt160"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImagePngEx outputs the specified image to the specified file in PNG format. </div></div><div class=CToolTip id="tt161"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngPtrEx with compression of -1.</div></div><div class=CToolTip id="tt162"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data. </div></div><div class=CToolTip id="tt163"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngToSink (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>outSink</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt164"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt165"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt166"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageRotateInterpolated(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>bgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt167"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSaveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>saveAlphaArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt168"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageScale(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_width,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_height</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt169"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatter(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt170"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colors[],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>num_colors</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt171"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterEx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdScatterPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>scatter</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt172"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSelectiveBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt173"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliased (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt174"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliasedDontBlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dont_blend</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt175"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetBrush (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>brush</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt176"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt177"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdInterpolationMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>id</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt178"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt179"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetResolution(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt180"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetStyle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>style,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>noOfPixels</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt181"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetThickness (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>thickness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt182"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetTile (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>tile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt183"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSharpen (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Sharpen function added on 2003-11-19 by Paul Troughton (paul&lt;dot&gt;troughton&lt;at&gt;ieee&lt;dot&gt;org) Simple 3x3 convolution kernel Makes use of seperability Faster, but less flexible, than full-blown unsharp masking pct is sharpening percentage, and can be greater than 100 Silently does nothing to non-truecolor images Silently does nothing for pct&lt;0, as not a useful blurring function Leaves transparency/alpha-channel untouched</div></div><div class=CToolTip id="tt184"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSmooth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>weight</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt185"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageSquareToCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>radius</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt186"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt187"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt188"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFT (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Render a utf8 string onto a gd image.</div></div><div class=CToolTip id="tt189"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFTCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>radius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>textRadius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fillPortion,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>font,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>points,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>top,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>bottom,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt190"><div class=CFunction>gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.</div></div><div class=CToolTip id="tt191"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringTTF (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt192"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt193"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt194"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiff(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt195"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiffCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the gd image as a tiff file.</div></div><div class=CToolTip id="tt196"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageTiffPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt197"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPalette (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt198"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPaletteSetMethod (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>method,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>speed</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Selects quantization method used for subsequent gdImageTrueColorToPalette calls. </div></div><div class=CToolTip id="tt199"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTrueColorToPaletteSetQuality (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>min_quality,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for. </div></div><div class=CToolTip id="tt200"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMP(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt201"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMPCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as a wbmp file</div></div><div class=CToolTip id="tt202"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWBMPPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt203"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt204"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebpEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt205"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt206"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt207"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageXbmCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>file_name,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt208"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerMultiply (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Apply &lsquo;multiply&rsquo; effect.</div></div><div class=CToolTip id="tt209"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerOverlay (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt210"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMajorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt211"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMinorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt212"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt213"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtxEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>freeOKFlag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt214"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewFileCtx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>f</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt215"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewSSCtx(</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>snk</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt216"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdReleaseVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt217"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdSetErrorMethod(</td><td class="PType prettyprint " nowrap>gdErrorMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>error_method</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt218"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdSupportsFileType(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>writing</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Tests if a given file type is supported by GD.</div></div><div class=CToolTip id="tt219"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineBoundingBox(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>bbox</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the bounding box of an affine transformation applied to a rectangular area gdRect</div></div><div class=CToolTip id="tt220"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineCopy(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src_region,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and copy the result in a destination to the given position.</div></div><div class=CToolTip id="tt221"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineGetImage(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src_area,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and return an image containing the complete transformation.</div></div><div class=CToolTip id="tt222"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdVersionString()</td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Functions</div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/General.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html
new file mode 100644
index 00000000000..a98f68313d4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html
@@ -0,0 +1,46 @@
+<!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"><title>Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Index</div><div class=INavigationBar>$#! &middot; <a href="#Numbers">0-9</a> &middot; <a href="#A">A</a> &middot; B &middot; <a href="#C">C</a> &middot; D &middot; E &middot; <a href="#F">F</a> &middot; <a href="General2.html#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; <a href="General3.html#L">L</a> &middot; <a href="General3.html#M">M</a> &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; <a href="General3.html#T">T</a> &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="Numbers"></a>0-9</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/preamble-txt.html#About_LibGD_2.2.3" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>3</a>, <span class=IParent>About LibGD 2::<wbr>2</span></td></tr><tr><td class=IHeading><a name="A"></a>A</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#Affine_transformation" class=ISymbol>Affine transformation</a></td></tr><tr><td class=IHeading><a name="C"></a>C</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#Crop" class=ISymbol>Crop</a></td></tr><tr><td class=IHeading><a name="F"></a>F</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>Functions</span><div class=ISubIndex><a href="../files/gd-c.html#Functions" class=IFile>gd.c</a><a href="../files/gd_bmp-c.html#Functions" class=IFile>gd_bmp.c</a><a href="../files/gd_crop-c.html#Functions" class=IFile>gd_crop.c</a><a href="../files/gd_filename-c.html#Functions" class=IFile>gd_filename.c</a><a href="../files/gd_filter-c.html#Functions" class=IFile>gd_filter.c</a><a href="../files/gd_gd-c.html#Functions" class=IFile>gd_gd.c</a><a href="../files/gd_gd2-c.html#Functions" class=IFile>gd_gd2.c</a><a href="../files/gd_gif_in-c.html#Functions" class=IFile>gd_gif_in.c</a><a href="../files/gd_gif_out-c.html#Functions" class=IFile>gd_gif_out.c</a><a href="../files/gd_interpolation-c.html#Functions" class=IFile>gd_interpolation.c</a><a href="../files/gd_io_dp-c.html#Functions" class=IFile>gd_io_dp.c</a><a href="../files/gd_jpeg-c.html#Functions" class=IFile>gd_jpeg.c</a><a href="../files/gd_matrix-c.html#Functions" class=IFile>gd_matrix.c</a><a href="../files/gd_png-c.html#Functions" class=IFile>gd_png.c</a><a href="../files/gd_ss-c.html#Functions" class=IFile>gd_ss.c</a><a href="../files/gd_tga-c.html#Functions" class=IFile>gd_tga.c</a><a href="../files/gd_tiff-c.html#Functions" class=IFile>gd_tiff.c</a><a href="../files/gd_topal-c.html#Functions" class=IFile>gd_topal.c</a><a href="../files/gd_transform-c.html#Functions" class=IFile>gd_transform.c</a><a href="../files/gd_version-c.html#Functions" class=IFile>gd_version.c</a><a href="../files/gd_wbmp-c.html#Functions" class=IFile>gd_wbmp.c</a><a href="../files/gd_webp-c.html#Functions" class=IFile>gd_webp.c</a><a href="../files/gd_xbm-c.html#Functions" class=IFile>gd_xbm.c</a><a href="../files/gdft-c.html#Functions" class=IFile>gdft.c</a><a href="../files/gdfx-c.html#Functions" class=IFile>gdfx.c</a></div></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CSection>gd is a graphics library. </div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Everything</div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/General2.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html
new file mode 100644
index 00000000000..32323a5972b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html
@@ -0,0 +1,34 @@
+<!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"><title>Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Index</div><div class=INavigationBar>$#! &middot; <a href="General.html#Numbers">0-9</a> &middot; <a href="General.html#A">A</a> &middot; B &middot; <a href="General.html#C">C</a> &middot; D &middot; E &middot; <a href="General.html#F">F</a> &middot; <a href="#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; <a href="General3.html#L">L</a> &middot; <a href="General3.html#M">M</a> &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; <a href="General3.html#T">T</a> &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gd.c" class=ISymbol>gd.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gd.h" class=ISymbol>gd.h</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BELL" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>GD_BELL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BESSEL" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>GD_BESSEL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BICUBIC" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>GD_BICUBIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BICUBIC_FIXED" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>GD_BICUBIC_FIXED</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BILINEAR_FIXED" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>GD_BILINEAR_FIXED</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BLACKMAN" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>GD_BLACKMAN</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gd_bmp.c" class=ISymbol>gd_bmp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BOX" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=ISymbol>GD_BOX</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_BSPLINE" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=ISymbol>GD_BSPLINE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CATMULLROM" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=ISymbol>GD_CATMULLROM</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gd_crop.c" class=ISymbol>gd_crop.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_BLACK" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>GD_CROP_BLACK</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_DEFAULT" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>GD_CROP_DEFAULT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_SIDES" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>GD_CROP_SIDES</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_TRANSPARENT" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>GD_CROP_TRANSPARENT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_CROP_WHITE" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>GD_CROP_WHITE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gd_filename.c" class=ISymbol>gd_filename.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gd_filter.c" class=ISymbol>gd_filter.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_GAUSSIAN" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>GD_GAUSSIAN</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gd_gd.c" class=ISymbol>gd_gd.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gd_gd2.c" class=ISymbol>gd_gd2.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_GENERALIZED_CUBIC" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>GD_GENERALIZED_CUBIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gd_gif_in.c" class=ISymbol>gd_gif_in.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gd_gif_out.c" class=ISymbol>gd_gif_out.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HAMMING" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>GD_HAMMING</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HANNING" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>GD_HANNING</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_HERMITE" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>GD_HERMITE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gd_interpolation.c" class=ISymbol>gd_interpolation.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io-h.html#gd_io.h" class=ISymbol>gd_io.h</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gd_io_dp.c" class=ISymbol>gd_io_dp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gd_jpeg.c" class=ISymbol>gd_jpeg.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_LINEAR" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>GD_LINEAR</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_MITCHELL" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>GD_MITCHELL</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_NEAREST_NEIGHBOUR" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>GD_NEAREST_NEIGHBOUR</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gd_png.c" class=ISymbol>gd_png.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_POWER" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')" class=ISymbol>GD_POWER</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_QUADRATIC" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')" class=ISymbol>GD_QUADRATIC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_SINC" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')" class=ISymbol>GD_SINC</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gd_ss.c" class=ISymbol>gd_ss.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gd_tga.c" class=ISymbol>gd_tga.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gd_tiff.c" class=ISymbol>gd_tiff.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gd_topal.c" class=ISymbol>gd_topal.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gd_transform.c" class=ISymbol>gd_transform.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_TRIANGLE" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')" class=ISymbol>GD_TRIANGLE</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gd_version.c" class=ISymbol>gd_version.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gd_wbmp.c" class=ISymbol>gd_wbmp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gd_webp.c" class=ISymbol>gd_webp.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GD_WEIGHTED4" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')" class=ISymbol>GD_WEIGHTED4</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gd_xbm.c" class=ISymbol>gd_xbm.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineApplyToPointF" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')" class=ISymbol>gdAffineApplyToPointF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineConcat" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')" class=ISymbol>gdAffineConcat</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineEqual" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')" class=ISymbol>gdAffineEqual</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineFlip" id=link32 onMouseOver="ShowTip(event, 'tt32', 'link32')" onMouseOut="HideTip('tt32')" class=ISymbol>gdAffineFlip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineIdentity" id=link33 onMouseOver="ShowTip(event, 'tt33', 'link33')" onMouseOut="HideTip('tt33')" class=ISymbol>gdAffineIdentity</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineInvert" id=link34 onMouseOver="ShowTip(event, 'tt34', 'link34')" onMouseOut="HideTip('tt34')" class=ISymbol>gdAffineInvert</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRectilinear" id=link35 onMouseOver="ShowTip(event, 'tt35', 'link35')" onMouseOut="HideTip('tt35')" class=ISymbol>gdAffineRectilinear</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRotate" id=link36 onMouseOver="ShowTip(event, 'tt36', 'link36')" onMouseOut="HideTip('tt36')" class=ISymbol>gdAffineRotate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineScale" id=link37 onMouseOver="ShowTip(event, 'tt37', 'link37')" onMouseOut="HideTip('tt37')" class=ISymbol>gdAffineScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearHorizontal" id=link38 onMouseOver="ShowTip(event, 'tt38', 'link38')" onMouseOut="HideTip('tt38')" class=ISymbol>gdAffineShearHorizontal</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearVertical" id=link39 onMouseOver="ShowTip(event, 'tt39', 'link39')" onMouseOut="HideTip('tt39')" class=ISymbol>gdAffineShearVertical</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#gdAffineTranslate" id=link40 onMouseOver="ShowTip(event, 'tt40', 'link40')" onMouseOut="HideTip('tt40')" class=ISymbol>gdAffineTranslate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdAlphaBlend" id=link41 onMouseOver="ShowTip(event, 'tt41', 'link41')" onMouseOut="HideTip('tt41')" class=ISymbol>gdAlphaBlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdClearErrorMethod" id=link42 onMouseOver="ShowTip(event, 'tt42', 'link42')" onMouseOut="HideTip('tt42')" class=ISymbol>gdClearErrorMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_color_map-c.html#gdColorMapLookup" id=link43 onMouseOver="ShowTip(event, 'tt43', 'link43')" onMouseOut="HideTip('tt43')" class=ISymbol>gdColorMapLookup</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdCropMode" class=ISymbol>gdCropMode</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalNone" id=link44 onMouseOver="ShowTip(event, 'tt44', 'link44')" onMouseOut="HideTip('tt44')" class=ISymbol>gdDisposalNone</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalRestoreBackground" id=link45 onMouseOver="ShowTip(event, 'tt45', 'link45')" onMouseOut="HideTip('tt45')" class=ISymbol>gdDisposalRestoreBackground</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalRestorePrevious" id=link46 onMouseOver="ShowTip(event, 'tt46', 'link46')" onMouseOut="HideTip('tt46')" class=ISymbol>gdDisposalRestorePrevious</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdDisposalUnknown" id=link47 onMouseOver="ShowTip(event, 'tt47', 'link47')" onMouseOut="HideTip('tt47')" class=ISymbol>gdDisposalUnknown</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdDPExtractData" id=link48 onMouseOver="ShowTip(event, 'tt48', 'link48')" onMouseOut="HideTip('tt48')" class=ISymbol>gdDPExtractData</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdExtraVersion" id=link49 onMouseOver="ShowTip(event, 'tt49', 'link49')" onMouseOut="HideTip('tt49')" class=ISymbol>gdExtraVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFont" class=ISymbol>gdFont</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFontCacheSetup" id=link50 onMouseOver="ShowTip(event, 'tt50', 'link50')" onMouseOut="HideTip('tt50')" class=ISymbol>gdFontCacheSetup</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFontCacheShutdown" id=link51 onMouseOver="ShowTip(event, 'tt51', 'link51')" onMouseOut="HideTip('tt51')" class=ISymbol>gdFontCacheShutdown</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontg-c.html#gdFontGetGiant" id=link52 onMouseOver="ShowTip(event, 'tt52', 'link52')" onMouseOut="HideTip('tt52')" class=ISymbol>gdFontGetGiant</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontl-c.html#gdFontGetLarge" id=link53 onMouseOver="ShowTip(event, 'tt53', 'link53')" onMouseOut="HideTip('tt53')" class=ISymbol>gdFontGetLarge</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontmb-c.html#gdFontGetMediumBold" id=link54 onMouseOver="ShowTip(event, 'tt54', 'link54')" onMouseOut="HideTip('tt54')" class=ISymbol>gdFontGetMediumBold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfonts-c.html#gdFontGetSmall" id=link55 onMouseOver="ShowTip(event, 'tt55', 'link55')" onMouseOut="HideTip('tt55')" class=ISymbol>gdFontGetSmall</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfontt-c.html#gdFontGetTiny" id=link56 onMouseOver="ShowTip(event, 'tt56', 'link56')" onMouseOut="HideTip('tt56')" class=ISymbol>gdFontGetTiny</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFontPtr" id=link57 onMouseOver="ShowTip(event, 'tt57', 'link57')" onMouseOut="HideTip('tt57')" class=ISymbol>gdFontPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdhelpers-c.html#gdFree" id=link58 onMouseOver="ShowTip(event, 'tt58', 'link58')" onMouseOut="HideTip('tt58')" class=ISymbol>gdFree</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFreeFontCache" id=link59 onMouseOver="ShowTip(event, 'tt59', 'link59')" onMouseOut="HideTip('tt59')" class=ISymbol>gdFreeFontCache</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdft.c" class=ISymbol>gdft.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFTStringExtra" class=ISymbol>gdFTStringExtra</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFTStringExtraPtr" id=link60 onMouseOver="ShowTip(event, 'tt60', 'link60')" onMouseOut="HideTip('tt60')" class=ISymbol>gdFTStringExtraPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdFTUseFontConfig" id=link61 onMouseOver="ShowTip(event, 'tt61', 'link61')" onMouseOut="HideTip('tt61')" class=ISymbol>gdFTUseFontConfig</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdfx.c" class=ISymbol>gdfx.c</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImage" class=ISymbol>gdImage</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageAABlend" id=link62 onMouseOver="ShowTip(event, 'tt62', 'link62')" onMouseOut="HideTip('tt62')" class=ISymbol>gdImageAABlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageAlphaBlending" id=link63 onMouseOver="ShowTip(event, 'tt63', 'link63')" onMouseOut="HideTip('tt63')" class=ISymbol>gdImageAlphaBlending</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageArc" id=link64 onMouseOver="ShowTip(event, 'tt64', 'link64')" onMouseOut="HideTip('tt64')" class=ISymbol>gdImageArc</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmp" id=link65 onMouseOver="ShowTip(event, 'tt65', 'link65')" onMouseOut="HideTip('tt65')" class=ISymbol>gdImageBmp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpCtx" id=link66 onMouseOver="ShowTip(event, 'tt66', 'link66')" onMouseOut="HideTip('tt66')" class=ISymbol>gdImageBmpCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpPtr" id=link67 onMouseOver="ShowTip(event, 'tt67', 'link67')" onMouseOut="HideTip('tt67')" class=ISymbol>gdImageBmpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageBoundsSafe" id=link68 onMouseOver="ShowTip(event, 'tt68', 'link68')" onMouseOut="HideTip('tt68')" class=ISymbol>gdImageBoundsSafe</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageBrightness" id=link69 onMouseOver="ShowTip(event, 'tt69', 'link69')" onMouseOut="HideTip('tt69')" class=ISymbol>gdImageBrightness</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageChar" id=link70 onMouseOver="ShowTip(event, 'tt70', 'link70')" onMouseOut="HideTip('tt70')" class=ISymbol>gdImageChar</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCharUp" id=link71 onMouseOver="ShowTip(event, 'tt71', 'link71')" onMouseOut="HideTip('tt71')" class=ISymbol>gdImageCharUp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageClone" id=link72 onMouseOver="ShowTip(event, 'tt72', 'link72')" onMouseOut="HideTip('tt72')" class=ISymbol>gdImageClone</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageColor" id=link73 onMouseOver="ShowTip(event, 'tt73', 'link73')" onMouseOut="HideTip('tt73')" class=ISymbol>gdImageColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorAllocate" id=link74 onMouseOver="ShowTip(event, 'tt74', 'link74')" onMouseOut="HideTip('tt74')" class=ISymbol>gdImageColorAllocate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorAllocateAlpha" id=link75 onMouseOver="ShowTip(event, 'tt75', 'link75')" onMouseOut="HideTip('tt75')" class=ISymbol>gdImageColorAllocateAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosest" id=link76 onMouseOver="ShowTip(event, 'tt76', 'link76')" onMouseOut="HideTip('tt76')" class=ISymbol>gdImageColorClosest</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosestAlpha" id=link77 onMouseOver="ShowTip(event, 'tt77', 'link77')" onMouseOut="HideTip('tt77')" class=ISymbol>gdImageColorClosestAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorClosestHWB" id=link78 onMouseOver="ShowTip(event, 'tt78', 'link78')" onMouseOut="HideTip('tt78')" class=ISymbol>gdImageColorClosestHWB</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorDeallocate" id=link79 onMouseOver="ShowTip(event, 'tt79', 'link79')" onMouseOut="HideTip('tt79')" class=ISymbol>gdImageColorDeallocate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorExact" id=link80 onMouseOver="ShowTip(event, 'tt80', 'link80')" onMouseOut="HideTip('tt80')" class=ISymbol>gdImageColorExact</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorExactAlpha" id=link81 onMouseOver="ShowTip(event, 'tt81', 'link81')" onMouseOut="HideTip('tt81')" class=ISymbol>gdImageColorExactAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_color_match-c.html#gdImageColorMatch" id=link82 onMouseOver="ShowTip(event, 'tt82', 'link82')" onMouseOut="HideTip('tt82')" class=ISymbol>gdImageColorMatch</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplace" id=link83 onMouseOver="ShowTip(event, 'tt83', 'link83')" onMouseOut="HideTip('tt83')" class=ISymbol>gdImageColorReplace</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceArray" id=link84 onMouseOver="ShowTip(event, 'tt84', 'link84')" onMouseOut="HideTip('tt84')" class=ISymbol>gdImageColorReplaceArray</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceCallback" id=link85 onMouseOver="ShowTip(event, 'tt85', 'link85')" onMouseOut="HideTip('tt85')" class=ISymbol>gdImageColorReplaceCallback</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceThreshold" id=link86 onMouseOver="ShowTip(event, 'tt86', 'link86')" onMouseOut="HideTip('tt86')" class=ISymbol>gdImageColorReplaceThreshold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorResolve" id=link87 onMouseOver="ShowTip(event, 'tt87', 'link87')" onMouseOut="HideTip('tt87')" class=ISymbol>gdImageColorResolve</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorResolveAlpha" id=link88 onMouseOver="ShowTip(event, 'tt88', 'link88')" onMouseOut="HideTip('tt88')" class=ISymbol>gdImageColorResolveAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageColorTransparent" id=link89 onMouseOver="ShowTip(event, 'tt89', 'link89')" onMouseOut="HideTip('tt89')" class=ISymbol>gdImageColorTransparent</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCompare" id=link90 onMouseOver="ShowTip(event, 'tt90', 'link90')" onMouseOut="HideTip('tt90')" class=ISymbol>gdImageCompare</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageContrast" id=link91 onMouseOver="ShowTip(event, 'tt91', 'link91')" onMouseOut="HideTip('tt91')" class=ISymbol>gdImageContrast</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageConvolution" id=link92 onMouseOver="ShowTip(event, 'tt92', 'link92')" onMouseOut="HideTip('tt92')" class=ISymbol>gdImageConvolution</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopy" id=link93 onMouseOver="ShowTip(event, 'tt93', 'link93')" onMouseOut="HideTip('tt93')" class=ISymbol>gdImageCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageCopyGaussianBlurred" id=link94 onMouseOver="ShowTip(event, 'tt94', 'link94')" onMouseOut="HideTip('tt94')" class=ISymbol>gdImageCopyGaussianBlurred</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyMerge" id=link95 onMouseOver="ShowTip(event, 'tt95', 'link95')" onMouseOut="HideTip('tt95')" class=ISymbol>gdImageCopyMerge</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyMergeGray" id=link96 onMouseOver="ShowTip(event, 'tt96', 'link96')" onMouseOut="HideTip('tt96')" class=ISymbol>gdImageCopyMergeGray</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyResampled" id=link97 onMouseOver="ShowTip(event, 'tt97', 'link97')" onMouseOut="HideTip('tt97')" class=ISymbol>gdImageCopyResampled</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyResized" id=link98 onMouseOver="ShowTip(event, 'tt98', 'link98')" onMouseOut="HideTip('tt98')" class=ISymbol>gdImageCopyResized</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCopyRotated" id=link99 onMouseOver="ShowTip(event, 'tt99', 'link99')" onMouseOut="HideTip('tt99')" class=ISymbol>gdImageCopyRotated</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCreate" id=link100 onMouseOver="ShowTip(event, 'tt100', 'link100')" onMouseOut="HideTip('tt100')" class=ISymbol>gdImageCreate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmp" id=link101 onMouseOver="ShowTip(event, 'tt101', 'link101')" onMouseOut="HideTip('tt101')" class=ISymbol>gdImageCreateFromBmp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpCtx" id=link102 onMouseOver="ShowTip(event, 'tt102', 'link102')" onMouseOut="HideTip('tt102')" class=ISymbol>gdImageCreateFromBmpCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpPtr" id=link103 onMouseOver="ShowTip(event, 'tt103', 'link103')" onMouseOut="HideTip('tt103')" class=ISymbol>gdImageCreateFromBmpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdImageCreateFromFile" id=link104 onMouseOver="ShowTip(event, 'tt104', 'link104')" onMouseOut="HideTip('tt104')" class=ISymbol>gdImageCreateFromFile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGd" id=link105 onMouseOver="ShowTip(event, 'tt105', 'link105')" onMouseOut="HideTip('tt105')" class=ISymbol>gdImageCreateFromGd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2" id=link106 onMouseOver="ShowTip(event, 'tt106', 'link106')" onMouseOut="HideTip('tt106')" class=ISymbol>gdImageCreateFromGd2</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ctx" id=link107 onMouseOver="ShowTip(event, 'tt107', 'link107')" onMouseOut="HideTip('tt107')" class=ISymbol>gdImageCreateFromGd2Ctx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Part" id=link108 onMouseOver="ShowTip(event, 'tt108', 'link108')" onMouseOut="HideTip('tt108')" class=ISymbol>gdImageCreateFromGd2Part</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartCtx" id=link109 onMouseOver="ShowTip(event, 'tt109', 'link109')" onMouseOut="HideTip('tt109')" class=ISymbol>gdImageCreateFromGd2PartCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartPtr" id=link110 onMouseOver="ShowTip(event, 'tt110', 'link110')" onMouseOut="HideTip('tt110')" class=ISymbol>gdImageCreateFromGd2PartPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ptr" id=link111 onMouseOver="ShowTip(event, 'tt111', 'link111')" onMouseOut="HideTip('tt111')" class=ISymbol>gdImageCreateFromGd2Ptr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdCtx" id=link112 onMouseOver="ShowTip(event, 'tt112', 'link112')" onMouseOut="HideTip('tt112')" class=ISymbol>gdImageCreateFromGdCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdPtr" id=link113 onMouseOver="ShowTip(event, 'tt113', 'link113')" onMouseOut="HideTip('tt113')" class=ISymbol>gdImageCreateFromGdPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGif" id=link114 onMouseOver="ShowTip(event, 'tt114', 'link114')" onMouseOut="HideTip('tt114')" class=ISymbol>gdImageCreateFromGif</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifCtx" id=link115 onMouseOver="ShowTip(event, 'tt115', 'link115')" onMouseOut="HideTip('tt115')" class=ISymbol>gdImageCreateFromGifCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifPtr" id=link116 onMouseOver="ShowTip(event, 'tt116', 'link116')" onMouseOut="HideTip('tt116')" class=ISymbol>gdImageCreateFromGifPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpeg" id=link117 onMouseOver="ShowTip(event, 'tt117', 'link117')" onMouseOut="HideTip('tt117')" class=ISymbol>gdImageCreateFromJpeg</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtx" id=link118 onMouseOver="ShowTip(event, 'tt118', 'link118')" onMouseOut="HideTip('tt118')" class=ISymbol>gdImageCreateFromJpegCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtxEx" id=link119 onMouseOver="ShowTip(event, 'tt119', 'link119')" onMouseOut="HideTip('tt119')" class=ISymbol>gdImageCreateFromJpegCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegEx" id=link120 onMouseOver="ShowTip(event, 'tt120', 'link120')" onMouseOut="HideTip('tt120')" class=ISymbol>gdImageCreateFromJpegEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtr" id=link121 onMouseOver="ShowTip(event, 'tt121', 'link121')" onMouseOut="HideTip('tt121')" class=ISymbol>gdImageCreateFromJpegPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtrEx" id=link122 onMouseOver="ShowTip(event, 'tt122', 'link122')" onMouseOut="HideTip('tt122')" class=ISymbol>gdImageCreateFromJpegPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPng" id=link123 onMouseOver="ShowTip(event, 'tt123', 'link123')" onMouseOut="HideTip('tt123')" class=ISymbol>gdImageCreateFromPng</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngCtx" id=link124 onMouseOver="ShowTip(event, 'tt124', 'link124')" onMouseOut="HideTip('tt124')" class=ISymbol>gdImageCreateFromPngCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngPtr" id=link125 onMouseOver="ShowTip(event, 'tt125', 'link125')" onMouseOut="HideTip('tt125')" class=ISymbol>gdImageCreateFromPngPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gdImageCreateFromPngSource" id=link126 onMouseOver="ShowTip(event, 'tt126', 'link126')" onMouseOut="HideTip('tt126')" class=ISymbol>gdImageCreateFromPngSource</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTga" id=link127 onMouseOver="ShowTip(event, 'tt127', 'link127')" onMouseOut="HideTip('tt127')" class=ISymbol>gdImageCreateFromTga</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaCtx" id=link128 onMouseOver="ShowTip(event, 'tt128', 'link128')" onMouseOut="HideTip('tt128')" class=ISymbol>gdImageCreateFromTgaCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaPtr" id=link129 onMouseOver="ShowTip(event, 'tt129', 'link129')" onMouseOut="HideTip('tt129')" class=ISymbol>gdImageCreateFromTgaPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTIFF" class=ISymbol>gdImageCreateFromTIFF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffCtx" id=link130 onMouseOver="ShowTip(event, 'tt130', 'link130')" onMouseOut="HideTip('tt130')" class=ISymbol>gdImageCreateFromTiffCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffPtr" id=link131 onMouseOver="ShowTip(event, 'tt131', 'link131')" onMouseOut="HideTip('tt131')" class=ISymbol>gdImageCreateFromTiffPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMP" id=link132 onMouseOver="ShowTip(event, 'tt132', 'link132')" onMouseOut="HideTip('tt132')" class=ISymbol>gdImageCreateFromWBMP</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPCtx" id=link133 onMouseOver="ShowTip(event, 'tt133', 'link133')" onMouseOut="HideTip('tt133')" class=ISymbol>gdImageCreateFromWBMPCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPPtr" id=link134 onMouseOver="ShowTip(event, 'tt134', 'link134')" onMouseOut="HideTip('tt134')" class=ISymbol>gdImageCreateFromWBMPPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gdImageCreateFromXbm" id=link135 onMouseOver="ShowTip(event, 'tt135', 'link135')" onMouseOut="HideTip('tt135')" class=ISymbol>gdImageCreateFromXbm</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdxpm-c.html#gdImageCreateFromXpm" id=link136 onMouseOver="ShowTip(event, 'tt136', 'link136')" onMouseOut="HideTip('tt136')" class=ISymbol>gdImageCreateFromXpm</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageCreatePaletteFromTrueColor" id=link137 onMouseOver="ShowTip(event, 'tt137', 'link137')" onMouseOut="HideTip('tt137')" class=ISymbol>gdImageCreatePaletteFromTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageCreateTrueColor" id=link138 onMouseOver="ShowTip(event, 'tt138', 'link138')" onMouseOut="HideTip('tt138')" class=ISymbol>gdImageCreateTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCrop" id=link139 onMouseOver="ShowTip(event, 'tt139', 'link139')" onMouseOut="HideTip('tt139')" class=ISymbol>gdImageCrop</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCropAuto" id=link140 onMouseOver="ShowTip(event, 'tt140', 'link140')" onMouseOut="HideTip('tt140')" class=ISymbol>gdImageCropAuto</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_crop-c.html#gdImageCropThreshold" id=link141 onMouseOver="ShowTip(event, 'tt141', 'link141')" onMouseOut="HideTip('tt141')" class=ISymbol>gdImageCropThreshold</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageDashedLine" id=link142 onMouseOver="ShowTip(event, 'tt142', 'link142')" onMouseOut="HideTip('tt142')" class=ISymbol>gdImageDashedLine</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageDestroy" id=link143 onMouseOver="ShowTip(event, 'tt143', 'link143')" onMouseOut="HideTip('tt143')" class=ISymbol>gdImageDestroy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageEdgeDetectQuick" id=link144 onMouseOver="ShowTip(event, 'tt144', 'link144')" onMouseOut="HideTip('tt144')" class=ISymbol>gdImageEdgeDetectQuick</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageEllipse" id=link145 onMouseOver="ShowTip(event, 'tt145', 'link145')" onMouseOut="HideTip('tt145')" class=ISymbol>gdImageEllipse</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageEmboss" id=link146 onMouseOver="ShowTip(event, 'tt146', 'link146')" onMouseOut="HideTip('tt146')" class=ISymbol>gdImageEmboss</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdImageFile" id=link147 onMouseOver="ShowTip(event, 'tt147', 'link147')" onMouseOut="HideTip('tt147')" class=ISymbol>gdImageFile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFill" id=link148 onMouseOver="ShowTip(event, 'tt148', 'link148')" onMouseOut="HideTip('tt148')" class=ISymbol>gdImageFill</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledArc" id=link149 onMouseOver="ShowTip(event, 'tt149', 'link149')" onMouseOut="HideTip('tt149')" class=ISymbol>gdImageFilledArc</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledEllipse" id=link150 onMouseOver="ShowTip(event, 'tt150', 'link150')" onMouseOut="HideTip('tt150')" class=ISymbol>gdImageFilledEllipse</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledPolygon" id=link151 onMouseOver="ShowTip(event, 'tt151', 'link151')" onMouseOut="HideTip('tt151')" class=ISymbol>gdImageFilledPolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFilledRectangle" id=link152 onMouseOver="ShowTip(event, 'tt152', 'link152')" onMouseOut="HideTip('tt152')" class=ISymbol>gdImageFilledRectangle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageFillToBorder" id=link153 onMouseOver="ShowTip(event, 'tt153', 'link153')" onMouseOut="HideTip('tt153')" class=ISymbol>gdImageFillToBorder</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipBoth" id=link154 onMouseOver="ShowTip(event, 'tt154', 'link154')" onMouseOut="HideTip('tt154')" class=ISymbol>gdImageFlipBoth</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipHorizontal" id=link155 onMouseOver="ShowTip(event, 'tt155', 'link155')" onMouseOut="HideTip('tt155')" class=ISymbol>gdImageFlipHorizontal</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipVertical" id=link156 onMouseOver="ShowTip(event, 'tt156', 'link156')" onMouseOut="HideTip('tt156')" class=ISymbol>gdImageFlipVertical</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageGaussianBlur" id=link157 onMouseOver="ShowTip(event, 'tt157', 'link157')" onMouseOut="HideTip('tt157')" class=ISymbol>gdImageGaussianBlur</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageGd" id=link158 onMouseOver="ShowTip(event, 'tt158', 'link158')" onMouseOut="HideTip('tt158')" class=ISymbol>gdImageGd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2" id=link159 onMouseOver="ShowTip(event, 'tt159', 'link159')" onMouseOut="HideTip('tt159')" class=ISymbol>gdImageGd2</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2Ptr" id=link160 onMouseOver="ShowTip(event, 'tt160', 'link160')" onMouseOut="HideTip('tt160')" class=ISymbol>gdImageGd2Ptr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gd-c.html#gdImageGdPtr" id=link161 onMouseOver="ShowTip(event, 'tt161', 'link161')" onMouseOut="HideTip('tt161')" class=ISymbol>gdImageGdPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetClip" id=link162 onMouseOver="ShowTip(event, 'tt162', 'link162')" onMouseOut="HideTip('tt162')" class=ISymbol>gdImageGetClip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageGetInterpolationMethod" id=link163 onMouseOver="ShowTip(event, 'tt163', 'link163')" onMouseOut="HideTip('tt163')" class=ISymbol>gdImageGetInterpolationMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetPixel" id=link164 onMouseOver="ShowTip(event, 'tt164', 'link164')" onMouseOut="HideTip('tt164')" class=ISymbol>gdImageGetPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageGetTrueColorPixel" id=link165 onMouseOver="ShowTip(event, 'tt165', 'link165')" onMouseOut="HideTip('tt165')" class=ISymbol>gdImageGetTrueColorPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGif" id=link166 onMouseOver="ShowTip(event, 'tt166', 'link166')" onMouseOut="HideTip('tt166')" class=ISymbol>gdImageGif</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImageGifAnim" class=ISymbol>gdImageGifAnim</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAdd" id=link167 onMouseOver="ShowTip(event, 'tt167', 'link167')" onMouseOut="HideTip('tt167')" class=ISymbol>gdImageGifAnimAdd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddCtx" id=link168 onMouseOver="ShowTip(event, 'tt168', 'link168')" onMouseOut="HideTip('tt168')" class=ISymbol>gdImageGifAnimAddCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddPtr" id=link169 onMouseOver="ShowTip(event, 'tt169', 'link169')" onMouseOut="HideTip('tt169')" class=ISymbol>gdImageGifAnimAddPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBegin" id=link170 onMouseOver="ShowTip(event, 'tt170', 'link170')" onMouseOut="HideTip('tt170')" class=ISymbol>gdImageGifAnimBegin</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginCtx" id=link171 onMouseOver="ShowTip(event, 'tt171', 'link171')" onMouseOut="HideTip('tt171')" class=ISymbol>gdImageGifAnimBeginCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginPtr" id=link172 onMouseOver="ShowTip(event, 'tt172', 'link172')" onMouseOut="HideTip('tt172')" class=ISymbol>gdImageGifAnimBeginPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEnd" id=link173 onMouseOver="ShowTip(event, 'tt173', 'link173')" onMouseOut="HideTip('tt173')" class=ISymbol>gdImageGifAnimEnd</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndCtx" id=link174 onMouseOver="ShowTip(event, 'tt174', 'link174')" onMouseOut="HideTip('tt174')" class=ISymbol>gdImageGifAnimEndCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndPtr" id=link175 onMouseOver="ShowTip(event, 'tt175', 'link175')" onMouseOut="HideTip('tt175')" class=ISymbol>gdImageGifAnimEndPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifCtx" id=link176 onMouseOver="ShowTip(event, 'tt176', 'link176')" onMouseOut="HideTip('tt176')" class=ISymbol>gdImageGifCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifPtr" id=link177 onMouseOver="ShowTip(event, 'tt177', 'link177')" onMouseOut="HideTip('tt177')" class=ISymbol>gdImageGifPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageGrayScale" id=link178 onMouseOver="ShowTip(event, 'tt178', 'link178')" onMouseOut="HideTip('tt178')" class=ISymbol>gdImageGrayScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageInterlace" id=link179 onMouseOver="ShowTip(event, 'tt179', 'link179')" onMouseOut="HideTip('tt179')" class=ISymbol>gdImageInterlace</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpeg" id=link180 onMouseOver="ShowTip(event, 'tt180', 'link180')" onMouseOut="HideTip('tt180')" class=ISymbol>gdImageJpeg</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegCtx" id=link181 onMouseOver="ShowTip(event, 'tt181', 'link181')" onMouseOut="HideTip('tt181')" class=ISymbol>gdImageJpegCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegPtr" id=link182 onMouseOver="ShowTip(event, 'tt182', 'link182')" onMouseOut="HideTip('tt182')" class=ISymbol>gdImageJpegPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageLine" id=link183 onMouseOver="ShowTip(event, 'tt183', 'link183')" onMouseOut="HideTip('tt183')" class=ISymbol>gdImageLine</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageMeanRemoval" id=link184 onMouseOver="ShowTip(event, 'tt184', 'link184')" onMouseOut="HideTip('tt184')" class=ISymbol>gdImageMeanRemoval</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageNegate" id=link185 onMouseOver="ShowTip(event, 'tt185', 'link185')" onMouseOut="HideTip('tt185')" class=ISymbol>gdImageNegate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_nnquant-c.html#gdImageNeuQuant" id=link186 onMouseOver="ShowTip(event, 'tt186', 'link186')" onMouseOut="HideTip('tt186')" class=ISymbol>gdImageNeuQuant</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageOpenPolygon" id=link187 onMouseOver="ShowTip(event, 'tt187', 'link187')" onMouseOut="HideTip('tt187')" class=ISymbol>gdImageOpenPolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePaletteCopy" id=link188 onMouseOver="ShowTip(event, 'tt188', 'link188')" onMouseOut="HideTip('tt188')" class=ISymbol>gdImagePaletteCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePaletteToTrueColor" id=link189 onMouseOver="ShowTip(event, 'tt189', 'link189')" onMouseOut="HideTip('tt189')" class=ISymbol>gdImagePaletteToTrueColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImagePixelate" id=link190 onMouseOver="ShowTip(event, 'tt190', 'link190')" onMouseOut="HideTip('tt190')" class=ISymbol>gdImagePixelate</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePng" id=link191 onMouseOver="ShowTip(event, 'tt191', 'link191')" onMouseOut="HideTip('tt191')" class=ISymbol>gdImagePng</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtx" id=link192 onMouseOver="ShowTip(event, 'tt192', 'link192')" onMouseOut="HideTip('tt192')" class=ISymbol>gdImagePngCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtxEx" id=link193 onMouseOver="ShowTip(event, 'tt193', 'link193')" onMouseOut="HideTip('tt193')" class=ISymbol>gdImagePngCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngEx" id=link194 onMouseOver="ShowTip(event, 'tt194', 'link194')" onMouseOut="HideTip('tt194')" class=ISymbol>gdImagePngEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtr" id=link195 onMouseOver="ShowTip(event, 'tt195', 'link195')" onMouseOut="HideTip('tt195')" class=ISymbol>gdImagePngPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtrEx" id=link196 onMouseOver="ShowTip(event, 'tt196', 'link196')" onMouseOut="HideTip('tt196')" class=ISymbol>gdImagePngPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_ss-c.html#gdImagePngToSink" id=link197 onMouseOver="ShowTip(event, 'tt197', 'link197')" onMouseOut="HideTip('tt197')" class=ISymbol>gdImagePngToSink</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImagePolygon" id=link198 onMouseOver="ShowTip(event, 'tt198', 'link198')" onMouseOut="HideTip('tt198')" class=ISymbol>gdImagePolygon</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImagePtr" id=link199 onMouseOver="ShowTip(event, 'tt199', 'link199')" onMouseOut="HideTip('tt199')" class=ISymbol>gdImagePtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageRectangle" id=link200 onMouseOver="ShowTip(event, 'tt200', 'link200')" onMouseOut="HideTip('tt200')" class=ISymbol>gdImageRectangle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageRotateInterpolated" id=link201 onMouseOver="ShowTip(event, 'tt201', 'link201')" onMouseOut="HideTip('tt201')" class=ISymbol>gdImageRotateInterpolated</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSaveAlpha" id=link202 onMouseOver="ShowTip(event, 'tt202', 'link202')" onMouseOut="HideTip('tt202')" class=ISymbol>gdImageSaveAlpha</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageScale" id=link203 onMouseOver="ShowTip(event, 'tt203', 'link203')" onMouseOut="HideTip('tt203')" class=ISymbol>gdImageScale</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatter" id=link204 onMouseOver="ShowTip(event, 'tt204', 'link204')" onMouseOut="HideTip('tt204')" class=ISymbol>gdImageScatter</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterColor" id=link205 onMouseOver="ShowTip(event, 'tt205', 'link205')" onMouseOut="HideTip('tt205')" class=ISymbol>gdImageScatterColor</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterEx" id=link206 onMouseOver="ShowTip(event, 'tt206', 'link206')" onMouseOut="HideTip('tt206')" class=ISymbol>gdImageScatterEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageSelectiveBlur" id=link207 onMouseOver="ShowTip(event, 'tt207', 'link207')" onMouseOut="HideTip('tt207')" class=ISymbol>gdImageSelectiveBlur</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliased" id=link208 onMouseOver="ShowTip(event, 'tt208', 'link208')" onMouseOut="HideTip('tt208')" class=ISymbol>gdImageSetAntiAliased</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliasedDontBlend" id=link209 onMouseOver="ShowTip(event, 'tt209', 'link209')" onMouseOut="HideTip('tt209')" class=ISymbol>gdImageSetAntiAliasedDontBlend</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetBrush" id=link210 onMouseOver="ShowTip(event, 'tt210', 'link210')" onMouseOut="HideTip('tt210')" class=ISymbol>gdImageSetBrush</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetClip" id=link211 onMouseOver="ShowTip(event, 'tt211', 'link211')" onMouseOut="HideTip('tt211')" class=ISymbol>gdImageSetClip</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdImageSetInterpolationMethod" id=link212 onMouseOver="ShowTip(event, 'tt212', 'link212')" onMouseOut="HideTip('tt212')" class=ISymbol>gdImageSetInterpolationMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetPixel" id=link213 onMouseOver="ShowTip(event, 'tt213', 'link213')" onMouseOut="HideTip('tt213')" class=ISymbol>gdImageSetPixel</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetResolution" id=link214 onMouseOver="ShowTip(event, 'tt214', 'link214')" onMouseOut="HideTip('tt214')" class=ISymbol>gdImageSetResolution</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetStyle" id=link215 onMouseOver="ShowTip(event, 'tt215', 'link215')" onMouseOut="HideTip('tt215')" class=ISymbol>gdImageSetStyle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetThickness" id=link216 onMouseOver="ShowTip(event, 'tt216', 'link216')" onMouseOut="HideTip('tt216')" class=ISymbol>gdImageSetThickness</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageSetTile" id=link217 onMouseOver="ShowTip(event, 'tt217', 'link217')" onMouseOut="HideTip('tt217')" class=ISymbol>gdImageSetTile</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageSharpen" id=link218 onMouseOver="ShowTip(event, 'tt218', 'link218')" onMouseOut="HideTip('tt218')" class=ISymbol>gdImageSharpen</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filter-c.html#gdImageSmooth" id=link219 onMouseOver="ShowTip(event, 'tt219', 'link219')" onMouseOut="HideTip('tt219')" class=ISymbol>gdImageSmooth</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageSquareToCircle" id=link220 onMouseOver="ShowTip(event, 'tt220', 'link220')" onMouseOut="HideTip('tt220')" class=ISymbol>gdImageSquareToCircle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageString" id=link221 onMouseOver="ShowTip(event, 'tt221', 'link221')" onMouseOut="HideTip('tt221')" class=ISymbol>gdImageString</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageString16" id=link222 onMouseOver="ShowTip(event, 'tt222', 'link222')" onMouseOut="HideTip('tt222')" class=ISymbol>gdImageString16</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringFT" id=link223 onMouseOver="ShowTip(event, 'tt223', 'link223')" onMouseOut="HideTip('tt223')" class=ISymbol>gdImageStringFT</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdfx-c.html#gdImageStringFTCircle" id=link224 onMouseOver="ShowTip(event, 'tt224', 'link224')" onMouseOut="HideTip('tt224')" class=ISymbol>gdImageStringFTCircle</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringFTEx" id=link225 onMouseOver="ShowTip(event, 'tt225', 'link225')" onMouseOut="HideTip('tt225')" class=ISymbol>gdImageStringFTEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gdft-c.html#gdImageStringTTF" id=link226 onMouseOver="ShowTip(event, 'tt226', 'link226')" onMouseOut="HideTip('tt226')" class=ISymbol>gdImageStringTTF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageStringUp" id=link227 onMouseOver="ShowTip(event, 'tt227', 'link227')" onMouseOut="HideTip('tt227')" class=ISymbol>gdImageStringUp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdImageStringUp16" id=link228 onMouseOver="ShowTip(event, 'tt228', 'link228')" onMouseOut="HideTip('tt228')" class=ISymbol>gdImageStringUp16</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiff" id=link229 onMouseOver="ShowTip(event, 'tt229', 'link229')" onMouseOut="HideTip('tt229')" class=ISymbol>gdImageTiff</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffCtx" id=link230 onMouseOver="ShowTip(event, 'tt230', 'link230')" onMouseOut="HideTip('tt230')" class=ISymbol>gdImageTiffCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffPtr" id=link231 onMouseOver="ShowTip(event, 'tt231', 'link231')" onMouseOut="HideTip('tt231')" class=ISymbol>gdImageTiffPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPalette" id=link232 onMouseOver="ShowTip(event, 'tt232', 'link232')" onMouseOut="HideTip('tt232')" class=ISymbol>gdImageTrueColorToPalette</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetMethod" id=link233 onMouseOver="ShowTip(event, 'tt233', 'link233')" onMouseOut="HideTip('tt233')" class=ISymbol>gdImageTrueColorToPaletteSetMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetQuality" id=link234 onMouseOver="ShowTip(event, 'tt234', 'link234')" onMouseOut="HideTip('tt234')" class=ISymbol>gdImageTrueColorToPaletteSetQuality</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMP" id=link235 onMouseOver="ShowTip(event, 'tt235', 'link235')" onMouseOut="HideTip('tt235')" class=ISymbol>gdImageWBMP</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPCtx" id=link236 onMouseOver="ShowTip(event, 'tt236', 'link236')" onMouseOut="HideTip('tt236')" class=ISymbol>gdImageWBMPCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPPtr" id=link237 onMouseOver="ShowTip(event, 'tt237', 'link237')" onMouseOut="HideTip('tt237')" class=ISymbol>gdImageWBMPPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebp" id=link238 onMouseOver="ShowTip(event, 'tt238', 'link238')" onMouseOut="HideTip('tt238')" class=ISymbol>gdImageWebp</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpEx" id=link239 onMouseOver="ShowTip(event, 'tt239', 'link239')" onMouseOut="HideTip('tt239')" class=ISymbol>gdImageWebpEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtr" id=link240 onMouseOver="ShowTip(event, 'tt240', 'link240')" onMouseOut="HideTip('tt240')" class=ISymbol>gdImageWebpPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtrEx" id=link241 onMouseOver="ShowTip(event, 'tt241', 'link241')" onMouseOut="HideTip('tt241')" class=ISymbol>gdImageWebpPtrEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_xbm-c.html#gdImageXbmCtx" id=link242 onMouseOver="ShowTip(event, 'tt242', 'link242')" onMouseOut="HideTip('tt242')" class=ISymbol>gdImageXbmCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdInterpolationMethod" class=ISymbol>gdInterpolationMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io-h.html#gdIOCtx" id=link243 onMouseOver="ShowTip(event, 'tt243', 'link243')" onMouseOut="HideTip('tt243')" class=ISymbol>gdIOCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdLayerMultiply" id=link244 onMouseOver="ShowTip(event, 'tt244', 'link244')" onMouseOut="HideTip('tt244')" class=ISymbol>gdLayerMultiply</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdLayerOverlay" id=link245 onMouseOver="ShowTip(event, 'tt245', 'link245')" onMouseOut="HideTip('tt245')" class=ISymbol>gdLayerOverlay</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdMajorVersion" id=link246 onMouseOver="ShowTip(event, 'tt246', 'link246')" onMouseOut="HideTip('tt246')" class=ISymbol>gdMajorVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdMinorVersion" id=link247 onMouseOver="ShowTip(event, 'tt247', 'link247')" onMouseOut="HideTip('tt247')" class=ISymbol>gdMinorVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtx" id=link248 onMouseOver="ShowTip(event, 'tt248', 'link248')" onMouseOut="HideTip('tt248')" class=ISymbol>gdNewDynamicCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtxEx" id=link249 onMouseOver="ShowTip(event, 'tt249', 'link249')" onMouseOut="HideTip('tt249')" class=ISymbol>gdNewDynamicCtxEx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_file-c.html#gdNewFileCtx" id=link250 onMouseOver="ShowTip(event, 'tt250', 'link250')" onMouseOut="HideTip('tt250')" class=ISymbol>gdNewFileCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io_ss-c.html#gdNewSSCtx" id=link251 onMouseOver="ShowTip(event, 'tt251', 'link251')" onMouseOut="HideTip('tt251')" class=ISymbol>gdNewSSCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPoint" class=ISymbol>gdPoint</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointF" id=link252 onMouseOver="ShowTip(event, 'tt252', 'link252')" onMouseOut="HideTip('tt252')" class=ISymbol>gdPointF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointFPtr" id=link253 onMouseOver="ShowTip(event, 'tt253', 'link253')" onMouseOut="HideTip('tt253')" class=ISymbol>gdPointFPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointPtr" id=link254 onMouseOver="ShowTip(event, 'tt254', 'link254')" onMouseOut="HideTip('tt254')" class=ISymbol>gdPointPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdReleaseVersion" id=link255 onMouseOver="ShowTip(event, 'tt255', 'link255')" onMouseOut="HideTip('tt255')" class=ISymbol>gdReleaseVersion</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-c.html#gdSetErrorMethod" id=link256 onMouseOver="ShowTip(event, 'tt256', 'link256')" onMouseOut="HideTip('tt256')" class=ISymbol>gdSetErrorMethod</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSink" class=ISymbol>gdSink</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSinkPtr" id=link257 onMouseOver="ShowTip(event, 'tt257', 'link257')" onMouseOut="HideTip('tt257')" class=ISymbol>gdSinkPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSource" class=ISymbol>gdSource</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSourcePtr" id=link258 onMouseOver="ShowTip(event, 'tt258', 'link258')" onMouseOut="HideTip('tt258')" class=ISymbol>gdSourcePtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_filename-c.html#gdSupportsFileType" id=link259 onMouseOver="ShowTip(event, 'tt259', 'link259')" onMouseOut="HideTip('tt259')" class=ISymbol>gdSupportsFileType</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineBoundingBox" id=link260 onMouseOver="ShowTip(event, 'tt260', 'link260')" onMouseOut="HideTip('tt260')" class=ISymbol>gdTransformAffineBoundingBox</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineCopy" id=link261 onMouseOver="ShowTip(event, 'tt261', 'link261')" onMouseOut="HideTip('tt261')" class=ISymbol>gdTransformAffineCopy</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineGetImage" id=link262 onMouseOver="ShowTip(event, 'tt262', 'link262')" onMouseOut="HideTip('tt262')" class=ISymbol>gdTransformAffineGetImage</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_version-c.html#gdVersionString" id=link263 onMouseOver="ShowTip(event, 'tt263', 'link263')" onMouseOut="HideTip('tt263')" class=ISymbol>gdVersionString</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#GifAnim" id=link264 onMouseOver="ShowTip(event, 'tt264', 'link264')" onMouseOut="HideTip('tt264')" class=ISymbol>GifAnim</a></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt2"><div class=CConstant>Bell</div></div><div class=CToolTip id="tt3"><div class=CConstant>Bessel</div></div><div class=CToolTip id="tt4"><div class=CConstant>Bicubic</div></div><div class=CToolTip id="tt5"><div class=CConstant>fixed point bicubic integer</div></div><div class=CToolTip id="tt6"><div class=CConstant>fixed point bilinear</div></div><div class=CToolTip id="tt7"><div class=CConstant>Blackman</div></div><div class=CToolTip id="tt8"><div class=CConstant>Box</div></div><div class=CToolTip id="tt9"><div class=CConstant>BSpline</div></div><div class=CToolTip id="tt10"><div class=CConstant>Catmullrom</div></div><div class=CToolTip id="tt11"><div class=CConstant>Crop black borders</div></div><div class=CToolTip id="tt12"><div class=CConstant>Default crop mode (4 corners or background)</div></div><div class=CToolTip id="tt13"><div class=CConstant>Crop using colors of the 4 corners</div></div><div class=CToolTip id="tt14"><div class=CConstant>Crop using the transparent color</div></div><div class=CToolTip id="tt15"><div class=CConstant>Crop white borders</div></div><div class=CToolTip id="tt16"><div class=CConstant>Gaussian</div></div><div class=CToolTip id="tt17"><div class=CConstant>Generalized cubic</div></div><div class=CToolTip id="tt18"><div class=CConstant>Hamming</div></div><div class=CToolTip id="tt19"><div class=CConstant>Hannig</div></div><div class=CToolTip id="tt20"><div class=CConstant>Hermite</div></div><div class=CToolTip id="tt21"><div class=CConstant>bilinear interpolation</div></div><div class=CToolTip id="tt22"><div class=CConstant>Mitchell</div></div><div class=CToolTip id="tt23"><div class=CConstant>Nearest neighbour interpolation</div></div><div class=CToolTip id="tt24"><div class=CConstant>Power</div></div><div class=CToolTip id="tt25"><div class=CConstant>Quadratic</div></div><div class=CToolTip id="tt26"><div class=CConstant>Sinc</div></div><div class=CToolTip id="tt27"><div class=CConstant>Triangle</div></div><div class=CToolTip id="tt28"><div class=CConstant>4 pixels weighted bilinear interpolation</div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineApplyToPointF (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdPointFPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a point (floating point gdPointF)</div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineConcat (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Concat (Multiply) two affine transformation matrices.</div></div><div class=CToolTip id="tt31"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineEqual (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m1[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m2[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether two affine transformations are equal. </div></div><div class=CToolTip id="tt32"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineFlip (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_h,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flip_v</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Flip an affine transformation horizontally or vertically.</div></div><div class=CToolTip id="tt33"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineIdentity (</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up the identity matrix.</div></div><div class=CToolTip id="tt34"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineInvert (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>src[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Find the inverse of an affine transformation.</div></div><div class=CToolTip id="tt35"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRectilinear (</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>m[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Determines whether the affine transformation is axis aligned. </div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineRotate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a rotation affine transform.</div></div><div class=CToolTip id="tt37"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineScale (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>scale_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a scaling matrix.</div></div><div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearHorizontal(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a horizontal shearing matrix || becomes \\.</div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineShearVertical(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a vertical shearing matrix, columns are untouched.</div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAffineTranslate (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dst[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>offset_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set up a translation matrix.</div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdAlphaBlend (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt42"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdClearErrorMethod(</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt43"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdColorMapLookup(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdColorMap&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color_map,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>color_name,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt44"><div class=CConstant>Preserve previous frame</div></div><div class=CToolTip id="tt45"><div class=CConstant>First allocated color of palette</div></div><div class=CToolTip id="tt46"><div class=CConstant>Restore to before start of frame</div></div><div class=CToolTip id="tt47"><div class=CConstant>Not recommended</div></div><div class=CToolTip id="tt48"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdDPExtractData (</td><td class="PTypePrefix prettyprint " nowrap>struct&nbsp;</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt49"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdExtraVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt50"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFontCacheSetup (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt51"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFontCacheShutdown ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt52"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetGiant (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt53"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetLarge (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt54"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetMediumBold (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt55"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetSmall (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt56"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdFontPtr gdFontGetTiny (</td><td class="PParameter prettyprint " nowrap>void</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt57"><div class=CType>A font structure, containing the bitmaps of all characters in a font. </div></div><div class=CToolTip id="tt58"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdFree (</td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ptr</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt59"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">void gdFreeFontCache ()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt60"><div class=CType>A structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function. </div></div><div class=CToolTip id="tt61"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdFTUseFontConfig(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>flag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt62"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAABlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>NO-OP, kept for library compatibility.</div></div><div class=CToolTip id="tt63"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageAlphaBlending (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alphaBlendingArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt64"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt65"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmp(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt66"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageBmpCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt67"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageBmpPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>compression</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt68"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBoundsSafe (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt69"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageBrightness(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>brightness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Set the brightness level level for the image src.</div></div><div class=CToolTip id="tt70"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageChar (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt71"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCharUp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt72"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageClone (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt73"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>red,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>green,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>blue,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>alpha</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt74"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt75"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorAllocateAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt76"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosest (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt77"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt78"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorClosestHWB (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt79"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorDeallocate (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt80"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExact (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt81"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorExactAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt82"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorMatch (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Bring the palette colors in im2 to be closer to im1.</div></div><div class=CToolTip id="tt83"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt84"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceArray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>len,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt85"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceCallback (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdCallbackImageColor&nbsp;</td><td class="PParameter prettyprint " nowrap>callback</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt86"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorReplaceThreshold (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt87"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolve (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageColorResolve is an alternative for the code fragment</div></div><div class=CToolTip id="tt88"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageColorResolveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>r,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>g,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>b,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>a</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt89"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageColorTransparent (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt90"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageCompare (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt91"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageContrast(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>contrast</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt92"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageConvolution(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter[3][3],</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>filter_div,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>offset</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt93"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt94"><div class=CFunction>Return a copy of the source image <u>src</u> blurred according to the parameters using the Gaussian Blur algorithm.</div></div><div class=CToolTip id="tt95"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMerge (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt96"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyMergeGray (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function is a substitute for real alpha channel operations, so it doesn&rsquo;t pay attention to the alpha channel.</div></div><div class=CToolTip id="tt97"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResampled (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt98"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyResized (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dstH,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcW,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcH</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt99"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageCopyRotated (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>dstY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcX,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcY,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcWidth,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>srcHeight,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>angle</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt100"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreate (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreate is called to create palette-based images, with no more than 256 colors. </div></div><div class=CToolTip id="tt101"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmp(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt102"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt103"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromBmpPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt104"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromFile(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Read an image file of any supported.</div></div><div class=CToolTip id="tt105"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd is called to load images from gd format files. </div></div><div class=CToolTip id="tt106"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2 (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2 is called to load images from gd2 format files. </div></div><div class=CToolTip id="tt107"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ctx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD2 image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt108"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Part (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. </div></div><div class=CToolTip id="tt109"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>in,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt110"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2PartPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>srcy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>h</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt111"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGd2Ptr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt112"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdCtx (</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>in</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a GD image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt113"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGdPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt114"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGif(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fdFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromGif is called to load images from GIF format files. </div></div><div class=CToolTip id="tt115"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifCtx(</td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromGif.</div></div><div class=CToolTip id="tt116"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromGifPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt117"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpeg(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpegEx.</div></div><div class=CToolTip id="tt118"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt119"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegCtxEx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromJpeg.</div></div><div class=CToolTip id="tt120"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegEx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files. </div></div><div class=CToolTip id="tt121"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt122"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromJpegPtrEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ignore_warning</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt123"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPng (</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromPng is called to load images from PNG format files. </div></div><div class=CToolTip id="tt124"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngCtx (</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt125"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngPtr (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng.</div></div><div class=CToolTip id="tt126"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromPngSource (</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>inSource</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>See gdImageCreateFromPng for documentation. </div></div><div class=CToolTip id="tt127"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTga(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fp</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a TGA file</div></div><div class=CToolTip id="tt128"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>ctx</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a gdImage from a gdIOCtx referencing a TGA binary file.</div></div><div class=CToolTip id="tt129"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTgaPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt130"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Create a gdImage from a TIFF file input from an gdIOCtx.</div></div><div class=CToolTip id="tt131"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromTiffPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt132"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMP(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>inFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromWBMP is called to load images from WBMP format files. </div></div><div class=CToolTip id="tt133"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>infile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Reads in a WBMP image via a gdIOCtx struct. </div></div><div class=CToolTip id="tt134"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromWBMPPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt135"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXbm(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fd</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from X bitmap format files. </div></div><div class=CToolTip id="tt136"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateFromXpm(</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. </div></div><div class=CToolTip id="tt137"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreatePaletteFromTrueColor (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt138"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCreateTrueColor (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sy</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. </div></div><div class=CToolTip id="tt139"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCrop(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdRect&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>crop</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt140"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropAuto(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt141"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageCropThreshold(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>threshold</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt142"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDashedLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt143"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageDestroy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageDestroy is used to free the memory associated with an image. </div></div><div class=CToolTip id="tt144"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEdgeDetectQuick(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt145"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageEllipse(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt146"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageEmboss(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt147"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageFile(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes an image to a file in the format indicated by the filename.</div></div><div class=CToolTip id="tt148"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFill(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>nc</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt149"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledArc (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>e,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>style</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt150"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledEllipse (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>my,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>w,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>h,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt151"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt152"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFilledRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt153"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFillToBorder (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>border,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt154"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipBoth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt155"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipHorizontal(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt156"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageFlipVertical(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt157"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGaussianBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image. </div></div><div class=CToolTip id="tt158"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt159"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGd2 (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt160"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGd2Ptr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fmt,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt161"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGdPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt162"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y1P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>x2P,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>y2P</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt163"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdInterpolationMethod gdImageGetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return the interpolation mode set in &lsquo;im&rsquo;. </div></div><div class=CToolTip id="tt164"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt165"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGetTrueColorPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt166"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGif(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageGif outputs the specified image to the specified file in GIF format. </div></div><div class=CToolTip id="tt167"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAdd(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin. </div></div><div class=CToolTip id="tt168"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimAddCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Adds an animation frame via a gdIOCtxPtr. </div></div><div class=CToolTip id="tt169"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimAddPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LocalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>LeftOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>TopOfs,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Delay,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Disposal,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>previm</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt170"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBegin(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>This function must be called as the first function when creating a GIF animation. </div></div><div class=CToolTip id="tt171"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimBeginCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to gdIOCtx. </div></div><div class=CToolTip id="tt172"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimBeginPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>GlobalCM,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>Loops</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimBegin except that it outputs to a memory buffer. </div></div><div class=CToolTip id="tt173"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEnd(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Terminates the GIF file properly.</div></div><div class=CToolTip id="tt174"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifAnimEndCtx(</td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.</div></div><div class=CToolTip id="tt175"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifAnimEndPtr(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.</div></div><div class=CToolTip id="tt176"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageGifCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtxPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Writes a GIF image via a gdIOCtx. </div></div><div class=CToolTip id="tt177"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageGifPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data. </div></div><div class=CToolTip id="tt178"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageGrayScale(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert the image src to a grayscale image.</div></div><div class=CToolTip id="tt179"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageInterlace (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>interlaceArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt180"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpeg(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImageJpeg outputs the specified image to the specified file in JPEG format. </div></div><div class=CToolTip id="tt181"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageJpegCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as JPEG data via a gdIOCtx. </div></div><div class=CToolTip id="tt182"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageJpegPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. </div></div><div class=CToolTip id="tt183"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageLine (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Bresenham as presented in Foley &amp; Van Dam.</div></div><div class=CToolTip id="tt184"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageMeanRemoval(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt185"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageNegate(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Invert src image.</div></div><div class=CToolTip id="tt186"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageNeuQuant(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_color,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sample_factor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt187"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageOpenPolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt188"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePaletteCopy (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>to,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>from</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt189"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePaletteToTrueColor(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Convert a palette image to true color.</div></div><div class=CToolTip id="tt190"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImagePixelate(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>block_size,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>mode</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt191"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePng (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngEx with compression of -1.</div></div><div class=CToolTip id="tt192"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngCtx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outfile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngCtxEx with compression of -1. </div></div><div class=CToolTip id="tt193"><div class=CFunction>Outputs the given image as PNG data, but using a gdIOCtx instead of a file. </div></div><div class=CToolTip id="tt194"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>gdImagePngEx outputs the specified image to the specified file in PNG format. </div></div><div class=CToolTip id="tt195"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Equivalent to calling gdImagePngPtrEx with compression of -1.</div></div><div class=CToolTip id="tt196"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImagePngPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>level</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data. </div></div><div class=CToolTip id="tt197"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePngToSink (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>outSink</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt198"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImagePolygon (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdPointPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>p,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>n,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt199"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt200"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageRectangle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt201"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageRotateInterpolated(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>bgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt202"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSaveAlpha (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>saveAlphaArg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt203"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageScale(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_width,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>new_height</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt204"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatter(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt205"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterColor(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>sub,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>plus,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colors[],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>num_colors</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt206"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageScatterEx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdScatterPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>scatter</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt207"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSelectiveBlur(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt208"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliased (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt209"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetAntiAliasedDontBlend (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>c,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dont_blend</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt210"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetBrush (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>brush</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt211"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetClip (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y1,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x2,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y2</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt212"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSetInterpolationMethod(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdInterpolationMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>id</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt213"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetPixel (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt214"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetResolution(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const unsigned&nbsp;</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>res_y</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt215"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetStyle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>style,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>noOfPixels</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt216"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetThickness (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>thickness</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt217"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSetTile (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>tile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt218"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageSharpen (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>pct</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Sharpen function added on 2003-11-19 by Paul Troughton (paul&lt;dot&gt;troughton&lt;at&gt;ieee&lt;dot&gt;org) Simple 3x3 convolution kernel Makes use of seperability Faster, but less flexible, than full-blown unsharp masking pct is sharpening percentage, and can be greater than 100 Silently does nothing to non-truecolor images Silently does nothing for pct&lt;0, as not a useful blurring function Leaves transparency/alpha-channel untouched</div></div><div class=CToolTip id="tt219"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageSmooth(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>float&nbsp;</td><td class="PParameter prettyprint " nowrap>weight</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt220"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdImagePtr gdImageSquareToCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>radius</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt221"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt222"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageString16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt223"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFT (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Render a utf8 string onto a gd image.</div></div><div class=CToolTip id="tt224"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringFTCircle (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cx,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>cy,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>radius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>textRadius,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fillPortion,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>font,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>points,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>top,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>bottom,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fgcolor</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt225"><div class=CFunction>gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.</div></div><div class=CToolTip id="tt226"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>char * gdImageStringTTF (</td><td class="PType prettyprint " nowrap>gdImage&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>brect,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>fontlist,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>ptsize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>angle,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>string</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt227"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt228"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageStringUp16 (</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdFontPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>f,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>unsigned&nbsp;</td><td class="PType prettyprint " nowrap>short&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>s,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>color</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt229"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiff(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt230"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTiffCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the gd image as a tiff file.</div></div><div class=CToolTip id="tt231"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageTiffPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt232"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPalette (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dither,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>colorsWanted</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt233"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdImageTrueColorToPaletteSetMethod (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>method,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>speed</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Selects quantization method used for subsequent gdImageTrueColorToPalette calls. </div></div><div class=CToolTip id="tt234"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageTrueColorToPaletteSetQuality (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>min_quality,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>max_quality</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for. </div></div><div class=CToolTip id="tt235"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMP(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt236"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWBMPCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Write the image as a wbmp file</div></div><div class=CToolTip id="tt237"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWBMPPtr(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt238"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebp (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt239"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageWebpEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>outFile,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt240"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtr (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt241"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void * gdImageWebpPtrEx (</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>im,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>size,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>quantization</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt242"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdImageXbmCtx(</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>image,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>file_name,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>fg,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdIOCtx&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>out</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt243"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt244"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerMultiply (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Apply &lsquo;multiply&rsquo; effect.</div></div><div class=CToolTip id="tt245"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdLayerOverlay (</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>src</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt246"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMajorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt247"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdMinorVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt248"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt249"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewDynamicCtxEx(</td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>initialSize,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>void&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>data,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>freeOKFlag</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt250"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewFileCtx(</td><td class="PType prettyprint " nowrap>FILE&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>f</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt251"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>gdIOCtx * gdNewSSCtx(</td><td class="PType prettyprint " nowrap>gdSourcePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PType prettyprint " nowrap>gdSinkPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>snk</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Return data as a dynamic pointer.</div></div><div class=CToolTip id="tt252"><div class=CType>Defines a point in a 2D coordinate system using floating point values. </div></div><div class=CToolTip id="tt253"><div class=CType>Pointer to a gdPointF</div></div><div class=CToolTip id="tt254"><div class=CType>Represents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.</div></div><div class=CToolTip id="tt255"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">int gdReleaseVersion()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt256"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>void gdSetErrorMethod(</td><td class="PType prettyprint " nowrap>gdErrorMethod&nbsp;</td><td class="PParameter prettyprint " nowrap>error_method</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt257"><div class=CType><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </div></div><div class=CToolTip id="tt258"><div class=CType><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </div></div><div class=CToolTip id="tt259"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdSupportsFileType(</td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>char&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>filename,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>writing</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Tests if a given file type is supported by GD.</div></div><div class=CToolTip id="tt260"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineBoundingBox(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6],</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>bbox</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the bounding box of an affine transformation applied to a rectangular area gdRect</div></div><div class=CToolTip id="tt261"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineCopy(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_x,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>int&nbsp;</td><td class="PParameter prettyprint " nowrap>dst_y,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameter prettyprint " nowrap>src_region,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and copy the result in a destination to the given position.</div></div><div class=CToolTip id="tt262"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters prettyprint "nowrap>int gdTransformAffineGetImage(</td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap>*</td><td class="PParameter prettyprint " nowrap>dst,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>gdImagePtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap></td><td class="PType prettyprint " nowrap>gdRectPtr&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>src_area,</td></tr><tr><td></td><td class="PTypePrefix prettyprint " nowrap>const&nbsp;</td><td class="PType prettyprint " nowrap>double&nbsp;</td><td class="PParameterPrefix prettyprint " nowrap></td><td class="PParameter prettyprint " nowrap>affine[6]</td><td class="PAfterParameters prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Applies an affine transformation to a region and return an image containing the complete transformation.</div></div><div class=CToolTip id="tt263"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">const char * gdVersionString()</td></tr></table></blockquote></div></div><div class=CToolTip id="tt264"><div class=CGroup>Legal values for Disposal. </div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Everything</div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/General3.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html
new file mode 100644
index 00000000000..00d092f05c4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html
@@ -0,0 +1,42 @@
+<!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"><title>Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Index</div><div class=INavigationBar>$#! &middot; <a href="General.html#Numbers">0-9</a> &middot; <a href="General.html#A">A</a> &middot; B &middot; <a href="General.html#C">C</a> &middot; D &middot; E &middot; <a href="General.html#F">F</a> &middot; <a href="General2.html#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; <a href="#L">L</a> &middot; <a href="#M">M</a> &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; <a href="#T">T</a> &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="L"></a>L</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/license-txt.html#License" class=ISymbol>License</a></td></tr><tr><td class=IHeading><a name="M"></a>M</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_matrix-c.html#Matrix" id=link265 onMouseOver="ShowTip(event, 'tt265', 'link265')" onMouseOut="HideTip('tt265')" class=ISymbol>Matrix</a></td></tr><tr><td class=IHeading><a name="T"></a>T</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>Transform</span><div class=ISubIndex><a href="../files/gd-h.html#Transform" class=IFile>gd.h</a><a href="../files/gd_interpolation-c.html#Transform" class=IFile>gd_interpolation.c</a></div></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>Types</span><div class=ISubIndex><a href="../files/gd-h.html#Types" class=IFile>gd.h</a><a href="../files/gd_io-h.html#Types" class=IFile>gd_io.h</a></div></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt265"><div class=CSection>Group: Affine Matrix</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Everything</div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Types.html">Types</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/index/Types.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html
new file mode 100644
index 00000000000..897bd13898a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html
@@ -0,0 +1,34 @@
+<!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"><title>Type Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" 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.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Type Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; A &middot; B &middot; C &middot; D &middot; E &middot; F &middot; <a href="#G">G</a> &middot; H &middot; I &middot; J &middot; K &middot; L &middot; M &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; S &middot; T &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFont" class=ISymbol>gdFont</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFontPtr" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>gdFontPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFTStringExtra" class=ISymbol>gdFTStringExtra</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdFTStringExtraPtr" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>gdFTStringExtraPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImage" class=ISymbol>gdImage</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdImagePtr" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>gdImagePtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd_io-h.html#gdIOCtx" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>gdIOCtx</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPoint" class=ISymbol>gdPoint</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointF" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>gdPointF</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointFPtr" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>gdPointFPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdPointPtr" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>gdPointPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSink" class=ISymbol>gdSink</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSinkPtr" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=ISymbol>gdSinkPtr</a></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSource" class=ISymbol>gdSource</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/gd-h.html#gdSourcePtr" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=ISymbol>gdSourcePtr</a></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CType>A font structure, containing the bitmaps of all characters in a font. </div></div><div class=CToolTip id="tt2"><div class=CType>A structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function. </div></div><div class=CToolTip id="tt3"><div class=CType>The data structure in which gd stores images. </div></div><div class=CToolTip id="tt4"><div class=CType>gdIOCtx structures hold function pointers for doing image IO.</div></div><div class=CToolTip id="tt5"><div class=CType>Defines a point in a 2D coordinate system using floating point values. </div></div><div class=CToolTip id="tt6"><div class=CType>Pointer to a gdPointF</div></div><div class=CToolTip id="tt7"><div class=CType>Represents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.</div></div><div class=CToolTip id="tt8"><div class=CType><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </div></div><div class=CToolTip id="tt9"><div class=CType><b>Note:</b> This interface is <b>obsolete</b> and kept only for *compatibility. </div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/preamble-txt.html">About LibGD 2.2.3</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-c.html">gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd-h.html">gd.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_bmp-c.html">gd_bmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_crop-c.html">gd_crop.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filename-c.html">gd_filename.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_filter-c.html">gd_filter.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd-c.html">gd_gd.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gd2-c.html">gd_gd2.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_in-c.html">gd_gif_in.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_gif_out-c.html">gd_gif_out.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_interpolation-c.html">gd_interpolation.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io-h.html">gd_io.h</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_dp-c.html">gd_io_dp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_jpeg-c.html">gd_jpeg.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_png-c.html">gd_png.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_ss-c.html">gd_ss.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tga-c.html">gd_tga.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_tiff-c.html">gd_tiff.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_topal-c.html">gd_topal.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_transform-c.html">gd_transform.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_version-c.html">gd_version.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_wbmp-c.html">gd_wbmp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_webp-c.html">gd_webp.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_xbm-c.html">gd_xbm.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_map-c.html">gdColorMapLookup</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontg-c.html">gdFontGetGiant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontl-c.html">gdFontGetLarge</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontmb-c.html">gdFontGetMediumBold</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfonts-c.html">gdFontGetSmall</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfontt-c.html">gdFontGetTiny</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdhelpers-c.html">gdFree</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdft-c.html">gdft.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdfx-c.html">gdfx.c</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_color_match-c.html">gdImageColorMatch</a></div></div><div class=MEntry><div class=MFile><a href="../files/gdxpm-c.html">gdImageCreateFromXpm</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_nnquant-c.html">gdImageNeuQuant</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_file-c.html">gdNewFileCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_io_ss-c.html">gdNewSSCtx</a></div></div><div class=MEntry><div class=MFile><a href="../files/license-txt.html">License</a></div></div><div class=MEntry><div class=MFile><a href="../files/gd_matrix-c.html">Matrix</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Types</div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Types">Types</option></select></div><script language=JavaScript><!--
+HideAllBut([1], 2);// --></script></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></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/javascript/main.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js
new file mode 100644
index 00000000000..3f42acde648
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js
@@ -0,0 +1,841 @@
+// This file is part of Natural Docs, which is Copyright © 2003-2010 Greg Valure
+// Natural Docs is licensed under version 3 of the GNU Affero General Public License (AGPL)
+// Refer to License.txt for the complete details
+
+// This file may be distributed with documentation files generated by Natural Docs.
+// Such documentation is not covered by Natural Docs' copyright and licensing,
+// and may have its own copyright and distribution terms as decided by its author.
+
+
+//
+// Browser Styles
+// ____________________________________________________________________________
+
+var agt=navigator.userAgent.toLowerCase();
+var browserType;
+var browserVer;
+
+if (agt.indexOf("opera") != -1)
+ {
+ browserType = "Opera";
+
+ if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1)
+ { browserVer = "Opera7"; }
+ else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1)
+ { browserVer = "Opera8"; }
+ else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1)
+ { browserVer = "Opera9"; }
+ }
+
+else if (agt.indexOf("applewebkit") != -1)
+ {
+ browserType = "Safari";
+
+ if (agt.indexOf("version/3") != -1)
+ { browserVer = "Safari3"; }
+ else if (agt.indexOf("safari/4") != -1)
+ { browserVer = "Safari2"; }
+ }
+
+else if (agt.indexOf("khtml") != -1)
+ {
+ browserType = "Konqueror";
+ }
+
+else if (agt.indexOf("msie") != -1)
+ {
+ browserType = "IE";
+
+ if (agt.indexOf("msie 6") != -1)
+ { browserVer = "IE6"; }
+ else if (agt.indexOf("msie 7") != -1)
+ { browserVer = "IE7"; }
+ }
+
+else if (agt.indexOf("gecko") != -1)
+ {
+ browserType = "Firefox";
+
+ if (agt.indexOf("rv:1.7") != -1)
+ { browserVer = "Firefox1"; }
+ else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1)
+ { browserVer = "Firefox15"; }
+ else if (agt.indexOf("rv:1.8.1") != -1)
+ { browserVer = "Firefox2"; }
+ }
+
+
+//
+// Support Functions
+// ____________________________________________________________________________
+
+
+function GetXPosition(item)
+ {
+ var position = 0;
+
+ if (item.offsetWidth != null)
+ {
+ while (item != document.body && item != null)
+ {
+ position += item.offsetLeft;
+ item = item.offsetParent;
+ };
+ };
+
+ return position;
+ };
+
+
+function GetYPosition(item)
+ {
+ var position = 0;
+
+ if (item.offsetWidth != null)
+ {
+ while (item != document.body && item != null)
+ {
+ position += item.offsetTop;
+ item = item.offsetParent;
+ };
+ };
+
+ return position;
+ };
+
+
+function MoveToPosition(item, x, y)
+ {
+ // Opera 5 chokes on the px extension, so it can use the Microsoft one instead.
+
+ if (item.style.left != null)
+ {
+ item.style.left = x + "px";
+ item.style.top = y + "px";
+ }
+ else if (item.style.pixelLeft != null)
+ {
+ item.style.pixelLeft = x;
+ item.style.pixelTop = y;
+ };
+ };
+
+
+//
+// Menu
+// ____________________________________________________________________________
+
+
+function ToggleMenu(id)
+ {
+ if (!window.document.getElementById)
+ { return; };
+
+ var display = window.document.getElementById(id).style.display;
+
+ if (display == "none")
+ { display = "block"; }
+ else
+ { display = "none"; }
+
+ window.document.getElementById(id).style.display = display;
+ }
+
+function HideAllBut(ids, max)
+ {
+ if (document.getElementById)
+ {
+ ids.sort( function(a,b) { return a - b; } );
+ var number = 1;
+
+ while (number < max)
+ {
+ if (ids.length > 0 && number == ids[0])
+ { ids.shift(); }
+ else
+ {
+ document.getElementById("MGroupContent" + number).style.display = "none";
+ };
+
+ number++;
+ };
+ };
+ }
+
+
+//
+// Tooltips
+// ____________________________________________________________________________
+
+
+var tooltipTimer = 0;
+
+function ShowTip(event, tooltipID, linkID)
+ {
+ if (tooltipTimer)
+ { clearTimeout(tooltipTimer); };
+
+ var docX = event.clientX + window.pageXOffset;
+ var docY = event.clientY + window.pageYOffset;
+
+ var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")";
+
+ tooltipTimer = setTimeout(showCommand, 1000);
+ }
+
+function ReallyShowTip(tooltipID, linkID, docX, docY)
+ {
+ tooltipTimer = 0;
+
+ var tooltip;
+ var link;
+
+ if (document.getElementById)
+ {
+ tooltip = document.getElementById(tooltipID);
+ link = document.getElementById(linkID);
+ }
+/* else if (document.all)
+ {
+ tooltip = eval("document.all['" + tooltipID + "']");
+ link = eval("document.all['" + linkID + "']");
+ }
+*/
+ if (tooltip)
+ {
+ var left = GetXPosition(link);
+ var top = GetYPosition(link);
+ top += link.offsetHeight;
+
+
+ // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number
+ // in case some browser snuck through the above if statement but didn't support everything.
+
+ if (!isFinite(top) || top == 0)
+ {
+ left = docX;
+ top = docY;
+ }
+
+ // Some spacing to get it out from under the cursor.
+
+ top += 10;
+
+ // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the
+ // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right.
+
+ if (tooltip.offsetWidth != null)
+ {
+ var width = tooltip.offsetWidth;
+ var docWidth = document.body.clientWidth;
+
+ if (left + width > docWidth)
+ { left = docWidth - width - 1; }
+
+ // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width.
+ if (left < 0)
+ { left = 0; };
+ }
+
+ MoveToPosition(tooltip, left, top);
+ tooltip.style.visibility = "visible";
+ }
+ }
+
+function HideTip(tooltipID)
+ {
+ if (tooltipTimer)
+ {
+ clearTimeout(tooltipTimer);
+ tooltipTimer = 0;
+ }
+
+ var tooltip;
+
+ if (document.getElementById)
+ { tooltip = document.getElementById(tooltipID); }
+ else if (document.all)
+ { tooltip = eval("document.all['" + tooltipID + "']"); }
+
+ if (tooltip)
+ { tooltip.style.visibility = "hidden"; }
+ }
+
+
+//
+// Blockquote fix for IE
+// ____________________________________________________________________________
+
+
+function NDOnLoad()
+ {
+ if (browserVer == "IE6")
+ {
+ var scrollboxes = document.getElementsByTagName('blockquote');
+
+ if (scrollboxes.item(0))
+ {
+ NDDoResize();
+ window.onresize=NDOnResize;
+ };
+ };
+ };
+
+
+var resizeTimer = 0;
+
+function NDOnResize()
+ {
+ if (resizeTimer != 0)
+ { clearTimeout(resizeTimer); };
+
+ resizeTimer = setTimeout(NDDoResize, 250);
+ };
+
+
+function NDDoResize()
+ {
+ var scrollboxes = document.getElementsByTagName('blockquote');
+
+ var i;
+ var item;
+
+ i = 0;
+ while (item = scrollboxes.item(i))
+ {
+ item.style.width = 100;
+ i++;
+ };
+
+ i = 0;
+ while (item = scrollboxes.item(i))
+ {
+ item.style.width = item.parentNode.offsetWidth;
+ i++;
+ };
+
+ clearTimeout(resizeTimer);
+ resizeTimer = 0;
+ }
+
+
+
+/* ________________________________________________________________________________________________________
+
+ Class: SearchPanel
+ ________________________________________________________________________________________________________
+
+ A class handling everything associated with the search panel.
+
+ Parameters:
+
+ name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts.
+ mode - The mode the search is going to work in. Pass <NaturalDocs::Builder::Base->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 <keyTimeout> 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 <lastSearchValue> 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 <deactivateTimeout> 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 <inactivateTimeout>, which is set by <Activate()>. 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 <Search()>.
+ */
+ 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, "_lan");
+ search = search.replace(/\>/g, "_ran");
+ search = search.replace(/\,/g, "_com");
+ search = search.replace(/\./g, "_per");
+ search = search.replace(/\?/g, "_que");
+ search = search.replace(/\//g, "_sla");
+ search = search.replace(/[^a-z0-9\_]i/gi, "_zzz");
+ };
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, '');
+
+ if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search)
+ {
+ row.style.display = "block";
+ matches++;
+ }
+ else
+ { row.style.display = "none"; };
+ };
+
+ i++;
+ };
+
+ document.getElementById("Searching").style.display="none";
+
+ if (matches == 0)
+ { document.getElementById("NoMatches").style.display="block"; }
+ else
+ { document.getElementById("NoMatches").style.display="none"; }
+
+ this.lastMatchCount = matches;
+
+ return true;
+ };
+ };
+
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js
new file mode 100644
index 00000000000..fda4bf1eda7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js
@@ -0,0 +1,1526 @@
+
+// This code comes from the December 2009 release of Google Prettify, which is Copyright © 2006 Google Inc.
+// Minor modifications are marked with "ND Change" comments.
+// As part of Natural Docs, this code is licensed under version 3 of the GNU Affero General Public License (AGPL.)
+// However, it may also be obtained separately under version 2.0 of the Apache License.
+// Refer to License.txt for the complete details
+
+
+// Main code
+// ____________________________________________________________________________
+
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ * <p>
+ *
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * 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.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules. See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ * </ol>
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ * @overrides window
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+/** the number of characters between tab columns */
+window['PR_TAB_WIDTH'] = 8;
+
+/** Walks the DOM returning a properly escaped version of innerHTML.
+ * @param {Node} node
+ * @param {Array.<string>} out output buffer that receives chunks of HTML.
+ */
+window['PR_normalizedHtml']
+
+/** Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+ = window['PR']
+
+/** Pretty print a chunk of code.
+ *
+ * @param {string} sourceCodeHtml code as html
+ * @return {string} code as html, but prettier
+ */
+ = window['prettyPrintOne']
+/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ * @param {Function?} opt_whenDone if specified, called when the last entry
+ * has been finished.
+ */
+ = window['prettyPrint'] = void 0;
+
+/** browser detection. @extern @returns false if not IE, otherwise the major version. */
+window['_pr_isIE6'] = function () {
+ var ieVersion = navigator && navigator.userAgent &&
+ navigator.userAgent.match(/\bMSIE ([678])\./);
+ ieVersion = ieVersion ? +ieVersion[1] : false;
+ window['_pr_isIE6'] = function () { return ieVersion; };
+ return ieVersion;
+};
+
+
+(function () {
+ // Keyword lists for various languages.
+ var FLOW_CONTROL_KEYWORDS =
+ "break continue do else for if return while ";
+ var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
+ "double enum extern float goto int long register short signed sizeof " +
+ "static struct switch typedef union unsigned void volatile ";
+ var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
+ "new operator private protected public this throw true try typeof ";
+ var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
+ "concept concept_map const_cast constexpr decltype " +
+ "dynamic_cast explicit export friend inline late_check " +
+ "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
+ "template typeid typename using virtual wchar_t where ";
+ var JAVA_KEYWORDS = COMMON_KEYWORDS +
+ "abstract boolean byte extends final finally implements import " +
+ "instanceof null native package strictfp super synchronized throws " +
+ "transient ";
+ var CSHARP_KEYWORDS = JAVA_KEYWORDS +
+ "as base by checked decimal delegate descending event " +
+ "fixed foreach from group implicit in interface internal into is lock " +
+ "object out override orderby params partial readonly ref sbyte sealed " +
+ "stackalloc string select uint ulong unchecked unsafe ushort var ";
+ var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
+ "debugger eval export function get null set undefined var with " +
+ "Infinity NaN ";
+ var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
+ "goto if import last local my next no our print package redo require " +
+ "sub undef unless until use wantarray while BEGIN END ";
+ var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
+ "elif except exec finally from global import in is lambda " +
+ "nonlocal not or pass print raise try with yield " +
+ "False True None ";
+ var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
+ " defined elsif end ensure false in module next nil not or redo rescue " +
+ "retry self super then true undef unless until when yield BEGIN END ";
+ var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
+ "function in local set then until ";
+ var ALL_KEYWORDS = (
+ CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
+ PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
+
+ // token style names. correspond to css classes
+ /** token style for a string literal */
+ var PR_STRING = 'str';
+ /** token style for a keyword */
+ var PR_KEYWORD = 'kwd';
+ /** token style for a comment */
+ var PR_COMMENT = 'com';
+ /** token style for a type */
+ var PR_TYPE = 'typ';
+ /** token style for a literal value. e.g. 1, null, true. */
+ var PR_LITERAL = 'lit';
+ /** token style for a punctuation string. */
+ var PR_PUNCTUATION = 'pun';
+ /** token style for a punctuation string. */
+ var PR_PLAIN = 'pln';
+
+ /** token style for an sgml tag. */
+ var PR_TAG = 'tag';
+ /** token style for a markup declaration such as a DOCTYPE. */
+ var PR_DECLARATION = 'dec';
+ /** token style for embedded source. */
+ var PR_SOURCE = 'src';
+ /** token style for an sgml attribute name. */
+ var PR_ATTRIB_NAME = 'atn';
+ /** token style for an sgml attribute value. */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ */
+ var PR_NOCODE = 'nocode';
+
+ /** A set of tokens that can precede a regular expression literal in
+ * javascript.
+ * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
+ * list, but I've removed ones that might be problematic when seen in
+ * languages that don't support regular expression literals.
+ *
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ * <p>The link a above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ */
+ var REGEXP_PRECEDER_PATTERN = function () {
+ var preceders = [
+ "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
+ "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
+ "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
+ "<", "<<", "<<=", "<=", "=", "==", "===", ">",
+ ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
+ "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
+ "||=", "~" /* handles =~ and !~ */,
+ "break", "case", "continue", "delete",
+ "do", "else", "finally", "instanceof",
+ "return", "throw", "try", "typeof"
+ ];
+ var pattern = '(?:^^|[+-]';
+ for (var i = 0; i < preceders.length; ++i) {
+ pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
+ }
+ pattern += ')\\s*'; // matches at end, and matches empty string
+ return pattern;
+ // CAVEAT: this does not properly handle the case where a regular
+ // expression immediately follows another since a regular expression may
+ // have flags for case-sensitivity and the like. Having regexp tokens
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
+ // TODO: maybe style special characters inside a regexp as punctuation.
+ }();
+
+ // Define regexps here so that the interpreter doesn't have to create an
+ // object each time the function containing them is called.
+ // The language spec requires a new object created even if you don't access
+ // the $1 members.
+ var pr_amp = /&/g;
+ var pr_lt = /</g;
+ var pr_gt = />/g;
+ var pr_quot = /\"/g;
+ /** like textToHtml but escapes double quotes to be attribute safe. */
+ function attribToHtml(str) {
+ return str.replace(pr_amp, '&amp;')
+ .replace(pr_lt, '&lt;')
+ .replace(pr_gt, '&gt;')
+ .replace(pr_quot, '&quot;');
+ }
+
+ /** escapest html special characters to html. */
+ function textToHtml(str) {
+ return str.replace(pr_amp, '&amp;')
+ .replace(pr_lt, '&lt;')
+ .replace(pr_gt, '&gt;');
+ }
+
+
+ var pr_ltEnt = /&lt;/g;
+ var pr_gtEnt = /&gt;/g;
+ var pr_aposEnt = /&apos;/g;
+ var pr_quotEnt = /&quot;/g;
+ var pr_ampEnt = /&amp;/g;
+ var pr_nbspEnt = /&nbsp;/g;
+ /** unescapes html to plain text. */
+ function htmlToText(html) {
+ var pos = html.indexOf('&');
+ if (pos < 0) { return html; }
+ // Handle numeric entities specially. We can't use functional substitution
+ // since that doesn't work in older versions of Safari.
+ // These should be rare since most browsers convert them to normal chars.
+ for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
+ var end = html.indexOf(';', pos);
+ if (end >= 0) {
+ var num = html.substring(pos + 3, end);
+ var radix = 10;
+ if (num && num.charAt(0) === 'x') {
+ num = num.substring(1);
+ radix = 16;
+ }
+ var codePoint = parseInt(num, radix);
+ if (!isNaN(codePoint)) {
+ html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
+ html.substring(end + 1));
+ }
+ }
+ }
+
+ return html.replace(pr_ltEnt, '<')
+ .replace(pr_gtEnt, '>')
+ .replace(pr_aposEnt, "'")
+ .replace(pr_quotEnt, '"')
+ .replace(pr_nbspEnt, ' ')
+ .replace(pr_ampEnt, '&');
+ }
+
+ /** is the given node's innerHTML normally unescaped? */
+ function isRawContent(node) {
+ return 'XMP' === node.tagName;
+ }
+
+ var newlineRe = /[\r\n]/g;
+ /**
+ * Are newlines and adjacent spaces significant in the given node's innerHTML?
+ */
+ function isPreformatted(node, content) {
+ // PRE means preformatted, and is a very common case, so don't create
+ // unnecessary computed style objects.
+ if ('PRE' === node.tagName) { return true; }
+ if (!newlineRe.test(content)) { return true; } // Don't care
+ var whitespace = '';
+ // For disconnected nodes, IE has no currentStyle.
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ // Firefox makes a best guess if node is disconnected whereas Safari
+ // returns the empty string.
+ whitespace = window.getComputedStyle(node, null).whiteSpace;
+ }
+ return !whitespace || whitespace === 'pre';
+ }
+
+ function normalizedHtml(node, out) {
+ switch (node.nodeType) {
+ case 1: // an element
+ var name = node.tagName.toLowerCase();
+ out.push('<', name);
+ for (var i = 0; i < node.attributes.length; ++i) {
+ var attr = node.attributes[i];
+ if (!attr.specified) { continue; }
+ out.push(' ');
+ normalizedHtml(attr, out);
+ }
+ out.push('>');
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ normalizedHtml(child, out);
+ }
+ if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
+ out.push('<\/', name, '>');
+ }
+ break;
+ case 2: // an attribute
+ out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"');
+ break;
+ case 3: case 4: // text
+ out.push(textToHtml(node.nodeValue));
+ break;
+ }
+ }
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union o the sets o strings matched d by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ function decodeEscape(charsetPart) {
+ if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
+ switch (charsetPart.charAt(1)) {
+ case 'b': return 8;
+ case 't': return 9;
+ case 'n': return 0xa;
+ case 'v': return 0xb;
+ case 'f': return 0xc;
+ case 'r': return 0xd;
+ case 'u': case 'x':
+ return parseInt(charsetPart.substring(2), 16)
+ || charsetPart.charCodeAt(1);
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7':
+ return parseInt(charsetPart.substring(1), 8);
+ default: return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+ ch = '\\' + ch;
+ }
+ return ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var groups = [];
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ switch (p) {
+ case '\\B': case '\\b':
+ case '\\D': case '\\d':
+ case '\\S': case '\\s':
+ case '\\W': case '\\w':
+ groups.push(p);
+ continue;
+ }
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [NaN, NaN];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+ out.push.apply(out, groups);
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/emd of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (capturedGroups[groupIndex] === undefined) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[groupIndex];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groupts to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+ var PR_innerHtmlWorks = null;
+ function getInnerHtml(node) {
+ // inner html is hopelessly broken in Safari 2.0.4 when the content is
+ // an html description of well formed XML and the containing tag is a PRE
+ // tag, so we detect that case and emulate innerHTML.
+ if (null === PR_innerHtmlWorks) {
+ var testNode = document.createElement('PRE');
+ testNode.appendChild(
+ document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
+ PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
+ }
+
+ if (PR_innerHtmlWorks) {
+ var content = node.innerHTML;
+ // XMP tags contain unescaped entities so require special handling.
+ if (isRawContent(node)) {
+ content = textToHtml(content);
+ } else if (!isPreformatted(node, content)) {
+ content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
+ .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
+ }
+ return content;
+ }
+
+ var out = [];
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ normalizedHtml(child, out);
+ }
+ return out.join('');
+ }
+
+ /** returns a function that expand tabs to spaces. This function can be fed
+ * successive chunks of text, and will maintain its own internal state to
+ * keep track of how tabs are expanded.
+ * @return {function (string) : string} a function that takes
+ * plain text and return the text with tabs expanded.
+ * @private
+ */
+ function makeTabExpander(tabWidth) {
+ var SPACES = ' ';
+ var charInLine = 0;
+
+ return function (plainText) {
+ // walk over each character looking for tabs and newlines.
+ // On tabs, expand them. On newlines, reset charInLine.
+ // Otherwise increment charInLine
+ var out = null;
+ var pos = 0;
+ for (var i = 0, n = plainText.length; i < n; ++i) {
+ var ch = plainText.charAt(i);
+
+ switch (ch) {
+ case '\t':
+ if (!out) { out = []; }
+ out.push(plainText.substring(pos, i));
+ // calculate how much space we need in front of this part
+ // nSpaces is the amount of padding -- the number of spaces needed
+ // to move us to the next column, where columns occur at factors of
+ // tabWidth.
+ var nSpaces = tabWidth - (charInLine % tabWidth);
+ charInLine += nSpaces;
+ for (; nSpaces >= 0; nSpaces -= SPACES.length) {
+ out.push(SPACES.substring(0, nSpaces));
+ }
+ pos = i + 1;
+ break;
+ case '\n':
+ charInLine = 0;
+ break;
+ default:
+ ++charInLine;
+ }
+ }
+ if (!out) { return plainText; }
+ out.push(plainText.substring(pos));
+ return out.join('');
+ };
+ }
+
+ var pr_chunkPattern = new RegExp(
+ '[^<]+' // A run of characters other than '<'
+ + '|<\!--[\\s\\S]*?--\>' // an HTML comment
+ + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' // a CDATA section
+ // a probable tag that should not be highlighted
+ + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
+ + '|<', // A '<' that does not begin a larger chunk
+ 'g');
+ var pr_commentPrefix = /^<\!--/;
+ var pr_cdataPrefix = /^<!\[CDATA\[/;
+ var pr_brPrefix = /^<br\b/i;
+ var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
+
+ /** split markup into chunks of html tags (style null) and
+ * plain text (style {@link #PR_PLAIN}), converting tags which are
+ * significant for tokenization (<br>) into their textual equivalent.
+ *
+ * @param {string} s html where whitespace is considered significant.
+ * @return {Object} source code and extracted tags.
+ * @private
+ */
+ function extractTags(s) {
+ // since the pattern has the 'g' modifier and defines no capturing groups,
+ // this will return a list of all chunks which we then classify and wrap as
+ // PR_Tokens
+ var matches = s.match(pr_chunkPattern);
+ var sourceBuf = [];
+ var sourceBufLen = 0;
+ var extractedTags = [];
+ if (matches) {
+ for (var i = 0, n = matches.length; i < n; ++i) {
+ var match = matches[i];
+ if (match.length > 1 && match.charAt(0) === '<') {
+ if (pr_commentPrefix.test(match)) { continue; }
+ if (pr_cdataPrefix.test(match)) {
+ // strip CDATA prefix and suffix. Don't unescape since it's CDATA
+ sourceBuf.push(match.substring(9, match.length - 3));
+ sourceBufLen += match.length - 12;
+ } else if (pr_brPrefix.test(match)) {
+ // <br> tags are lexically significant so convert them to text.
+ // This is undone later.
+ sourceBuf.push('\n');
+ ++sourceBufLen;
+ } else {
+ if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
+ // A <span class="nocode"> will start a section that should be
+ // ignored. Continue walking the list until we see a matching end
+ // tag.
+ var name = match.match(pr_tagNameRe)[2];
+ var depth = 1;
+ var j;
+ end_tag_loop:
+ for (j = i + 1; j < n; ++j) {
+ var name2 = matches[j].match(pr_tagNameRe);
+ if (name2 && name2[2] === name) {
+ if (name2[1] === '/') {
+ if (--depth === 0) { break end_tag_loop; }
+ } else {
+ ++depth;
+ }
+ }
+ }
+ if (j < n) {
+ extractedTags.push(
+ sourceBufLen, matches.slice(i, j + 1).join(''));
+ i = j;
+ } else { // Ignore unclosed sections.
+ extractedTags.push(sourceBufLen, match);
+ }
+ } else {
+ extractedTags.push(sourceBufLen, match);
+ }
+ }
+ } else {
+ var literalText = htmlToText(match);
+ sourceBuf.push(literalText);
+ sourceBufLen += literalText.length;
+ }
+ }
+ }
+ return { source: sourceBuf.join(''), tags: extractedTags };
+ }
+
+ /** True if the given tag contains a class attribute with the nocode class. */
+ function isNoCodeTag(tag) {
+ return !!tag
+ // First canonicalize the representation of attributes
+ .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
+ ' $1="$2$3$4"')
+ // Then look for the attribute we want.
+ .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
+ }
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ source: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '<script>foo()<\/script>', which would cause the current decorator to
+ * be called with '<script>' which would not match the same rule since
+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
+ * the generic tag rule. The handler registered for the 'js' extension would
+ * then be called with 'foo()', and finally, the current decorator would
+ * be called with '<\/script>' which would not match the original rule and
+ * so the generic tag rule would identify it as a tag.
+ *
+ * Pattern must only match prefixes, and if it matches a prefix, then that
+ * match is considered a token with the same style.
+ *
+ * Context is applied to the last non-whitespace, non-comment token
+ * recognized.
+ *
+ * Shortcut is an optional string of characters, any of which, if the first
+ * character, gurantee that this pattern and only this pattern matches.
+ *
+ * @param {Array} shortcutStylePatterns patterns that always start with
+ * a known character. Must have a shortcut string.
+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
+ * order if the shortcut ones fail. May have shortcuts.
+ *
+ * @return {function (Object)} a
+ * function that takes source code and returns a list of decorations.
+ */
+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+ var shortcuts = {};
+ var tokenizer;
+ (function () {
+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+ var allRegexs = [];
+ var regexKeys = {};
+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
+ var patternParts = allPatterns[i];
+ var shortcutChars = patternParts[3];
+ if (shortcutChars) {
+ for (var c = shortcutChars.length; --c >= 0;) {
+ shortcuts[shortcutChars.charAt(c)] = patternParts;
+ }
+ }
+ var regex = patternParts[1];
+ var k = '' + regex;
+ if (!regexKeys.hasOwnProperty(k)) {
+ allRegexs.push(regex);
+ regexKeys[k] = null;
+ }
+ }
+ allRegexs.push(/[\0-\uffff]/);
+ tokenizer = combinePrefixPatterns(allRegexs);
+ })();
+
+ var nPatterns = fallthroughStylePatterns.length;
+ var notWs = /\S/;
+
+ /**
+ * Lexes job.source and produces an output array job.decorations of style
+ * classes preceded by the position at which they start in job.source in
+ * order.
+ *
+ * @param {Object} job an object like {@code
+ * source: {string} sourceText plain text,
+ * basePos: {int} position of job.source in the larger chunk of
+ * sourceCode.
+ * }
+ */
+ var decorate = function (job) {
+ var sourceCode = job.source, basePos = job.basePos;
+ /** Even entries are positions in source in ascending order. Odd enties
+ * are style markers (e.g., PR_COMMENT) that run from that position until
+ * the end.
+ * @type {Array.<number|string>}
+ */
+ var decorations = [basePos, PR_PLAIN];
+ var pos = 0; // index into sourceCode
+ var tokens = sourceCode.match(tokenizer) || [];
+ var styleCache = {};
+
+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+ var token = tokens[ti];
+ var style = styleCache[token];
+ var match = void 0;
+
+ var isEmbedded;
+ if (typeof style === 'string') {
+ isEmbedded = false;
+ } else {
+ var patternParts = shortcuts[token.charAt(0)];
+ if (patternParts) {
+ match = token.match(patternParts[1]);
+ style = patternParts[0];
+ } else {
+ for (var i = 0; i < nPatterns; ++i) {
+ patternParts = fallthroughStylePatterns[i];
+ match = token.match(patternParts[1]);
+ if (match) {
+ style = patternParts[0];
+ break;
+ }
+ }
+
+ if (!match) { // make sure that we make progress
+ style = PR_PLAIN;
+ }
+ }
+
+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
+ isEmbedded = false;
+ style = PR_SOURCE;
+ }
+
+ if (!isEmbedded) { styleCache[token] = style; }
+ }
+
+ var tokenStart = pos;
+ pos += token.length;
+
+ if (!isEmbedded) {
+ decorations.push(basePos + tokenStart, style);
+ } else { // Treat group 1 as an embedded block of source code.
+ var embeddedSource = match[1];
+ var embeddedSourceStart = token.indexOf(embeddedSource);
+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+ if (match[2]) {
+ // If embeddedSource can be blank, then it would match at the
+ // beginning which would cause us to infinitely recurse on the
+ // entire token, so we catch the right context in match[2].
+ embeddedSourceEnd = token.length - match[2].length;
+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+ }
+ var lang = style.substring(5);
+ // Decorate the left of the embedded source
+ appendDecorations(
+ basePos + tokenStart,
+ token.substring(0, embeddedSourceStart),
+ decorate, decorations);
+ // Decorate the embedded source
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceStart,
+ embeddedSource,
+ langHandlerForExtension(lang, embeddedSource),
+ decorations);
+ // Decorate the right of the embedded section
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceEnd,
+ token.substring(embeddedSourceEnd),
+ decorate, decorations);
+ }
+ }
+ job.decorations = decorations;
+ };
+ return decorate;
+ }
+
+ /** returns a function that produces a list of decorations from source text.
+ *
+ * This code treats ", ', and ` as string delimiters, and \ as a string
+ * escape. It does not recognize perl's qq() style strings.
+ * It has no special handling for double delimiter escapes as in basic, or
+ * the tripled delimiters used in python, but should work on those regardless
+ * although in those cases a single string literal may be broken up into
+ * multiple adjacent string literals.
+ *
+ * It recognizes C, C++, and shell style comments.
+ *
+ * @param {Object} options a set of optional parameters.
+ * @return {function (Object)} a function that examines the source code
+ * in the input job and builds the decoration list.
+ */
+ function sourceDecorator(options) {
+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+ if (options['tripleQuotedStrings']) {
+ // '''multi-line-string''', 'single-line-string', and double-quoted
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+ null, '\'"']);
+ } else if (options['multiLineStrings']) {
+ // 'multi-line-string', "multi-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+ null, '\'"`']);
+ } else {
+ // 'single-line-string', "single-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING,
+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+ null, '"\'']);
+ }
+ if (options['verbatimStrings']) {
+ // verbatim-string-literal production from the C# grammar. See issue 93.
+ fallthroughStylePatterns.push(
+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+ }
+ if (options['hashComments']) {
+ if (options['cStyleComments']) {
+ // Stop C preprocessor declarations at an unclosed open comment
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
+ null, '#']);
+ fallthroughStylePatterns.push(
+ [PR_STRING,
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
+ null]);
+ } else {
+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+ }
+ }
+ if (options['cStyleComments']) {
+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+ fallthroughStylePatterns.push(
+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+ }
+ if (options['regexLiterals']) {
+ var REGEX_LITERAL = (
+ // A regular expression literal starts with a slash that is
+ // not followed by * or / so that it is not confused with
+ // comments.
+ '/(?=[^/*])'
+ // and then contains any number of raw characters,
+ + '(?:[^/\\x5B\\x5C]'
+ // escape sequences (\x5C),
+ + '|\\x5C[\\s\\S]'
+ // or non-nesting character sets (\x5B\x5D);
+ + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
+ // finally closed by a /.
+ + '/');
+ fallthroughStylePatterns.push(
+ ['lang-regex',
+ new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+ ]);
+ }
+
+ var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
+ if (keywords.length) {
+ fallthroughStylePatterns.push(
+ [PR_KEYWORD,
+ new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
+ }
+
+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
+ fallthroughStylePatterns.push(
+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_LITERAL,
+ new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'),
+ null, '0123456789'],
+ [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
+
+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+ }
+
+ var decorateSource = sourceDecorator({
+ 'keywords': ALL_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ });
+
+ /** Breaks {@code job.source} around style boundaries in
+ * {@code job.decorations} while re-interleaving {@code job.extractedTags},
+ * and leaves the result in {@code job.prettyPrintedHtml}.
+ * @param {Object} job like {
+ * source: {string} source as plain text,
+ * extractedTags: {Array.<number|string>} extractedTags chunks of raw
+ * html preceded by their position in {@code job.source}
+ * in order
+ * decorations: {Array.<number|string} an array of style classes preceded
+ * by the position at which they start in job.source in order
+ * }
+ * @private
+ */
+ function recombineTagsAndDecorations(job) {
+ var sourceText = job.source;
+ var extractedTags = job.extractedTags;
+ var decorations = job.decorations;
+
+ var html = [];
+ // index past the last char in sourceText written to html
+ var outputIdx = 0;
+
+ var openDecoration = null;
+ var currentDecoration = null;
+ var tagPos = 0; // index into extractedTags
+ var decPos = 0; // index into decorations
+ var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
+
+ var adjacentSpaceRe = /([\r\n ]) /g;
+ var startOrSpaceRe = /(^| ) /gm;
+ var newlineRe = /\r\n?|\n/g;
+ var trailingSpaceRe = /[ \r\n]$/;
+ var lastWasSpace = true; // the last text chunk emitted ended with a space.
+
+ // A helper function that is responsible for opening sections of decoration
+ // and outputing properly escaped chunks of source
+ function emitTextUpTo(sourceIdx) {
+ if (sourceIdx > outputIdx) {
+ if (openDecoration && openDecoration !== currentDecoration) {
+ // Close the current decoration
+ html.push('</span>');
+ openDecoration = null;
+ }
+ if (!openDecoration && currentDecoration) {
+ openDecoration = currentDecoration;
+ html.push('<span class="', openDecoration, '">');
+ }
+ // This interacts badly with some wikis which introduces paragraph tags
+ // into pre blocks for some strange reason.
+ // It's necessary for IE though which seems to lose the preformattedness
+ // of <pre> tags when their innerHTML is assigned.
+ // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
+ // and it serves to undo the conversion of <br>s to newlines done in
+ // chunkify.
+ var htmlChunk = textToHtml(
+ tabExpander(sourceText.substring(outputIdx, sourceIdx)))
+ .replace(lastWasSpace
+ ? startOrSpaceRe
+ : adjacentSpaceRe, '$1&nbsp;');
+ // Keep track of whether we need to escape space at the beginning of the
+ // next chunk.
+ lastWasSpace = trailingSpaceRe.test(htmlChunk);
+ // IE collapses multiple adjacient <br>s into 1 line break.
+ // Prefix every <br> with '&nbsp;' can prevent such IE's behavior.
+ var lineBreakHtml = window['_pr_isIE6']() ? '&nbsp;<br />' : '<br />';
+ html.push(htmlChunk.replace(newlineRe, lineBreakHtml));
+ outputIdx = sourceIdx;
+ }
+ }
+
+ while (true) {
+ // Determine if we're going to consume a tag this time around. Otherwise
+ // we consume a decoration or exit.
+ var outputTag;
+ if (tagPos < extractedTags.length) {
+ if (decPos < decorations.length) {
+ // Pick one giving preference to extractedTags since we shouldn't open
+ // a new style that we're going to have to immediately close in order
+ // to output a tag.
+ outputTag = extractedTags[tagPos] <= decorations[decPos];
+ } else {
+ outputTag = true;
+ }
+ } else {
+ outputTag = false;
+ }
+ // Consume either a decoration or a tag or exit.
+ if (outputTag) {
+ emitTextUpTo(extractedTags[tagPos]);
+ if (openDecoration) {
+ // Close the current decoration
+ html.push('</span>');
+ openDecoration = null;
+ }
+ html.push(extractedTags[tagPos + 1]);
+ tagPos += 2;
+ } else if (decPos < decorations.length) {
+ emitTextUpTo(decorations[decPos]);
+ currentDecoration = decorations[decPos + 1];
+ decPos += 2;
+ } else {
+ break;
+ }
+ }
+ emitTextUpTo(sourceText.length);
+ if (openDecoration) {
+ html.push('</span>');
+ }
+ job.prettyPrintedHtml = html.join('');
+ }
+
+ /** Maps language-specific file extensions to handlers. */
+ var langHandlerRegistry = {};
+ /** Register a language handler for the given file extensions.
+ * @param {function (Object)} handler a function from source code to a list
+ * of decorations. Takes a single argument job which describes the
+ * state of the computation. The single parameter has the form
+ * {@code {
+ * source: {string} as plain text.
+ * decorations: {Array.<number|string>} an array of style classes
+ * preceded by the position at which they start in
+ * job.source in order.
+ * The language handler should assigned this field.
+ * basePos: {int} the position of source in the larger source chunk.
+ * All positions in the output decorations array are relative
+ * to the larger source chunk.
+ * } }
+ * @param {Array.<string>} fileExtensions
+ */
+ function registerLangHandler(handler, fileExtensions) {
+ for (var i = fileExtensions.length; --i >= 0;) {
+ var ext = fileExtensions[i];
+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
+ langHandlerRegistry[ext] = handler;
+ } else if ('console' in window) {
+ console.warn('cannot override language handler %s', ext);
+ }
+ }
+ }
+ function langHandlerForExtension(extension, source) {
+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+ // Treat it as markup if the first non whitespace character is a < and
+ // the last non-whitespace character is a >.
+ extension = /^\s*</.test(source)
+ ? 'default-markup'
+ : 'default-code';
+ }
+ return langHandlerRegistry[extension];
+ }
+ registerLangHandler(decorateSource, ['default-code']);
+ registerLangHandler(
+ createSimpleLexer(
+ [],
+ [
+ [PR_PLAIN, /^[^<?]+/],
+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
+ // Unescaped content in an unknown language
+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+ // Unescaped content in javascript. (Or possibly vbscript).
+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+ // Contains unescaped stylesheet content
+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
+ ]),
+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+ registerLangHandler(
+ createSimpleLexer(
+ [
+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+ ],
+ [
+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+ [PR_PUNCTUATION, /^[=<>\/]+/],
+ ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
+ ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
+ ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
+ ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
+ ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
+ ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
+ ]),
+ ['in.tag']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CPP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true
+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': 'null true false'
+ }), ['json']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CSHARP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'verbatimStrings': true
+ }), ['cs']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JAVA_KEYWORDS,
+ 'cStyleComments': true
+ }), ['java']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': SH_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true
+ }), ['bsh', 'csh', 'sh']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PYTHON_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'tripleQuotedStrings': true
+ }), ['cv', 'py']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PERL_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['perl', 'pl', 'pm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUBY_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['rb']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JSCRIPT_KEYWORDS,
+ 'cStyleComments': true,
+ 'regexLiterals': true
+ }), ['js']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+ function applyDecorator(job) {
+ var sourceCodeHtml = job.sourceCodeHtml;
+ var opt_langExtension = job.langExtension;
+
+ // Prepopulate output in case processing fails with an exception.
+ job.prettyPrintedHtml = sourceCodeHtml;
+
+ try {
+ // Extract tags, and convert the source code to plain text.
+ var sourceAndExtractedTags = extractTags(sourceCodeHtml);
+ /** Plain text. @type {string} */
+ var source = sourceAndExtractedTags.source;
+ job.source = source;
+ job.basePos = 0;
+
+ /** Even entries are positions in source in ascending order. Odd entries
+ * are tags that were extracted at that position.
+ * @type {Array.<number|string>}
+ */
+ job.extractedTags = sourceAndExtractedTags.tags;
+
+ // Apply the appropriate language handler
+ langHandlerForExtension(opt_langExtension, source)(job);
+ // Integrate the decorations and tags back into the source code to produce
+ // a decorated html string which is left in job.prettyPrintedHtml.
+ recombineTagsAndDecorations(job);
+ } catch (e) {
+ if ('console' in window) {
+ console.log(e);
+ console.trace();
+ }
+ }
+ }
+
+ function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
+ var job = {
+ sourceCodeHtml: sourceCodeHtml,
+ langExtension: opt_langExtension
+ };
+ applyDecorator(job);
+ return job.prettyPrintedHtml;
+ }
+
+ function prettyPrint(opt_whenDone) {
+ var isIE678 = window['_pr_isIE6']();
+ var ieNewline = isIE678 === 6 ? '\r\n' : '\r';
+ // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
+
+ // fetch a list of nodes to rewrite
+ var codeSegments = [
+ document.getElementsByTagName('pre'),
+ document.getElementsByTagName('code'),
+ document.getElementsByTagName('td'), /* ND Change: Add tables to support prototypes. */
+ document.getElementsByTagName('xmp') ];
+ var elements = [];
+ for (var i = 0; i < codeSegments.length; ++i) {
+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+ elements.push(codeSegments[i][j]);
+ }
+ }
+ codeSegments = null;
+
+ var clock = Date;
+ if (!clock['now']) {
+ clock = { 'now': function () { return (new Date).getTime(); } };
+ }
+
+ // The loop is broken into a series of continuations to make sure that we
+ // don't make the browser unresponsive when rewriting a large page.
+ var k = 0;
+ var prettyPrintingJob;
+
+ function doWork() {
+ var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
+ clock.now() + 250 /* ms */ :
+ Infinity);
+ for (; k < elements.length && clock.now() < endTime; k++) {
+ var cs = elements[k];
+ if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
+ // If the classes includes a language extensions, use it.
+ // Language extensions can be specified like
+ // <pre class="prettyprint lang-cpp">
+ // the language extension "cpp" is used to find a language handler as
+ // passed to PR_registerLangHandler.
+ var langExtension = cs.className.match(/\blang-(\w+)\b/);
+ if (langExtension) { langExtension = langExtension[1]; }
+
+ // make sure this is not nested in an already prettified element
+ var nested = false;
+ for (var p = cs.parentNode; p; p = p.parentNode) {
+ if ((p.tagName === 'pre' || p.tagName === 'code' ||
+ p.tagName === 'xmp' || p.tagName === 'td') && /* ND Change: Add tables to support prototypes */
+ p.className && p.className.indexOf('prettyprint') >= 0) {
+ nested = true;
+ break;
+ }
+ }
+ if (!nested) {
+ // fetch the content as a snippet of properly escaped HTML.
+ // Firefox adds newlines at the end.
+ var content = getInnerHtml(cs);
+ content = content.replace(/(?:\r\n?|\n)$/, '');
+
+ /* ND Change: we need to preserve &nbsp;s so change them to a special character instead of a space. */
+ content = content.replace(/&nbsp;/g, '\x11');
+
+ // do the pretty printing
+ prettyPrintingJob = {
+ sourceCodeHtml: content,
+ langExtension: langExtension,
+ sourceNode: cs
+ };
+ applyDecorator(prettyPrintingJob);
+ replaceWithPrettyPrintedHtml();
+ }
+ }
+ }
+ if (k < elements.length) {
+ // finish up in a continuation
+ setTimeout(doWork, 250);
+ } else if (opt_whenDone) {
+ opt_whenDone();
+ }
+ }
+
+ function replaceWithPrettyPrintedHtml() {
+ var newContent = prettyPrintingJob.prettyPrintedHtml;
+ if (!newContent) { return; }
+
+ /* ND Change: Restore the preserved &nbsp;s. */
+ newContent = newContent.replace(/\x11/g, '&nbsp;');
+
+ var cs = prettyPrintingJob.sourceNode;
+
+ // push the prettified html back into the tag.
+ if (!isRawContent(cs)) {
+ // just replace the old html with the new
+ cs.innerHTML = newContent;
+ } else {
+ // we need to change the tag to a <pre> since <xmp>s do not allow
+ // embedded tags such as the span tags used to attach styles to
+ // sections of source code.
+ var pre = document.createElement('PRE');
+ for (var i = 0; i < cs.attributes.length; ++i) {
+ var a = cs.attributes[i];
+ if (a.specified) {
+ var aname = a.name.toLowerCase();
+ if (aname === 'class') {
+ pre.className = a.value; // For IE 6
+ } else {
+ pre.setAttribute(a.name, a.value);
+ }
+ }
+ }
+ pre.innerHTML = newContent;
+
+ // remove the old
+ cs.parentNode.replaceChild(pre, cs);
+ cs = pre;
+ }
+
+ // Replace <br>s with line-feeds so that copying and pasting works
+ // on IE 6.
+ // Doing this on other browsers breaks lots of stuff since \r\n is
+ // treated as two newlines on Firefox, and doing this also slows
+ // down rendering.
+ if (isIE678 && cs.tagName === 'PRE') {
+ var lineBreaks = cs.getElementsByTagName('br');
+ for (var j = lineBreaks.length; --j >= 0;) {
+ var lineBreak = lineBreaks[j];
+ lineBreak.parentNode.replaceChild(
+ document.createTextNode(ieNewline), lineBreak);
+ }
+ }
+ }
+
+ doWork();
+ }
+
+ window['PR_normalizedHtml'] = normalizedHtml;
+ window['prettyPrintOne'] = prettyPrintOne;
+ window['prettyPrint'] = prettyPrint;
+ window['PR'] = {
+ 'combinePrefixPatterns': combinePrefixPatterns,
+ 'createSimpleLexer': createSimpleLexer,
+ 'registerLangHandler': registerLangHandler,
+ 'sourceDecorator': sourceDecorator,
+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+ 'PR_COMMENT': PR_COMMENT,
+ 'PR_DECLARATION': PR_DECLARATION,
+ 'PR_KEYWORD': PR_KEYWORD,
+ 'PR_LITERAL': PR_LITERAL,
+ 'PR_NOCODE': PR_NOCODE,
+ 'PR_PLAIN': PR_PLAIN,
+ 'PR_PUNCTUATION': PR_PUNCTUATION,
+ 'PR_SOURCE': PR_SOURCE,
+ 'PR_STRING': PR_STRING,
+ 'PR_TAG': PR_TAG,
+ 'PR_TYPE': PR_TYPE
+ };
+})();
+
+
+// ____________________________________________________________________________
+
+
+
+// Lua extension
+
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,' \n\r \xa0'],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,'\"\'']],[[PR.PR_COMMENT,/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR.PR_STRING,/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR.PR_KEYWORD,/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_]\w*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),['lua'])
+
+
+// Haskell extension
+
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\x0B\x0C\r ]+/,null,' \n \r '],[PR.PR_STRING,/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR.PR_STRING,/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,'\''],[PR.PR_LITERAL,/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,'0123456789']],[[PR.PR_COMMENT,/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],[PR.PR_KEYWORD,/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,null],[PR.PR_PLAIN,/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],[PR.PR_PUNCTUATION,/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),['hs'])
+
+
+// ML extension
+
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,' \n\r \xa0'],[PR.PR_COMMENT,/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,'#'],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,'\"\'']],[[PR.PR_COMMENT,/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],[PR.PR_KEYWORD,/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],[PR.PR_LITERAL,/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],[PR.PR_PUNCTUATION,/^[^\t\n\r \xA0\"\'\w]+/]]),['fs','ml'])
+
+
+// SQL extension
+
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,' \n\r \xa0'],[PR.PR_STRING,/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,'\"\'']],[[PR.PR_COMMENT,/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],[PR.PR_KEYWORD,/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_][\w-]*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),['sql'])
+
+
+// VB extension
+
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0\u2028\u2029]+/,null,' \n\r \xa0\u2028\u2029'],[PR.PR_STRING,/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'\"\u201c\u201d'],[PR.PR_COMMENT,/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,'\'\u2018\u2019']],[[PR.PR_KEYWORD,/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,null],[PR.PR_COMMENT,/^REM[^\r\n\u2028\u2029]*/i],[PR.PR_LITERAL,/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],[PR.PR_PLAIN,/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],[PR.PR_PUNCTUATION,/^(?:\[|\])/]]),['vb','vbs'])
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js
new file mode 100644
index 00000000000..a57e862535c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js
@@ -0,0 +1,152 @@
+var indexSectionsWithContent = {
+ "General": {
+ "Symbols": false,
+ "Numbers": true,
+ "A": true,
+ "B": false,
+ "C": true,
+ "D": false,
+ "E": false,
+ "F": true,
+ "G": true,
+ "H": false,
+ "I": false,
+ "J": false,
+ "K": false,
+ "L": true,
+ "M": true,
+ "N": false,
+ "O": false,
+ "P": false,
+ "Q": false,
+ "R": false,
+ "S": false,
+ "T": true,
+ "U": false,
+ "V": false,
+ "W": false,
+ "X": false,
+ "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": false,
+ "T": false,
+ "U": false,
+ "V": false,
+ "W": false,
+ "X": false,
+ "Y": false,
+ "Z": false
+ },
+ "Files": {
+ "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
+ },
+ "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
+ }
+ } \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html
new file mode 100644
index 00000000000..f0e774996b9
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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_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></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html
new file mode 100644
index 00000000000..6aa0f18cb10
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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_undbmp_perc><div class=IEntry><a href="../files/gd_bmp-c.html#gd_bmp.c" target=_parent class=ISymbol>gd_bmp.c</a></div></div><div class=SRResult id=SR_gd_undcrop_perc><div class=IEntry><a href="../files/gd_crop-c.html#gd_crop.c" target=_parent class=ISymbol>gd_crop.c</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_undfilter_perc><div class=IEntry><a href="../files/gd_filter-c.html#gd_filter.c" target=_parent class=ISymbol>gd_filter.c</a></div></div><div class=SRResult id=SR_gd_undgd_perc><div class=IEntry><a href="../files/gd_gd-c.html#gd_gd.c" target=_parent class=ISymbol>gd_gd.c</a></div></div><div class=SRResult id=SR_gd_undgd2_perc><div class=IEntry><a href="../files/gd_gd2-c.html#gd_gd2.c" target=_parent class=ISymbol>gd_gd2.c</a></div></div><div class=SRResult id=SR_gd_undgif_undin_perc><div class=IEntry><a href="../files/gd_gif_in-c.html#gd_gif_in.c" target=_parent class=ISymbol>gd_gif_in.c</a></div></div><div class=SRResult id=SR_gd_undgif_undout_perc><div class=IEntry><a href="../files/gd_gif_out-c.html#gd_gif_out.c" target=_parent class=ISymbol>gd_gif_out.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_undjpeg_perc><div class=IEntry><a href="../files/gd_jpeg-c.html#gd_jpeg.c" target=_parent class=ISymbol>gd_jpeg.c</a></div></div><div class=SRResult id=SR_gd_undpng_perc><div class=IEntry><a href="../files/gd_png-c.html#gd_png.c" target=_parent class=ISymbol>gd_png.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_undtga_perc><div class=IEntry><a href="../files/gd_tga-c.html#gd_tga.c" target=_parent class=ISymbol>gd_tga.c</a></div></div><div class=SRResult id=SR_gd_undtiff_perc><div class=IEntry><a href="../files/gd_tiff-c.html#gd_tiff.c" target=_parent class=ISymbol>gd_tiff.c</a></div></div><div class=SRResult id=SR_gd_undtopal_perc><div class=IEntry><a href="../files/gd_topal-c.html#gd_topal.c" target=_parent class=ISymbol>gd_topal.c</a></div></div><div class=SRResult id=SR_gd_undtransform_perc><div class=IEntry><a href="../files/gd_transform-c.html#gd_transform.c" target=_parent class=ISymbol>gd_transform.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_gd_undwbmp_perc><div class=IEntry><a href="../files/gd_wbmp-c.html#gd_wbmp.c" target=_parent class=ISymbol>gd_wbmp.c</a></div></div><div class=SRResult id=SR_gd_undwebp_perc><div class=IEntry><a href="../files/gd_webp-c.html#gd_webp.c" target=_parent class=ISymbol>gd_webp.c</a></div></div><div class=SRResult id=SR_gd_undxbm_perc><div class=IEntry><a href="../files/gd_xbm-c.html#gd_xbm.c" target=_parent class=ISymbol>gd_xbm.c</a></div></div><div class=SRResult id=SR_gdft_perc><div class=IEntry><a href="../files/gdft-c.html#gdft.c" target=_parent class=ISymbol>gdft.c</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></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html
new file mode 100644
index 00000000000..b6853e6e088
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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_gdImageWebpEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpEx" target=_parent class=ISymbol>gdImageWebpEx</a></div></div><div class=SRResult id=SR_gdImageWebpPtr><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtr" target=_parent class=ISymbol>gdImageWebpPtr</a></div></div><div class=SRResult id=SR_gdImageWebpPtrEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtrEx" target=_parent class=ISymbol>gdImageWebpPtrEx</a></div></div><div class=SRResult id=SR_gdImageXbmCtx><div class=IEntry><a href="../files/gd_xbm-c.html#gdImageXbmCtx" target=_parent class=ISymbol>gdImageXbmCtx</a></div></div><div class=SRResult id=SR_gdLayerMultiply><div class=IEntry><a href="../files/gd-c.html#gdLayerMultiply" target=_parent class=ISymbol>gdLayerMultiply</a></div></div><div class=SRResult id=SR_gdLayerOverlay><div class=IEntry><a href="../files/gd-c.html#gdLayerOverlay" target=_parent class=ISymbol>gdLayerOverlay</a></div></div><div class=SRResult id=SR_gdMajorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMajorVersion" target=_parent class=ISymbol>gdMajorVersion</a></div></div><div class=SRResult id=SR_gdMinorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMinorVersion" target=_parent class=ISymbol>gdMinorVersion</a></div></div><div class=SRResult id=SR_gdNewDynamicCtx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtx" target=_parent class=ISymbol>gdNewDynamicCtx</a></div></div><div class=SRResult id=SR_gdNewDynamicCtxEx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtxEx" target=_parent class=ISymbol>gdNewDynamicCtxEx</a></div></div><div class=SRResult id=SR_gdNewFileCtx><div class=IEntry><a href="../files/gd_io_file-c.html#gdNewFileCtx" target=_parent class=ISymbol>gdNewFileCtx</a></div></div><div class=SRResult id=SR_gdNewSSCtx><div class=IEntry><a href="../files/gd_io_ss-c.html#gdNewSSCtx" target=_parent class=ISymbol>gdNewSSCtx</a></div></div><div class=SRResult id=SR_gdReleaseVersion><div class=IEntry><a href="../files/gd_version-c.html#gdReleaseVersion" target=_parent class=ISymbol>gdReleaseVersion</a></div></div><div class=SRResult id=SR_gdSetErrorMethod><div class=IEntry><a href="../files/gd-c.html#gdSetErrorMethod" target=_parent class=ISymbol>gdSetErrorMethod</a></div></div><div class=SRResult id=SR_gdSupportsFileType><div class=IEntry><a href="../files/gd_filename-c.html#gdSupportsFileType" target=_parent class=ISymbol>gdSupportsFileType</a></div></div><div class=SRResult id=SR_gdTransformAffineBoundingBox><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineBoundingBox" target=_parent class=ISymbol>gdTransformAffineBoundingBox</a></div></div><div class=SRResult id=SR_gdTransformAffineCopy><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineCopy" target=_parent class=ISymbol>gdTransformAffineCopy</a></div></div><div class=SRResult id=SR_gdTransformAffineGetImage><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineGetImage" target=_parent class=ISymbol>gdTransformAffineGetImage</a></div></div><div class=SRResult id=SR_gdVersionString><div class=IEntry><a href="../files/gd_version-c.html#gdVersionString" target=_parent class=ISymbol>gdVersionString</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html
new file mode 100644
index 00000000000..5cceb6b380a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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/GeneralC.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html
new file mode 100644
index 00000000000..e4875baaed4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_Crop><div class=IEntry><a href="../files/gd-h.html#Crop" target=_parent class=ISymbol>Crop</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html
new file mode 100644
index 00000000000..c4a9e28a4be
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_Functions><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Functions')" class=ISymbol>Functions</a><div class=ISubIndex><a href="../files/gd-c.html#Functions" target=_parent class=IFile>gd.c</a><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_interpolation-c.html#Functions" target=_parent class=IFile>gd_interpolation.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/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></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html
new file mode 100644
index 00000000000..a33521a7895
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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_undbmp_perc><div class=IEntry><a href="../files/gd_bmp-c.html#gd_bmp.c" target=_parent class=ISymbol>gd_bmp.c</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_perc><div class=IEntry><a href="../files/gd_crop-c.html#gd_crop.c" target=_parent class=ISymbol>gd_crop.c</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_undfilter_perc><div class=IEntry><a href="../files/gd_filter-c.html#gd_filter.c" target=_parent class=ISymbol>gd_filter.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_undgd_perc><div class=IEntry><a href="../files/gd_gd-c.html#gd_gd.c" target=_parent class=ISymbol>gd_gd.c</a></div></div><div class=SRResult id=SR_gd_undgd2_perc><div class=IEntry><a href="../files/gd_gd2-c.html#gd_gd2.c" target=_parent class=ISymbol>gd_gd2.c</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_undgif_undin_perc><div class=IEntry><a href="../files/gd_gif_in-c.html#gd_gif_in.c" target=_parent class=ISymbol>gd_gif_in.c</a></div></div><div class=SRResult id=SR_gd_undgif_undout_perc><div class=IEntry><a href="../files/gd_gif_out-c.html#gd_gif_out.c" target=_parent class=ISymbol>gd_gif_out.c</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_undjpeg_perc><div class=IEntry><a href="../files/gd_jpeg-c.html#gd_jpeg.c" target=_parent class=ISymbol>gd_jpeg.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_undpng_perc><div class=IEntry><a href="../files/gd_png-c.html#gd_png.c" target=_parent class=ISymbol>gd_png.c</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_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_undtga_perc><div class=IEntry><a href="../files/gd_tga-c.html#gd_tga.c" target=_parent class=ISymbol>gd_tga.c</a></div></div><div class=SRResult id=SR_gd_undtiff_perc><div class=IEntry><a href="../files/gd_tiff-c.html#gd_tiff.c" target=_parent class=ISymbol>gd_tiff.c</a></div></div><div class=SRResult id=SR_gd_undtopal_perc><div class=IEntry><a href="../files/gd_topal-c.html#gd_topal.c" target=_parent class=ISymbol>gd_topal.c</a></div></div><div class=SRResult id=SR_gd_undtransform_perc><div class=IEntry><a href="../files/gd_transform-c.html#gd_transform.c" target=_parent class=ISymbol>gd_transform.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_undwbmp_perc><div class=IEntry><a href="../files/gd_wbmp-c.html#gd_wbmp.c" target=_parent class=ISymbol>gd_wbmp.c</a></div></div><div class=SRResult id=SR_gd_undwebp_perc><div class=IEntry><a href="../files/gd_webp-c.html#gd_webp.c" target=_parent class=ISymbol>gd_webp.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_gd_undxbm_perc><div class=IEntry><a href="../files/gd_xbm-c.html#gd_xbm.c" target=_parent class=ISymbol>gd_xbm.c</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_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_gdft_perc><div class=IEntry><a href="../files/gdft-c.html#gdft.c" target=_parent class=ISymbol>gdft.c</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_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_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_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_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_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_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_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_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_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_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><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/GeneralL.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html
new file mode 100644
index 00000000000..fb31b79d32d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_License><div class=IEntry><a href="../files/license-txt.html#License" target=_parent class=ISymbol>License</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html
new file mode 100644
index 00000000000..057e2bb660b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html
new file mode 100644
index 00000000000..0bb2ff07a01
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_3><div class=IEntry><a href="../files/preamble-txt.html#About_LibGD_2.2.3" target=_parent class=ISymbol>3</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/GeneralT.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html
new file mode 100644
index 00000000000..45b4bec096e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_Transform><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Transform')" class=ISymbol>Transform</a><div class=ISubIndex><a href="../files/gd-h.html#Transform" target=_parent class=IFile>gd.h</a><a href="../files/gd_interpolation-c.html#Transform" target=_parent class=IFile>gd_interpolation.c</a></div></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/NoResults.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html
new file mode 100644
index 00000000000..5ce7717677f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- http://www.naturaldocs.org -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=NoMatches>No Matches</div></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html> \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html
new file mode 100644
index 00000000000..7f794f89329
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!-- Generated by Natural Docs, version 1.51 -->
+<!-- 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_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_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/main.css b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css
new file mode 100644
index 00000000000..511703fc455
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css
@@ -0,0 +1,828 @@
+/*
+ IMPORTANT: If you're editing this file in the output directory of one of
+ your projects, your changes will be overwritten the next time you run
+ Natural Docs. Instead, copy this file to your project directory, make your
+ changes, and you can use it with -s. Even better would be to make a CSS
+ file in your project directory with only your changes, which you can then
+ use with -s [original style] [your changes].
+
+ On the other hand, if you're editing this file in the Natural Docs styles
+ directory, the changes will automatically be applied to all your projects
+ that use this style the next time Natural Docs is run on them.
+
+ This file is part of Natural Docs, which is Copyright © 2003-2010 Greg Valure.
+ Natural Docs is licensed under version 3 of the GNU Affero General Public
+ License (AGPL). Refer to License.txt for the complete details.
+
+ This file may be distributed with documentation files generated by Natural Docs.
+ Such documentation is not covered by Natural Docs' copyright and licensing,
+ and may have its own copyright and distribution terms as decided by its author.
+*/
+
+body {
+ font: 10pt Verdana, Arial, sans-serif;
+ color: #000000;
+ margin: 0; padding: 0;
+ }
+
+.ContentPage,
+.IndexPage,
+.FramedMenuPage {
+ background-color: #E8E8E8;
+ }
+.FramedContentPage,
+.FramedIndexPage,
+.FramedSearchResultsPage,
+.PopupSearchResultsPage {
+ background-color: #FFFFFF;
+ }
+
+
+a:link,
+a:visited { color: #900000; text-decoration: none }
+a:hover { color: #900000; text-decoration: underline }
+a:active { color: #FF0000; text-decoration: underline }
+
+td {
+ vertical-align: top }
+
+img { border: 0; }
+
+
+/*
+ Comment out this line to use web-style paragraphs (blank line between
+ paragraphs, no indent) instead of print-style paragraphs (no blank line,
+ indented.)
+*/
+p {
+ text-indent: 5ex; margin: 0 }
+
+
+/* Opera doesn't break with just wbr, but will if you add this. */
+.Opera wbr:after {
+ content: "\00200B";
+ }
+
+
+/* Blockquotes are used as containers for things that may need to scroll. */
+blockquote {
+ padding: 0;
+ margin: 0;
+ overflow: auto;
+ }
+
+
+.Firefox1 blockquote {
+ padding-bottom: .5em;
+ }
+
+/* Turn off scrolling when printing. */
+@media print {
+ blockquote {
+ overflow: visible;
+ }
+ .IE blockquote {
+ width: auto;
+ }
+ }
+
+
+
+#Menu {
+ font-size: 9pt;
+ padding: 10px 0 0 0;
+ }
+.ContentPage #Menu,
+.IndexPage #Menu {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 31ex;
+ overflow: hidden;
+ }
+.ContentPage .Firefox #Menu,
+.IndexPage .Firefox #Menu {
+ width: 27ex;
+ }
+
+
+ .MTitle {
+ font-size: 16pt; font-weight: bold; font-variant: small-caps;
+ text-align: center;
+ padding: 5px 10px 15px 10px;
+ border-bottom: 1px dotted #000000;
+ margin-bottom: 15px }
+
+ .MSubTitle {
+ font-size: 9pt; font-weight: normal; font-variant: normal;
+ margin-top: 1ex; margin-bottom: 5px }
+
+
+ .MEntry a:link,
+ .MEntry a:hover,
+ .MEntry a:visited { color: #606060; margin-right: 0 }
+ .MEntry a:active { color: #A00000; margin-right: 0 }
+
+
+ .MGroup {
+ font-variant: small-caps; font-weight: bold;
+ margin: 1em 0 1em 10px;
+ }
+
+ .MGroupContent {
+ font-variant: normal; font-weight: normal }
+
+ .MGroup a:link,
+ .MGroup a:hover,
+ .MGroup a:visited { color: #545454; margin-right: 10px }
+ .MGroup a:active { color: #A00000; margin-right: 10px }
+
+
+ .MFile,
+ .MText,
+ .MLink,
+ .MIndex {
+ padding: 1px 17px 2px 10px;
+ margin: .25em 0 .25em 0;
+ }
+
+ .MText {
+ font-size: 8pt; font-style: italic }
+
+ .MLink {
+ font-style: italic }
+
+ #MSelected {
+ color: #000000; background-color: #FFFFFF;
+ /* Replace padding with border. */
+ padding: 0 10px 0 10px;
+ border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000;
+ margin-right: 5px;
+ }
+
+ /* Close off the left side when its in a group. */
+ .MGroup #MSelected {
+ padding-left: 9px; border-left-width: 1px }
+
+ /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */
+ .Firefox #MSelected {
+ -moz-border-radius-topright: 10px;
+ -moz-border-radius-bottomright: 10px }
+ .Firefox .MGroup #MSelected {
+ -moz-border-radius-topleft: 10px;
+ -moz-border-radius-bottomleft: 10px }
+
+
+ #MSearchPanel {
+ padding: 0px 6px;
+ margin: .25em 0;
+ }
+
+
+ #MSearchField {
+ font: italic 9pt Verdana, sans-serif;
+ color: #606060;
+ background-color: #E8E8E8;
+ border: none;
+ padding: 2px 4px;
+ width: 100%;
+ }
+ /* Only Opera gets it right. */
+ .Firefox #MSearchField,
+ .IE #MSearchField,
+ .Safari #MSearchField {
+ width: 94%;
+ }
+ .Opera9 #MSearchField,
+ .Konqueror #MSearchField {
+ width: 97%;
+ }
+ .FramedMenuPage .Firefox #MSearchField,
+ .FramedMenuPage .Safari #MSearchField,
+ .FramedMenuPage .Konqueror #MSearchField {
+ width: 98%;
+ }
+
+ /* Firefox doesn't do this right in frames without #MSearchPanel added on.
+ It's presence doesn't hurt anything other browsers. */
+ #MSearchPanel.MSearchPanelInactive:hover #MSearchField {
+ background-color: #FFFFFF;
+ border: 1px solid #C0C0C0;
+ padding: 1px 3px;
+ }
+ .MSearchPanelActive #MSearchField {
+ background-color: #FFFFFF;
+ border: 1px solid #C0C0C0;
+ font-style: normal;
+ padding: 1px 3px;
+ }
+
+ #MSearchType {
+ visibility: hidden;
+ font: 8pt Verdana, sans-serif;
+ width: 98%;
+ padding: 0;
+ border: 1px solid #C0C0C0;
+ }
+ .MSearchPanelActive #MSearchType,
+ /* As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */
+ #MSearchPanel.MSearchPanelInactive:hover #MSearchType,
+ #MSearchType:focus {
+ visibility: visible;
+ color: #606060;
+ }
+ #MSearchType option#MSearchEverything {
+ font-weight: bold;
+ }
+
+ .Opera8 .MSearchPanelInactive:hover,
+ .Opera8 .MSearchPanelActive {
+ margin-left: -1px;
+ }
+
+
+ iframe#MSearchResults {
+ width: 60ex;
+ height: 15em;
+ }
+ #MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000000;
+ background-color: #E8E8E8;
+ }
+ #MSearchResultsWindowClose {
+ font-weight: bold;
+ font-size: 8pt;
+ display: block;
+ padding: 2px 5px;
+ }
+ #MSearchResultsWindowClose:link,
+ #MSearchResultsWindowClose:visited {
+ color: #000000;
+ text-decoration: none;
+ }
+ #MSearchResultsWindowClose:active,
+ #MSearchResultsWindowClose:hover {
+ color: #800000;
+ text-decoration: none;
+ background-color: #F4F4F4;
+ }
+
+
+
+
+#Content {
+ padding-bottom: 15px;
+ }
+
+.ContentPage #Content {
+ border-width: 0 0 1px 1px;
+ border-style: solid;
+ border-color: #000000;
+ background-color: #FFFFFF;
+ font-size: 9pt; /* To make 31ex match the menu's 31ex. */
+ margin-left: 31ex;
+ }
+.ContentPage .Firefox #Content {
+ margin-left: 27ex;
+ }
+
+
+
+ .CTopic {
+ font-size: 10pt;
+ margin-bottom: 3em;
+ }
+
+
+ .CTitle {
+ font-size: 12pt; font-weight: bold;
+ border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0;
+ margin: 0 15px .5em 15px }
+
+ .CGroup .CTitle {
+ font-size: 16pt; font-variant: small-caps;
+ padding-left: 15px; padding-right: 15px;
+ border-width: 0 0 2px 0; border-color: #000000;
+ margin-left: 0; margin-right: 0 }
+
+ .CClass .CTitle,
+ .CInterface .CTitle,
+ .CDatabase .CTitle,
+ .CDatabaseTable .CTitle,
+ .CSection .CTitle {
+ font-size: 18pt;
+ color: #FFFFFF; background-color: #A0A0A0;
+ padding: 10px 15px 10px 15px;
+ border-width: 2px 0; border-color: #000000;
+ margin-left: 0; margin-right: 0 }
+
+ #MainTopic .CTitle {
+ font-size: 20pt;
+ color: #FFFFFF; background-color: #7070C0;
+ padding: 10px 15px 10px 15px;
+ border-width: 0 0 3px 0; border-color: #000000;
+ margin-left: 0; margin-right: 0 }
+
+ .CBody {
+ margin-left: 15px; margin-right: 15px }
+
+
+ .CToolTip {
+ position: absolute; visibility: hidden;
+ left: 0; top: 0;
+ background-color: #FFFFE0;
+ padding: 5px;
+ border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000;
+ font-size: 8pt;
+ }
+
+ .Opera .CToolTip {
+ max-width: 98%;
+ }
+
+ /* Scrollbars would be useless. */
+ .CToolTip blockquote {
+ overflow: hidden;
+ }
+ .IE6 .CToolTip blockquote {
+ overflow: visible;
+ }
+
+ .CHeading {
+ font-weight: bold; font-size: 10pt;
+ margin: 1.5em 0 .5em 0;
+ }
+
+ .CBody pre {
+ font: 10pt "Courier New", Courier, monospace;
+ background-color: #FCFCFC;
+ margin: 1em 35px;
+ padding: 10px 15px 10px 10px;
+ border-color: #E0E0E0 #E0E0E0 #E0E0E0 #E4E4E4;
+ border-width: 1px 1px 1px 6px;
+ border-style: dashed dashed dashed solid;
+ }
+
+ .CBody ul {
+ /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever.
+ Reapply it here as padding. */
+ padding-left: 15px; padding-right: 15px;
+ margin: .5em 5ex .5em 5ex;
+ }
+
+ .CDescriptionList {
+ margin: .5em 5ex 0 5ex }
+
+ .CDLEntry {
+ font: 10pt "Courier New", Courier, monospace; color: #808080;
+ padding-bottom: .25em;
+ white-space: nowrap }
+
+ .CDLDescription {
+ font-size: 10pt; /* For browsers that don't inherit correctly, like Opera 5. */
+ padding-bottom: .5em; padding-left: 5ex }
+
+
+ .CTopic img {
+ text-align: center;
+ display: block;
+ margin: 1em auto;
+ }
+ .CImageCaption {
+ font-variant: small-caps;
+ font-size: 8pt;
+ color: #808080;
+ text-align: center;
+ position: relative;
+ top: 1em;
+ }
+
+ .CImageLink {
+ color: #808080;
+ font-style: italic;
+ }
+ a.CImageLink:link,
+ a.CImageLink:visited,
+ a.CImageLink:hover { color: #808080 }
+
+
+
+
+
+.Prototype {
+ font: 10pt "Courier New", Courier, monospace;
+ padding: 5px 3ex;
+ border-width: 1px; border-style: solid;
+ margin: 0 5ex 1.5em 5ex;
+ }
+
+ .Prototype td {
+ font-size: 10pt;
+ }
+
+ .PDefaultValue,
+ .PDefaultValuePrefix,
+ .PTypePrefix {
+ color: #8F8F8F;
+ }
+ .PTypePrefix {
+ text-align: right;
+ }
+ .PAfterParameters {
+ vertical-align: bottom;
+ }
+
+ .IE .Prototype table {
+ padding: 0;
+ }
+
+ .CFunction .Prototype {
+ background-color: #F4F4F4; border-color: #D0D0D0 }
+ .CProperty .Prototype {
+ background-color: #F4F4FF; border-color: #C0C0E8 }
+ .CVariable .Prototype {
+ background-color: #FFFFF0; border-color: #E0E0A0 }
+
+ .CClass .Prototype {
+ border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
+ background-color: #F4F4F4;
+ }
+ .CInterface .Prototype {
+ border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0;
+ background-color: #F4F4FF;
+ }
+
+ .CDatabaseIndex .Prototype,
+ .CConstant .Prototype {
+ background-color: #D0D0D0; border-color: #000000 }
+ .CType .Prototype,
+ .CEnumeration .Prototype {
+ background-color: #FAF0F0; border-color: #E0B0B0;
+ }
+ .CDatabaseTrigger .Prototype,
+ .CEvent .Prototype,
+ .CDelegate .Prototype {
+ background-color: #F0FCF0; border-color: #B8E4B8 }
+
+ .CToolTip .Prototype {
+ margin: 0 0 .5em 0;
+ white-space: nowrap;
+ }
+
+
+
+
+
+.Summary {
+ margin: 1.5em 5ex 0 5ex }
+
+ .STitle {
+ font-size: 12pt; font-weight: bold;
+ margin-bottom: .5em }
+
+
+ .SBorder {
+ background-color: #FFFFF0;
+ padding: 15px;
+ border: 1px solid #C0C060 }
+
+ /* In a frame IE 6 will make them too long unless you set the width to 100%. Without frames it will be correct without a width
+ or slightly too long (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. IE 7 has the same
+ problem with frames, haven't tested it without. */
+ .FramedContentPage .IE .SBorder {
+ width: 100% }
+
+ /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */
+ .Firefox .SBorder {
+ -moz-border-radius: 20px }
+
+
+ .STable {
+ font-size: 9pt; width: 100% }
+
+ .SEntry {
+ width: 30% }
+ .SDescription {
+ width: 70% }
+
+
+ .SMarked {
+ background-color: #F8F8D8 }
+
+ .SDescription { padding-left: 2ex }
+ .SIndent1 .SEntry { padding-left: 1.5ex } .SIndent1 .SDescription { padding-left: 3.5ex }
+ .SIndent2 .SEntry { padding-left: 3.0ex } .SIndent2 .SDescription { padding-left: 5.0ex }
+ .SIndent3 .SEntry { padding-left: 4.5ex } .SIndent3 .SDescription { padding-left: 6.5ex }
+ .SIndent4 .SEntry { padding-left: 6.0ex } .SIndent4 .SDescription { padding-left: 8.0ex }
+ .SIndent5 .SEntry { padding-left: 7.5ex } .SIndent5 .SDescription { padding-left: 9.5ex }
+
+ .SDescription a { color: #800000}
+ .SDescription a:active { color: #A00000 }
+
+ .SGroup td {
+ padding-top: .5em; padding-bottom: .25em }
+
+ .SGroup .SEntry {
+ font-weight: bold; font-variant: small-caps }
+
+ .SGroup .SEntry a { color: #800000 }
+ .SGroup .SEntry a:active { color: #F00000 }
+
+
+ .SMain td,
+ .SClass td,
+ .SDatabase td,
+ .SDatabaseTable td,
+ .SSection td {
+ font-size: 10pt;
+ padding-bottom: .25em }
+
+ .SClass td,
+ .SDatabase td,
+ .SDatabaseTable td,
+ .SSection td {
+ padding-top: 1em }
+
+ .SMain .SEntry,
+ .SClass .SEntry,
+ .SDatabase .SEntry,
+ .SDatabaseTable .SEntry,
+ .SSection .SEntry {
+ font-weight: bold;
+ }
+
+ .SMain .SEntry a,
+ .SClass .SEntry a,
+ .SDatabase .SEntry a,
+ .SDatabaseTable .SEntry a,
+ .SSection .SEntry a { color: #000000 }
+
+ .SMain .SEntry a:active,
+ .SClass .SEntry a:active,
+ .SDatabase .SEntry a:active,
+ .SDatabaseTable .SEntry a:active,
+ .SSection .SEntry a:active { color: #A00000 }
+
+
+
+
+
+.ClassHierarchy {
+ margin: 0 15px 1em 15px }
+
+ .CHEntry {
+ border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
+ margin-bottom: 3px;
+ padding: 2px 2ex;
+ font-size: 10pt;
+ background-color: #F4F4F4; color: #606060;
+ }
+
+ .Firefox .CHEntry {
+ -moz-border-radius: 4px;
+ }
+
+ .CHCurrent .CHEntry {
+ font-weight: bold;
+ border-color: #000000;
+ color: #000000;
+ }
+
+ .CHChildNote .CHEntry {
+ font-style: italic;
+ font-size: 8pt;
+ }
+
+ .CHIndent {
+ margin-left: 3ex;
+ }
+
+ .CHEntry a:link,
+ .CHEntry a:visited,
+ .CHEntry a:hover {
+ color: #606060;
+ }
+ .CHEntry a:active {
+ color: #800000;
+ }
+
+
+
+
+
+#Index {
+ background-color: #FFFFFF;
+ }
+
+/* As opposed to .PopupSearchResultsPage #Index */
+.IndexPage #Index,
+.FramedIndexPage #Index,
+.FramedSearchResultsPage #Index {
+ padding: 15px;
+ }
+
+.IndexPage #Index {
+ border-width: 0 0 1px 1px;
+ border-style: solid;
+ border-color: #000000;
+ font-size: 9pt; /* To make 27ex match the menu's 27ex. */
+ margin-left: 27ex;
+ }
+
+
+ .IPageTitle {
+ font-size: 20pt; font-weight: bold;
+ color: #FFFFFF; background-color: #7070C0;
+ padding: 10px 15px 10px 15px;
+ border-width: 0 0 3px 0; border-color: #000000; border-style: solid;
+ margin: -15px -15px 0 -15px }
+
+ .FramedSearchResultsPage .IPageTitle {
+ margin-bottom: 15px;
+ }
+
+ .INavigationBar {
+ font-size: 10pt;
+ text-align: center;
+ background-color: #FFFFF0;
+ padding: 5px;
+ border-bottom: solid 1px black;
+ margin: 0 -15px 15px -15px;
+ }
+
+ .INavigationBar a {
+ font-weight: bold }
+
+ .IHeading {
+ font-size: 16pt; font-weight: bold;
+ padding: 2.5em 0 .5em 0;
+ text-align: center;
+ width: 3.5ex;
+ }
+ #IFirstHeading {
+ padding-top: 0;
+ }
+
+ .IEntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+ }
+ .PopupSearchResultsPage .IEntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+ }
+ .PopupSearchResultsPage .Opera9 .IEntry,
+ .FramedSearchResultsPage .Opera9 .IEntry {
+ text-align: left;
+ }
+ .FramedSearchResultsPage .IEntry {
+ padding: 0;
+ }
+
+ .ISubIndex {
+ padding-left: 3ex; padding-bottom: .5em }
+ .PopupSearchResultsPage .ISubIndex {
+ display: none;
+ }
+
+ /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the
+ index if everything's the same color. */
+ .ISymbol {
+ font-weight: bold; color: #900000 }
+
+ .IndexPage .ISymbolPrefix,
+ .FramedIndexPage .ISymbolPrefix {
+ font-size: 10pt;
+ text-align: right;
+ color: #C47C7C;
+ background-color: #F8F8F8;
+ border-right: 3px solid #E0E0E0;
+ border-left: 1px solid #E0E0E0;
+ padding: 0 1px 0 2px;
+ }
+ .PopupSearchResultsPage .ISymbolPrefix,
+ .FramedSearchResultsPage .ISymbolPrefix {
+ color: #900000;
+ }
+ .PopupSearchResultsPage .ISymbolPrefix {
+ font-size: 8pt;
+ }
+
+ .IndexPage #IFirstSymbolPrefix,
+ .FramedIndexPage #IFirstSymbolPrefix {
+ border-top: 1px solid #E0E0E0;
+ }
+ .IndexPage #ILastSymbolPrefix,
+ .FramedIndexPage #ILastSymbolPrefix {
+ border-bottom: 1px solid #E0E0E0;
+ }
+ .IndexPage #IOnlySymbolPrefix,
+ .FramedIndexPage #IOnlySymbolPrefix {
+ border-top: 1px solid #E0E0E0;
+ border-bottom: 1px solid #E0E0E0;
+ }
+
+ a.IParent,
+ a.IFile {
+ display: block;
+ }
+
+ .PopupSearchResultsPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+ }
+ .FramedSearchResultsPage .SRStatus {
+ font-size: 10pt;
+ font-style: italic;
+ }
+
+ .SRResult {
+ display: none;
+ }
+
+
+
+#Footer {
+ font-size: 8pt;
+ color: #989898;
+ text-align: right;
+ }
+
+#Footer p {
+ text-indent: 0;
+ margin-bottom: .5em;
+ }
+
+.ContentPage #Footer,
+.IndexPage #Footer {
+ text-align: right;
+ margin: 2px;
+ }
+
+.FramedMenuPage #Footer {
+ text-align: center;
+ margin: 5em 10px 10px 10px;
+ padding-top: 1em;
+ border-top: 1px solid #C8C8C8;
+ }
+
+ #Footer a:link,
+ #Footer a:hover,
+ #Footer a:visited { color: #989898 }
+ #Footer a:active { color: #A00000 }
+
+
+
+.prettyprint .kwd { color: #800000; } /* keywords */
+
+ .prettyprint.PDefaultValue .kwd,
+ .prettyprint.PDefaultValuePrefix .kwd,
+ .prettyprint.PTypePrefix .kwd {
+ color: #C88F8F;
+ }
+
+.prettyprint .com { color: #008000; } /* comments */
+
+ .prettyprint.PDefaultValue .com,
+ .prettyprint.PDefaultValuePrefix .com,
+ .prettyprint.PTypePrefix .com {
+ color: #8FC88F;
+ }
+
+.prettyprint .str { color: #0000B0; } /* strings */
+.prettyprint .lit { color: #0000B0; } /* literals */
+
+ .prettyprint.PDefaultValue .str,
+ .prettyprint.PDefaultValuePrefix .str,
+ .prettyprint.PTypePrefix .str,
+ .prettyprint.PDefaultValue .lit,
+ .prettyprint.PDefaultValuePrefix .lit,
+ .prettyprint.PTypePrefix .lit {
+ color: #8F8FC0;
+ }
+
+.prettyprint .typ { color: #000000; } /* types */
+.prettyprint .pun { color: #000000; } /* punctuation */
+.prettyprint .pln { color: #000000; } /* punctuation */
+
+ .prettyprint.PDefaultValue .typ,
+ .prettyprint.PDefaultValuePrefix .typ,
+ .prettyprint.PTypePrefix .typ,
+ .prettyprint.PDefaultValue .pun,
+ .prettyprint.PDefaultValuePrefix .pun,
+ .prettyprint.PTypePrefix .pun,
+ .prettyprint.PDefaultValue .pln,
+ .prettyprint.PDefaultValuePrefix .pln,
+ .prettyprint.PTypePrefix .pln {
+ color: #8F8F8F;
+ }
+
+.prettyprint .tag { color: #008; }
+.prettyprint .atn { color: #606; }
+.prettyprint .atv { color: #080; }
+.prettyprint .dec { color: #606; }
+
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl b/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
index bcccabe8929..e1c34624a81 100644
--- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
@@ -1,58 +1,58 @@
-#!/usr/bin/env perl
-
-# Copy C source files (i.e. *.[ch]) from $src to $dest, first
-# stripping out uses of the macro BGD_DECLARE(<type>). A line must
-# begin with 'BGD_DECLARE' for it to be considered a use.
-
-use strict;
-use warnings;
-
-use File::Basename;
-
-my ($src, $dest) = @ARGV;
-
-die "Invalid arguments: nobgd.pl <src-dir> <dest-dir>\n"
- unless ($src && $dest && -d $src && -d $dest);
-
-for my $file (glob("$src/*.c"), glob("$src/*.h")) {
- do {local $| = 1; print "."};
- fixup($file, $dest);
-}
-print "\n";
-
-sub fixup {
- my ($src, $destDir) = @_;
- my $dest = $destDir . "/" . basename($src);
-
- my $content = slurp($src);
- $content =~ s{^ BGD_DECLARE \( ([^)]+) \)}{$1}gmx;
- unslurp($dest, $content);
-}
-
-
-sub slurp {
- my ($filename) = @_;
- local $/; # no file separator
- my $data;
-
- open my $fh, "<", $filename
- or die "Unable to read file '$filename'.\n";
- $data = <$fh>;
- close($fh);
-
- return $data;
-}
-
-
-sub unslurp {
- my ($filename, $data) = @_;
-
- die "Refusing to overwrite file '$filename'\n" if -f $filename;
-
- open my $fh, ">", $filename
- or die "Unable to open '$filename' for writing.\n";
- print {$fh} $data
- or die "Error writing file '$filename'\n";
- close ($fh);
-}
-
+#!/usr/bin/env perl
+
+# Copy C source files (i.e. *.[ch]) from $src to $dest, first
+# stripping out uses of the macro BGD_DECLARE(<type>). A line must
+# begin with 'BGD_DECLARE' for it to be considered a use.
+
+use strict;
+use warnings;
+
+use File::Basename;
+
+my ($src, $dest) = @ARGV;
+
+die "Invalid arguments: nobgd.pl <src-dir> <dest-dir>\n"
+ unless ($src && $dest && -d $src && -d $dest);
+
+for my $file (glob("$src/*.c"), glob("$src/*.h")) {
+ do {local $| = 1; print "."};
+ fixup($file, $dest);
+}
+print "\n";
+
+sub fixup {
+ my ($src, $destDir) = @_;
+ my $dest = $destDir . "/" . basename($src);
+
+ my $content = slurp($src);
+ $content =~ s{^ BGD_DECLARE \( ([^)]+) \)}{$1}gmx;
+ unslurp($dest, $content);
+}
+
+
+sub slurp {
+ my ($filename) = @_;
+ local $/; # no file separator
+ my $data;
+
+ open my $fh, "<", $filename
+ or die "Unable to read file '$filename'.\n";
+ $data = <$fh>;
+ close($fh);
+
+ return $data;
+}
+
+
+sub unslurp {
+ my ($filename, $data) = @_;
+
+ die "Refusing to overwrite file '$filename'\n" if -f $filename;
+
+ open my $fh, ">", $filename
+ or die "Unable to open '$filename' for writing.\n";
+ print {$fh} $data
+ or die "Error writing file '$filename'\n";
+ close ($fh);
+}
+
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd
new file mode 100644
index 00000000000..9bf4c341903
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd
new file mode 100644
index 00000000000..d0e533439f6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd
new file mode 100644
index 00000000000..fbd8f6f918c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd
@@ -0,0 +1,96 @@
+1.51
+C/C++
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_rotate.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_rotate.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/wbmp.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/wbmp.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_stream.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_stream.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_map_test.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_map_test.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd2time.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd2time.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/entities.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/entities.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_ss.c 1469089233 1 gdNewSSCtx
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontl.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontl.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/config.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/config.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdft.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdft.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontg.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontg.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_errors.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_errors.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdxpm.c 1469089233 1 gdImageCreateFromXpm
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfonts.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfonts.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_transform.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_transform.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_dp.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_dp.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd2togif.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd2togif.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontl.c 1469089233 1 gdFontGetLarge
+/home/pierre/project/libgd/docs/naturaldocs/tmp/testac.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/testac.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd2.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd2.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd2topng.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd2topng.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_version.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_version.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/license.txt 1469089233 1 License
+/home/pierre/project/libgd/docs/naturaldocs/tmp/fontsizetest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/fontsizetest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/bmp.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/bmp.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_nnquant.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_nnquant.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontt.c 1469089233 1 gdFontGetTiny
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfonts.c 1469089233 1 gdFontGetSmall
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdtopng.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdtopng.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_jpeg.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_jpeg.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_intern.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_intern.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/snprintf.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/snprintf.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd.h 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/pngtogd.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/pngtogd.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_matrix.c 1469089233 1 Matrix
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_webp.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_webp.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdparttopng.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdparttopng.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/preamble.txt 1469089233 1 About LibGD 2.2.3
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdhelpers.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdhelpers.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontt.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontt.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdhelpers.c 1469089233 1 gdFree
+/home/pierre/project/libgd/docs/naturaldocs/tmp/testtr.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/testtr.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/fontconfigtest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/fontconfigtest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdkanji.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdkanji.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_map.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_map.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/pngtogd2.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/pngtogd2.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_nnquant.c 1469089233 1 gdImageNeuQuant
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_interpolation.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_interpolation.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/fontwheeltest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/fontwheeltest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdpp.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdpp.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io_file.c 1469089233 1 gdNewFileCtx
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfx.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfx.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_wbmp.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_wbmp.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_out.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_out.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_match.c 1469089233 1 gdImageColorMatch
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdcache.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdcache.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_in.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gif_in.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filter.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filter.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/annotate.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/annotate.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdtables.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdtables.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontg.c 1469089233 1 gdFontGetGiant
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gddemo.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gddemo.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdcache.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdcache.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_ss.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_ss.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tga.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tga.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd2copypal.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd2copypal.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_topal.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_topal.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io.h 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/jisx0208.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/jisx0208.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdcmpgif.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdcmpgif.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_crop.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_crop.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_gd.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/wbmp.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/wbmp.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filename.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_filename.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tiff.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tiff.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/giftogd2.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/giftogd2.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontmb.c 1469089233 1 gdFontGetMediumBold
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_bmp.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_bmp.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontmb.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfontmb.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdtest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdtest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_png.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_png.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/circletexttest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/circletexttest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdfx.h 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdfx.h
+/home/pierre/project/libgd/docs/naturaldocs/tmp/webpng.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/webpng.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gifanimtest.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gifanimtest.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_io.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_color_map.c 1469089233 1 gdColorMapLookup
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gdtestft.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gdtestft.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tga.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_tga.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_xbm.c 1469089233 1 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_xbm.c
+/home/pierre/project/libgd/docs/naturaldocs/tmp/gd_security.c 1469089233 0 /home/pierre/project/libgd/docs/naturaldocs/tmp/gd_security.c
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd
new file mode 100644
index 00000000000..b6cb43bc50d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd
new file mode 100644
index 00000000000..b6cb43bc50d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd
new file mode 100644
index 00000000000..e6a97241975
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd
new file mode 100644
index 00000000000..0330e17a382
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd
new file mode 100644
index 00000000000..0a6ffce7bf5
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd
new file mode 100644
index 00000000000..20a121e502c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd
Binary files differ
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
new file mode 100644
index 00000000000..8837a961a73
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
@@ -0,0 +1,99 @@
+Format: 1.51
+
+
+# You can add a title and sub-title to your menu like this:
+# Title: [project name]
+# SubTitle: [subtitle]
+
+# You can add a footer to your documentation like this:
+# Footer: [text]
+# If you want to add a copyright notice, this would be the place to do it.
+
+# You can add a timestamp to your documentation like one of these:
+# Timestamp: Generated on month day, year
+# Timestamp: Updated mm/dd/yyyy
+# Timestamp: Last updated mon day
+#
+# m - One or two digit month. January is "1"
+# mm - Always two digit month. January is "01"
+# mon - Short month word. January is "Jan"
+# month - Long month word. January is "January"
+# d - One or two digit day. 1 is "1"
+# dd - Always two digit day. 1 is "01"
+# day - Day with letter extension. 1 is "1st"
+# yy - Two digit year. 2006 is "06"
+# yyyy - Four digit year. 2006 is "2006"
+# year - Four digit year. 2006 is "2006"
+
+
+# --------------------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------------------
+
+
+File: About LibGD 2.2.3 (preamble.txt)
+File: gd.c (gd.c)
+File: gd.h (gd.h)
+File: gd_bmp.c (gd_bmp.c)
+File: gd_crop.c (gd_crop.c)
+File: gd_filename.c (gd_filename.c)
+File: gd_filter.c (gd_filter.c)
+File: gd_gd.c (gd_gd.c)
+File: gd_gd2.c (gd_gd2.c)
+File: gd_gif_in.c (gd_gif_in.c)
+File: gd_gif_out.c (gd_gif_out.c)
+File: gd_interpolation.c (gd_interpolation.c)
+File: gd_io.h (gd_io.h)
+File: gd_io_dp.c (gd_io_dp.c)
+File: gd_jpeg.c (gd_jpeg.c)
+File: gd_png.c (gd_png.c)
+File: gd_ss.c (gd_ss.c)
+File: gd_tga.c (gd_tga.c)
+File: gd_tiff.c (gd_tiff.c)
+File: gd_topal.c (gd_topal.c)
+File: gd_transform.c (gd_transform.c)
+File: gd_version.c (gd_version.c)
+File: gd_wbmp.c (gd_wbmp.c)
+File: gd_webp.c (gd_webp.c)
+File: gd_xbm.c (gd_xbm.c)
+File: gdColorMapLookup (gd_color_map.c)
+File: gdFontGetGiant (gdfontg.c)
+File: gdFontGetLarge (gdfontl.c)
+File: gdFontGetMediumBold (gdfontmb.c)
+File: gdFontGetSmall (gdfonts.c)
+File: gdFontGetTiny (gdfontt.c)
+File: gdFree (gdhelpers.c)
+File: gdft.c (gdft.c)
+File: gdfx.c (gdfx.c)
+File: gdImageColorMatch (gd_color_match.c)
+File: gdImageCreateFromXpm (gdxpm.c)
+File: gdImageNeuQuant (gd_nnquant.c)
+File: gdNewFileCtx (gd_io_file.c)
+File: gdNewSSCtx (gd_io_ss.c)
+File: License (license.txt)
+File: Matrix (gd_matrix.c)
+
+Group: Index {
+
+ Constant Index: Constants
+ Index: Everything
+ File Index: Files
+ Function Index: Functions
+ Type Index: Types
+ } # Group: Index
+
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 dfe1e62ebf8..40fec7762a6 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
@@ -1,18 +1,61 @@
-#!/bin/bash
+#!/bin/sh
set -e
+usage() {
+ echo "Usage: run_docs.sh [--nonfatal]"
+ echo "Generate the manual for gd!"
+ if [ $# -ne 0 ] ; then
+ printf 'ERROR: %b\n' "$*"
+ exit 1
+ else
+ exit 0
+ fi
+}
+
+nd() {
+ # Figure out the name of this tool.
+ if which naturaldocs 2>/dev/null ; then
+ return
+ elif which NaturalDocs 2>/dev/null ; then
+ return
+ else
+ return 1
+ fi
+}
+
+cd "$(dirname "$0")"
+
+if [ $# -eq 1 ] ; then
+ case $1 in
+ --nonfatal)
+ if ! nd >/dev/null ; then
+ echo "skipping doc generation -- please install naturaldoc!"
+ exit 0
+ fi
+ ;;
+ -h|--help)
+ usage
+ ;;
+ *)
+ usage "unknown option: $1"
+ ;;
+ esac
+elif [ $# -ne 0 ] ; then
+ usage "unknown options: $*"
+fi
+
# Version number
VERSION=`(cd ../../; perl config/getver.pl)`
# Clear away old docs and ensure the doc dir. is present.
-[ -d html ] && rm -rf html
+rm -rf html
mkdir html
# Create a lightly-processed copy of the source to use as input. This
# file skips all non-C code in src/ and removes the BGD_DECLARE()
# macro from definitions so they don't show up in the docs.
-[ -d tmp ] && rm -rf tmp
+rm -rf tmp
mkdir tmp
perl nobgd.pl ../../src/ tmp/
@@ -22,7 +65,7 @@ sed -e "s/@VERSION@/$VERSION/g" preamble.txt > tmp/preamble.txt
# ^^^ hack to get the version number in the docs.
# Run naturaldocs to create the manual.
-naturaldocs --rebuild --rebuild-output --documented-only \
+$(nd) --rebuild --rebuild-output --documented-only \
-i tmp/ \
-o html html \
--project project/
diff --git a/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt b/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
index e31e67d408a..869880fa958 100644
--- a/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
@@ -16,9 +16,15 @@ if (TIFF_FOUND)
LIST(APPEND TESTS_FILES tiffread)
endif (TIFF_FOUND)
+if (BUILD_SHARED_LIBS)
+ set(GD_LINK_LIB ${GD_LIB})
+else()
+ set(GD_LINK_LIB ${GD_LIB_STATIC})
+endif()
+
FOREACH(test_name ${TESTS_FILES})
add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} ${GD_LIB})
+ target_link_libraries (${test_name} ${GD_LINK_LIB})
ENDFOREACH(test_name)
if(JPEG_FOUND)
@@ -29,11 +35,11 @@ endif(JPEG_FOUND)
if (WIN32 AND NOT MINGW AND NOT MSYS)
add_executable(windows WIN32 "windows.c")
- target_link_libraries (windows ${GD_LIB})
+ target_link_libraries (windows ${GD_LINK_LIB})
else (WIN32 AND NOT MINGW AND NOT MSYS)
if (MINGW OR MSYS)
add_executable(windows "windows.c")
add_definitions("-mwindows")
- target_link_libraries(windows ${GD_LIB} stdc++ gdi32)
+ target_link_libraries(windows ${GD_LINK_LIB} stdc++ gdi32)
endif (MINGW OR MSYS)
endif (WIN32 AND NOT MINGW AND NOT MSYS)
diff --git a/Build/source/libs/gd/libgd-src/examples/Makefile b/Build/source/libs/gd/libgd-src/examples/Makefile
new file mode 100644
index 00000000000..a21960ebd79
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/examples/Makefile
@@ -0,0 +1,498 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.0
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+.PHONY : .NOTPARALLEL
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/pierre/project/libgd
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/pierre/project/libgd
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target install
+install: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target install/local
+install/local: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: install/local
+.PHONY : install/local/fast
+
+# Special rule for the target install/strip
+install/strip: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip
+
+# Special rule for the target install/strip
+install/strip/fast: install/strip
+.PHONY : install/strip/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+.PHONY : list_install_components/fast
+
+# Special rule for the target package
+package: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
+ cd /home/pierre/project/libgd && /usr/bin/cpack --config ./CPackConfig.cmake
+.PHONY : package
+
+# Special rule for the target package
+package/fast: package
+.PHONY : package/fast
+
+# Special rule for the target package_source
+package_source:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
+ cd /home/pierre/project/libgd && /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/pierre/project/libgd/CPackSourceConfig.cmake
+.PHONY : package_source
+
+# Special rule for the target package_source
+package_source/fast: package_source
+.PHONY : package_source/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target test
+test:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
+ /usr/bin/ctest --force-new-ctest-process $(ARGS)
+.PHONY : test
+
+# Special rule for the target test
+test/fast: test
+.PHONY : test/fast
+
+# The main all target
+all: cmake_check_build_system
+ cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -E cmake_progress_start /home/pierre/project/libgd/CMakeFiles /home/pierre/project/libgd/examples/CMakeFiles/progress.marks
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/pierre/project/libgd/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Convenience name for target.
+examples/CMakeFiles/arc.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/arc.dir/rule
+.PHONY : examples/CMakeFiles/arc.dir/rule
+
+# Convenience name for target.
+arc: examples/CMakeFiles/arc.dir/rule
+.PHONY : arc
+
+# fast build rule for target.
+arc/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/build
+.PHONY : arc/fast
+
+# Convenience name for target.
+examples/CMakeFiles/copyrotated.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/copyrotated.dir/rule
+.PHONY : examples/CMakeFiles/copyrotated.dir/rule
+
+# Convenience name for target.
+copyrotated: examples/CMakeFiles/copyrotated.dir/rule
+.PHONY : copyrotated
+
+# fast build rule for target.
+copyrotated/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/build
+.PHONY : copyrotated/fast
+
+# Convenience name for target.
+examples/CMakeFiles/crop.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/crop.dir/rule
+.PHONY : examples/CMakeFiles/crop.dir/rule
+
+# Convenience name for target.
+crop: examples/CMakeFiles/crop.dir/rule
+.PHONY : crop
+
+# fast build rule for target.
+crop/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/build
+.PHONY : crop/fast
+
+# Convenience name for target.
+examples/CMakeFiles/flip.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/flip.dir/rule
+.PHONY : examples/CMakeFiles/flip.dir/rule
+
+# Convenience name for target.
+flip: examples/CMakeFiles/flip.dir/rule
+.PHONY : flip
+
+# fast build rule for target.
+flip/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/build
+.PHONY : flip/fast
+
+# Convenience name for target.
+examples/CMakeFiles/gif.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/gif.dir/rule
+.PHONY : examples/CMakeFiles/gif.dir/rule
+
+# Convenience name for target.
+gif: examples/CMakeFiles/gif.dir/rule
+.PHONY : gif
+
+# fast build rule for target.
+gif/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/build
+.PHONY : gif/fast
+
+# Convenience name for target.
+examples/CMakeFiles/nnquant.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/nnquant.dir/rule
+.PHONY : examples/CMakeFiles/nnquant.dir/rule
+
+# Convenience name for target.
+nnquant: examples/CMakeFiles/nnquant.dir/rule
+.PHONY : nnquant
+
+# fast build rule for target.
+nnquant/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/build
+.PHONY : nnquant/fast
+
+# Convenience name for target.
+examples/CMakeFiles/tgaread.dir/rule:
+ cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/tgaread.dir/rule
+.PHONY : examples/CMakeFiles/tgaread.dir/rule
+
+# Convenience name for target.
+tgaread: examples/CMakeFiles/tgaread.dir/rule
+.PHONY : tgaread
+
+# fast build rule for target.
+tgaread/fast:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/build
+.PHONY : tgaread/fast
+
+arc.o: arc.c.o
+.PHONY : arc.o
+
+# target to build an object file
+arc.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.o
+.PHONY : arc.c.o
+
+arc.i: arc.c.i
+.PHONY : arc.i
+
+# target to preprocess a source file
+arc.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.i
+.PHONY : arc.c.i
+
+arc.s: arc.c.s
+.PHONY : arc.s
+
+# target to generate assembly for a file
+arc.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.s
+.PHONY : arc.c.s
+
+copyrotated.o: copyrotated.c.o
+.PHONY : copyrotated.o
+
+# target to build an object file
+copyrotated.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.o
+.PHONY : copyrotated.c.o
+
+copyrotated.i: copyrotated.c.i
+.PHONY : copyrotated.i
+
+# target to preprocess a source file
+copyrotated.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.i
+.PHONY : copyrotated.c.i
+
+copyrotated.s: copyrotated.c.s
+.PHONY : copyrotated.s
+
+# target to generate assembly for a file
+copyrotated.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.s
+.PHONY : copyrotated.c.s
+
+crop.o: crop.c.o
+.PHONY : crop.o
+
+# target to build an object file
+crop.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.o
+.PHONY : crop.c.o
+
+crop.i: crop.c.i
+.PHONY : crop.i
+
+# target to preprocess a source file
+crop.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.i
+.PHONY : crop.c.i
+
+crop.s: crop.c.s
+.PHONY : crop.s
+
+# target to generate assembly for a file
+crop.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.s
+.PHONY : crop.c.s
+
+flip.o: flip.c.o
+.PHONY : flip.o
+
+# target to build an object file
+flip.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.o
+.PHONY : flip.c.o
+
+flip.i: flip.c.i
+.PHONY : flip.i
+
+# target to preprocess a source file
+flip.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.i
+.PHONY : flip.c.i
+
+flip.s: flip.c.s
+.PHONY : flip.s
+
+# target to generate assembly for a file
+flip.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.s
+.PHONY : flip.c.s
+
+gif.o: gif.c.o
+.PHONY : gif.o
+
+# target to build an object file
+gif.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.o
+.PHONY : gif.c.o
+
+gif.i: gif.c.i
+.PHONY : gif.i
+
+# target to preprocess a source file
+gif.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.i
+.PHONY : gif.c.i
+
+gif.s: gif.c.s
+.PHONY : gif.s
+
+# target to generate assembly for a file
+gif.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.s
+.PHONY : gif.c.s
+
+nnquant.o: nnquant.c.o
+.PHONY : nnquant.o
+
+# target to build an object file
+nnquant.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.o
+.PHONY : nnquant.c.o
+
+nnquant.i: nnquant.c.i
+.PHONY : nnquant.i
+
+# target to preprocess a source file
+nnquant.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.i
+.PHONY : nnquant.c.i
+
+nnquant.s: nnquant.c.s
+.PHONY : nnquant.s
+
+# target to generate assembly for a file
+nnquant.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.s
+.PHONY : nnquant.c.s
+
+tgaread.o: tgaread.c.o
+.PHONY : tgaread.o
+
+# target to build an object file
+tgaread.c.o:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.o
+.PHONY : tgaread.c.o
+
+tgaread.i: tgaread.c.i
+.PHONY : tgaread.i
+
+# target to preprocess a source file
+tgaread.c.i:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.i
+.PHONY : tgaread.c.i
+
+tgaread.s: tgaread.c.s
+.PHONY : tgaread.s
+
+# target to generate assembly for a file
+tgaread.c.s:
+ cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.s
+.PHONY : tgaread.c.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... arc"
+ @echo "... copyrotated"
+ @echo "... crop"
+ @echo "... edit_cache"
+ @echo "... flip"
+ @echo "... gif"
+ @echo "... install"
+ @echo "... install/local"
+ @echo "... install/strip"
+ @echo "... list_install_components"
+ @echo "... nnquant"
+ @echo "... package"
+ @echo "... package_source"
+ @echo "... rebuild_cache"
+ @echo "... test"
+ @echo "... tgaread"
+ @echo "... arc.o"
+ @echo "... arc.i"
+ @echo "... arc.s"
+ @echo "... copyrotated.o"
+ @echo "... copyrotated.i"
+ @echo "... copyrotated.s"
+ @echo "... crop.o"
+ @echo "... crop.i"
+ @echo "... crop.s"
+ @echo "... flip.o"
+ @echo "... flip.i"
+ @echo "... flip.s"
+ @echo "... gif.o"
+ @echo "... gif.i"
+ @echo "... gif.s"
+ @echo "... nnquant.o"
+ @echo "... nnquant.i"
+ @echo "... nnquant.s"
+ @echo "... tgaread.o"
+ @echo "... tgaread.i"
+ @echo "... tgaread.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
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
new file mode 100644
index 00000000000..08f2e07ec61
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/m4/ax_append_flag.m4
@@ -0,0 +1,71 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+# added in between.
+#
+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
+# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+# FLAG.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+# 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.
+
+#serial 6
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+ AS_CASE([" AS_VAR_GET(FLAGS) "],
+ [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+ [
+ AS_VAR_APPEND(FLAGS,[" $1"])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+ ],
+ [
+ AS_VAR_SET(FLAGS,[$1])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
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
new file mode 100644
index 00000000000..1f0779928aa
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4
@@ -0,0 +1,122 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
+# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
+# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
+#
+# DESCRIPTION
+#
+# Try to find a compiler option that enables most reasonable warnings.
+#
+# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result
+# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default.
+#
+# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX,
+# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and
+# Intel compilers. For a given compiler, the Fortran flags are much more
+# experimental than their C equivalents.
+#
+# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS
+# - $2 add-value-if-not-found : nothing
+# - $3 action-if-found : add value to shellvariable
+# - $4 action-if-not-found : nothing
+#
+# NOTE: These macros depend on AX_APPEND_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@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.
+
+#serial 15
+
+AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl
+AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
+AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl
+AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
+VAR,[VAR="no, unknown"
+ac_save_[]FLAGS="$[]FLAGS"
+for ac_arg dnl
+in "-warn all % -warn all" dnl Intel
+ "-pedantic % -Wall" dnl GCC
+ "-xstrconst % -v" dnl Solaris C
+ "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix
+ "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
+ "-ansi -ansiE % -fullwarn" dnl IRIX
+ "+ESlit % +w1" dnl HP-UX C
+ "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
+ "-h conform % -h msglevel 2" dnl Cray C (Unicos)
+ #
+do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
+done
+FLAGS="$ac_save_[]FLAGS"
+])
+AS_VAR_POPDEF([FLAGS])dnl
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+case ".$VAR" in
+ .ok|.ok,*) m4_ifvaln($3,$3) ;;
+ .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;;
+ *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;;
+esac
+AS_VAR_POPDEF([VAR])dnl
+])dnl AX_FLAGS_WARN_ALL
+dnl implementation tactics:
+dnl the for-argument contains a list of options. The first part of
+dnl these does only exist to detect the compiler - usually it is
+dnl a global option to enable -ansi or -extrawarnings. All other
+dnl compilers will fail about it. That was needed since a lot of
+dnl compilers will give false positives for some option-syntax
+dnl like -Woption or -Xoption as they think of it is a pass-through
+dnl to later compile stages or something. The "%" is used as a
+dnl delimiter. A non-option comment can be given after "%%" marks
+dnl which will be shown but not added to the respective C/CXXFLAGS.
+
+AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
+AC_LANG_PUSH([C])
+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
+AC_LANG_POP([C])
+])
+
+AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
+AC_LANG_PUSH([C++])
+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
+AC_LANG_POP([C++])
+])
+
+AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl
+AC_LANG_PUSH([Fortran])
+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
+AC_LANG_POP([Fortran])
+])
diff --git a/Build/source/libs/gd/libgd-src/m4/ax_openmp.m4 b/Build/source/libs/gd/libgd-src/m4/ax_openmp.m4
new file mode 100644
index 00000000000..8fe18c8097c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/m4/ax_openmp.m4
@@ -0,0 +1,109 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_openmp.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+# This macro tries to find out how to compile programs that use OpenMP a
+# standard API and set of compiler directives for parallel programming
+# (see http://www-unix.mcs/)
+#
+# On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS
+# output variable to the flag (e.g. -omp) used both to compile *and* link
+# OpenMP programs in the current language.
+#
+# NOTE: You are assumed to not only compile your program with these flags,
+# but also link it with them as well.
+#
+# If you want to compile everything with OpenMP, you should set:
+#
+# CFLAGS="$CFLAGS $OPENMP_CFLAGS"
+# #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+# #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS"
+#
+# (depending on the selected language).
+#
+# The user can override the default choice by setting the corresponding
+# environment variable (e.g. OPENMP_CFLAGS).
+#
+# ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is
+# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
+# not found. If ACTION-IF-FOUND is not specified, the default action will
+# define HAVE_OPENMP.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#
+# 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.
+
+#serial 9
+
+AC_DEFUN([AX_OPENMP], [
+AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
+
+AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown
+# Flags to try: -fopenmp (gcc), -openmp (icc), -mp (SGI & PGI),
+# -xopenmp (Sun), -omp (Tru64), -qsmp=omp (AIX), none
+ax_openmp_flags="-fopenmp -openmp -mp -xopenmp -omp -qsmp=omp none"
+if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then
+ ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags"
+fi
+for ax_openmp_flag in $ax_openmp_flags; do
+ case $ax_openmp_flag in
+ none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;;
+ *) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;;
+ esac
+ AC_TRY_LINK([#ifdef __cplusplus
+extern "C"
+#endif
+void omp_set_num_threads(int);], [const int N = 100000;
+ int i, arr[N];
+
+ omp_set_num_threads(2);
+
+ #pragma omp parallel for
+ for (i = 0; i < N; i++) {
+ arr[i] = i;
+ }], [ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break])
+done
+[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS
+])
+if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then
+ m4_default([$2],:)
+else
+ if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then
+ OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp
+ fi
+ m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])])
+fi
+])dnl AX_OPENMP
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 8295a86efb7..6d400ed4e8e 100644
--- a/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
+++ b/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
@@ -1,317 +1,317 @@
-# ===========================================================================
-# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-#
-# DESCRIPTION
-#
-# This macro figures out how to build C programs using POSIX threads. It
-# sets the PTHREAD_LIBS output variable to the threads library and linker
-# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
-# flags that are needed. (The user can also force certain compiler
-# flags/libs to be tested by setting these environment variables.)
-#
-# Also sets PTHREAD_CC to any special C compiler that is needed for
-# multi-threaded programs (defaults to the value of CC otherwise). (This
-# is necessary on AIX to use the special cc_r compiler alias.)
-#
-# NOTE: You are assumed to not only compile your program with these flags,
-# but also link it with them as well. e.g. you should link with
-# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
-#
-# If you are only building threads programs, you may wish to use these
-# variables in your default LIBS, CFLAGS, and CC:
-#
-# LIBS="$PTHREAD_LIBS $LIBS"
-# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-# CC="$PTHREAD_CC"
-#
-# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
-# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
-#
-# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
-# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
-# PTHREAD_CFLAGS.
-#
-# ACTION-IF-FOUND is a list of shell commands to run if a threads library
-# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
-# is not found. If ACTION-IF-FOUND is not specified, the default action
-# will define HAVE_PTHREAD.
-#
-# Please let the authors know if this macro fails on any platform, or if
-# you have any other suggestions or comments. This macro was based on work
-# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
-# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
-# Alejandro Forero Cuervo to the autoconf macro repository. We are also
-# grateful for the helpful feedback of numerous users.
-#
-# Updated for Autoconf 2.68 by Daniel Richard G.
-#
-# LICENSE
-#
-# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
-#
-# 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.
-
-#serial 20
-
-AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
-AC_DEFUN([AX_PTHREAD], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_LANG_PUSH([C])
-ax_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
- AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
- AC_MSG_RESULT($ax_pthread_ok)
- if test x"$ax_pthread_ok" = xno; then
- PTHREAD_LIBS=""
- PTHREAD_CFLAGS=""
- fi
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try. Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important. Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-# other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-# doesn't hurt to check since this sometimes defines pthreads too;
-# also defines -D_REENTRANT)
-# ... -mt is also the pthreads flag for HP/aCC
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case ${host_os} in
- solaris*)
-
- # On Solaris (at least, for some versions), libc contains stubbed
- # (non-functional) versions of the pthreads routines, so link-based
- # tests will erroneously succeed. (We need to link with -pthreads/-mt/
- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
- # a function called by this macro, so we could check for that, but
- # who knows whether they'll stub that too in a future libc.) So,
- # we'll just look for -pthreads and -lpthread first:
-
- ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
- ;;
-
- darwin*)
- ax_pthread_flags="-pthread $ax_pthread_flags"
- ;;
-esac
-
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
-
- case $flag in
- none)
- AC_MSG_CHECKING([whether pthreads work without any flags])
- ;;
-
- -*)
- AC_MSG_CHECKING([whether pthreads work with $flag])
- PTHREAD_CFLAGS="$flag"
- ;;
-
- pthread-config)
- AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
- if test x"$ax_pthread_config" = xno; then continue; fi
- PTHREAD_CFLAGS="`pthread-config --cflags`"
- PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
- ;;
-
- *)
- AC_MSG_CHECKING([for the pthreads library -l$flag])
- PTHREAD_LIBS="-l$flag"
- ;;
- esac
-
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="$PTHREAD_LIBS $LIBS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
- # Check for various functions. We must include pthread.h,
- # since some functions may be macros. (On the Sequent, we
- # need a special flag -Kthread to make this header compile.)
- # We check for pthread_join because it is in -lpthread on IRIX
- # while pthread_create is in libc. We check for pthread_attr_init
- # due to DEC craziness with -lpthreads. We check for
- # pthread_cleanup_push because it is one of the few pthread
- # functions on Solaris that doesn't have a non-functional libc stub.
- # We try pthread_create on general principles.
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
- static void routine(void *a) { a = 0; }
- static void *start_routine(void *a) { return a; }],
- [pthread_t th; pthread_attr_t attr;
- pthread_create(&th, 0, start_routine, 0);
- pthread_join(th, 0);
- pthread_attr_init(&attr);
- pthread_cleanup_push(routine, 0);
- pthread_cleanup_pop(0) /* ; */])],
- [ax_pthread_ok=yes],
- [])
-
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
-
- AC_MSG_RESULT($ax_pthread_ok)
- if test "x$ax_pthread_ok" = xyes; then
- break;
- fi
-
- PTHREAD_LIBS=""
- PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
- # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
- AC_MSG_CHECKING([for joinable pthread attribute])
- attr_name=unknown
- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
- [int attr = $attr; return attr /* ; */])],
- [attr_name=$attr; break],
- [])
- done
- AC_MSG_RESULT($attr_name)
- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
- AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
- [Define to necessary symbol if this constant
- uses a non-standard name on your system.])
- fi
-
- AC_MSG_CHECKING([if more special flags are required for pthreads])
- flag=no
- case ${host_os} in
- aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
- osf* | hpux*) flag="-D_REENTRANT";;
- solaris*)
- if test "$GCC" = "yes"; then
- flag="-D_REENTRANT"
- else
- flag="-mt -D_REENTRANT"
- fi
- ;;
- esac
- AC_MSG_RESULT(${flag})
- if test "x$flag" != xno; then
- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
- fi
-
- AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
- ax_cv_PTHREAD_PRIO_INHERIT, [
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
- [ax_cv_PTHREAD_PRIO_INHERIT=yes],
- [ax_cv_PTHREAD_PRIO_INHERIT=no])
- ])
- AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
- AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
-
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
-
- # More AIX lossage: compile with *_r variant
- if test "x$GCC" != xyes; then
- case $host_os in
- aix*)
- AS_CASE(["x/$CC"],
- [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
- [#handle absolute path differently from PATH based program lookup
- AS_CASE(["x$CC"],
- [x/*],
- [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
- [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
- ;;
- esac
- fi
-fi
-
-test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
-
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CFLAGS)
-AC_SUBST(PTHREAD_CC)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
- :
-else
- ax_pthread_ok=no
- $2
-fi
-AC_LANG_POP
-])dnl AX_PTHREAD
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+# This macro figures out how to build C programs using POSIX threads. It
+# sets the PTHREAD_LIBS output variable to the threads library and linker
+# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+# flags that are needed. (The user can also force certain compiler
+# flags/libs to be tested by setting these environment variables.)
+#
+# Also sets PTHREAD_CC to any special C compiler that is needed for
+# multi-threaded programs (defaults to the value of CC otherwise). (This
+# is necessary on AIX to use the special cc_r compiler alias.)
+#
+# NOTE: You are assumed to not only compile your program with these flags,
+# but also link it with them as well. e.g. you should link with
+# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+# If you are only building threads programs, you may wish to use these
+# variables in your default LIBS, CFLAGS, and CC:
+#
+# LIBS="$PTHREAD_LIBS $LIBS"
+# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+# CC="$PTHREAD_CC"
+#
+# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
+# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
+# PTHREAD_CFLAGS.
+#
+# ACTION-IF-FOUND is a list of shell commands to run if a threads library
+# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+# is not found. If ACTION-IF-FOUND is not specified, the default action
+# will define HAVE_PTHREAD.
+#
+# Please let the authors know if this macro fails on any platform, or if
+# you have any other suggestions or comments. This macro was based on work
+# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+# Alejandro Forero Cuervo to the autoconf macro repository. We are also
+# grateful for the helpful feedback of numerous users.
+#
+# Updated for Autoconf 2.68 by Daniel Richard G.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
+#
+# 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.
+
+#serial 20
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ save_LIBS="$LIBS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+ AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+ AC_MSG_RESULT($ax_pthread_ok)
+ if test x"$ax_pthread_ok" = xno; then
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+ fi
+ LIBS="$save_LIBS"
+ CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try. Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important. Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+# other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+# doesn't hurt to check since this sometimes defines pthreads too;
+# also defines -D_REENTRANT)
+# ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case ${host_os} in
+ solaris*)
+
+ # On Solaris (at least, for some versions), libc contains stubbed
+ # (non-functional) versions of the pthreads routines, so link-based
+ # tests will erroneously succeed. (We need to link with -pthreads/-mt/
+ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
+ # a function called by this macro, so we could check for that, but
+ # who knows whether they'll stub that too in a future libc.) So,
+ # we'll just look for -pthreads and -lpthread first:
+
+ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+ ;;
+
+ darwin*)
+ ax_pthread_flags="-pthread $ax_pthread_flags"
+ ;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+ case $flag in
+ none)
+ AC_MSG_CHECKING([whether pthreads work without any flags])
+ ;;
+
+ -*)
+ AC_MSG_CHECKING([whether pthreads work with $flag])
+ PTHREAD_CFLAGS="$flag"
+ ;;
+
+ pthread-config)
+ AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+ if test x"$ax_pthread_config" = xno; then continue; fi
+ PTHREAD_CFLAGS="`pthread-config --cflags`"
+ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+ ;;
+
+ *)
+ AC_MSG_CHECKING([for the pthreads library -l$flag])
+ PTHREAD_LIBS="-l$flag"
+ ;;
+ esac
+
+ save_LIBS="$LIBS"
+ save_CFLAGS="$CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+ # Check for various functions. We must include pthread.h,
+ # since some functions may be macros. (On the Sequent, we
+ # need a special flag -Kthread to make this header compile.)
+ # We check for pthread_join because it is in -lpthread on IRIX
+ # while pthread_create is in libc. We check for pthread_attr_init
+ # due to DEC craziness with -lpthreads. We check for
+ # pthread_cleanup_push because it is one of the few pthread
+ # functions on Solaris that doesn't have a non-functional libc stub.
+ # We try pthread_create on general principles.
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+ static void routine(void *a) { a = 0; }
+ static void *start_routine(void *a) { return a; }],
+ [pthread_t th; pthread_attr_t attr;
+ pthread_create(&th, 0, start_routine, 0);
+ pthread_join(th, 0);
+ pthread_attr_init(&attr);
+ pthread_cleanup_push(routine, 0);
+ pthread_cleanup_pop(0) /* ; */])],
+ [ax_pthread_ok=yes],
+ [])
+
+ LIBS="$save_LIBS"
+ CFLAGS="$save_CFLAGS"
+
+ AC_MSG_RESULT($ax_pthread_ok)
+ if test "x$ax_pthread_ok" = xyes; then
+ break;
+ fi
+
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+ save_LIBS="$LIBS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+ AC_MSG_CHECKING([for joinable pthread attribute])
+ attr_name=unknown
+ for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [int attr = $attr; return attr /* ; */])],
+ [attr_name=$attr; break],
+ [])
+ done
+ AC_MSG_RESULT($attr_name)
+ if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+ AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+ [Define to necessary symbol if this constant
+ uses a non-standard name on your system.])
+ fi
+
+ AC_MSG_CHECKING([if more special flags are required for pthreads])
+ flag=no
+ case ${host_os} in
+ aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+ osf* | hpux*) flag="-D_REENTRANT";;
+ solaris*)
+ if test "$GCC" = "yes"; then
+ flag="-D_REENTRANT"
+ else
+ flag="-mt -D_REENTRANT"
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT(${flag})
+ if test "x$flag" != xno; then
+ PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+ fi
+
+ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+ ax_cv_PTHREAD_PRIO_INHERIT, [
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
+ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+ [ax_cv_PTHREAD_PRIO_INHERIT=no])
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
+ AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
+
+ LIBS="$save_LIBS"
+ CFLAGS="$save_CFLAGS"
+
+ # More AIX lossage: compile with *_r variant
+ if test "x$GCC" != xyes; then
+ case $host_os in
+ aix*)
+ AS_CASE(["x/$CC"],
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+ [#handle absolute path differently from PATH based program lookup
+ AS_CASE(["x$CC"],
+ [x/*],
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+ ;;
+ esac
+ fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+ ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+ :
+else
+ ax_pthread_ok=no
+ $2
+fi
+AC_LANG_POP
+])dnl 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
new file mode 100644
index 00000000000..cae11112d90
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/m4/ax_require_defined.m4
@@ -0,0 +1,37 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+# been defined and thus are available for use. This avoids random issues
+# where a macro isn't expanded. Instead the configure script emits a
+# non-fatal:
+#
+# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+# It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+# Here's an example:
+#
+# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+# 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 1
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
diff --git a/Build/source/libs/gd/libgd-src/m4/visibility.m4 b/Build/source/libs/gd/libgd-src/m4/visibility.m4
index a9172478669..2ff6330aa42 100644
--- a/Build/source/libs/gd/libgd-src/m4/visibility.m4
+++ b/Build/source/libs/gd/libgd-src/m4/visibility.m4
@@ -1,52 +1,52 @@
-# visibility.m4 serial 1 (gettext-0.15)
-dnl Copyright (C) 2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-dnl Tests whether the compiler supports the command-line option
-dnl -fvisibility=hidden and the function and variable attributes
-dnl __attribute__((__visibility__("hidden"))) and
-dnl __attribute__((__visibility__("default"))).
-dnl Does *not* test for __visibility__("protected") - which has tricky
-dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
-dnl MacOS X.
-dnl Does *not* test for __visibility__("internal") - which has processor
-dnl dependent semantics.
-dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
-dnl "really only recommended for legacy code".
-dnl Set the variable CFLAG_VISIBILITY.
-dnl Defines and sets the variable HAVE_VISIBILITY.
-
-AC_DEFUN([gl_VISIBILITY],
-[
- AC_REQUIRE([AC_PROG_CC])
- CFLAG_VISIBILITY=
- HAVE_VISIBILITY=0
- if test -n "$GCC"; then
- AC_MSG_CHECKING([for simple visibility declarations])
- AC_CACHE_VAL(gl_cv_cc_visibility, [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fvisibility=hidden"
- AC_TRY_COMPILE(
- [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
- extern __attribute__((__visibility__("default"))) int exportedvar;
- extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
- extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
- [],
- gl_cv_cc_visibility=yes,
- gl_cv_cc_visibility=no)
- CFLAGS="$gl_save_CFLAGS"])
- AC_MSG_RESULT([$gl_cv_cc_visibility])
- if test $gl_cv_cc_visibility = yes; then
- CFLAG_VISIBILITY="-fvisibility=hidden"
- HAVE_VISIBILITY=1
- fi
- fi
- AC_SUBST([CFLAG_VISIBILITY])
- AC_SUBST([HAVE_VISIBILITY])
- AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
- [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
-])
+# visibility.m4 serial 1 (gettext-0.15)
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl MacOS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ AC_MSG_CHECKING([for simple visibility declarations])
+ AC_CACHE_VAL(gl_cv_cc_visibility, [
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ AC_TRY_COMPILE(
+ [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
+ [],
+ gl_cv_cc_visibility=yes,
+ gl_cv_cc_visibility=no)
+ CFLAGS="$gl_save_CFLAGS"])
+ AC_MSG_RESULT([$gl_cv_cc_visibility])
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+ AC_SUBST([CFLAG_VISIBILITY])
+ AC_SUBST([HAVE_VISIBILITY])
+ AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+ [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
diff --git a/Build/source/libs/gd/libgd-src/m4/w32.m4 b/Build/source/libs/gd/libgd-src/m4/w32.m4
index 95a992acb88..fbcc541d969 100644
--- a/Build/source/libs/gd/libgd-src/m4/w32.m4
+++ b/Build/source/libs/gd/libgd-src/m4/w32.m4
@@ -1,11 +1,11 @@
-# MINGW_AC_WIN32_NATIVE_HOST
-# --------------------------
-# Check if the runtime platform is a native Win32 host.
-#
-AC_DEFUN([MINGW_AC_WIN32_NATIVE_HOST],
-[AC_CACHE_CHECK([whether we are building for a Win32 host], [mingw_cv_win32_host],
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#ifdef _WIN32
- choke me
-#endif]])], [mingw_cv_win32_host=no], [mingw_cv_win32_host=yes]))dnl
-])# MINGW_AC_WIN32_NATIVE_HOST
+# MINGW_AC_WIN32_NATIVE_HOST
+# --------------------------
+# Check if the runtime platform is a native Win32 host.
+#
+AC_DEFUN([MINGW_AC_WIN32_NATIVE_HOST],
+[AC_CACHE_CHECK([whether we are building for a Win32 host], [mingw_cv_win32_host],
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#ifdef _WIN32
+ choke me
+#endif]])], [mingw_cv_win32_host=no], [mingw_cv_win32_host=yes]))dnl
+])# MINGW_AC_WIN32_NATIVE_HOST
diff --git a/Build/source/libs/gd/libgd-src/netware/get_exp.awk b/Build/source/libs/gd/libgd-src/netware/get_exp.awk
index 724f245d8a8..5428bf63ca7 100644
--- a/Build/source/libs/gd/libgd-src/netware/get_exp.awk
+++ b/Build/source/libs/gd/libgd-src/netware/get_exp.awk
@@ -1,37 +1,37 @@
-#!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 ",";
- }
-}
-
-
+#!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
index f533efed88e..8747a338a57 100644
--- a/Build/source/libs/gd/libgd-src/netware/get_ver.awk
+++ b/Build/source/libs/gd/libgd-src/netware/get_ver.awk
@@ -1,28 +1,28 @@
-#!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 "";
-}
-
-
+#!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/src/CMakeLists.txt b/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
index e27467dba0d..aec06e8cbad 100644
--- a/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
@@ -1,44 +1,45 @@
SET (LIBGD_SRC_FILES
+ bmp.h
gd.c
- gdfx.c
- gdfx.h
+ gd.h
+ gd_bmp.c
gd_color.c
gd_color.h
gd_color_map.c
gd_color_map.h
gd_crop.c
- gd_transform.c
- gd_security.c
- gdpp.cxx
- gdpp.h
- gd_bmp.c
- bmp.h
+ gd_filename.c
gd_filter.c
gd_gd.c
gd_gd2.c
+ gd_gif_in.c
+ gd_gif_out.c
+ gd_interpolation.c
gd_io.c
gd_io.h
- gd_io_stream.cxx
- gd_io_stream.h
gd_io_dp.c
- gd_interpolation.c
- gd_gif_in.c
- gd_gif_out.c
gd_io_file.c
gd_io_ss.c
+ gd_io_stream.cxx
+ gd_io_stream.h
gd_jpeg.c
gd_matrix.c
gd_nnquant.c
gd_nnquant.h
gd_png.c
gd_rotate.c
- gd_tiff.c
+ gd_security.c
+ gd_ss.c
gd_tga.c
gd_tga.h
- gd_ss.c
+ gd_tiff.c
gd_topal.c
+ gd_transform.c
+ gd_version.c
gd_wbmp.c
+ gd_webp.c
+ gd_xbm.c
gdcache.c
gdcache.h
gdfontg.c
@@ -52,22 +53,32 @@ SET (LIBGD_SRC_FILES
gdfontt.c
gdfontt.h
gdft.c
+ gdfx.c
+ gdfx.h
gdhelpers.c
gdhelpers.h
gdkanji.c
+ gdpp.cxx
+ gdpp.h
gdtables.c
gdxpm.c
jisx0208.h
wbmp.c
- gd.h
wbmp.h
- gd_webp.c
- webpimg.c
- gd_xbm.c
- gd_version.c
)
-add_library(${GD_LIB} ${LIBGD_SRC_FILES})
+if(MSVC AND MSVC_VERSION LESS 1900)
+ set(LIBGD_SRC_FILES ${LIBGD_SRC_FILES}
+ snprintf.c
+ )
+endif(MSVC AND MSVC_VERSION LESS 1900)
+
+include(GNUInstallDirs)
+
+if (BUILD_SHARED_LIBS)
+ add_library(${GD_LIB} ${LIBGD_SRC_FILES})
+endif()
+
add_library(${GD_LIB_STATIC} STATIC ${LIBGD_SRC_FILES})
if (WIN32 AND NOT MINGW AND NOT MSYS)
@@ -86,18 +97,61 @@ endif (MINGW OR MSYS)
INCLUDE_DIRECTORIES(BEFORE "${PROJECT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${GD_SOURCE_DIR}/src")
-target_link_libraries(${GD_LIB} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${VPX_LIBRARIES})
-target_link_libraries(${GD_LIB_STATIC} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${VPX_LIBRARIES} )
+if (BUILD_SHARED_LIBS)
+ target_link_libraries(${GD_LIB} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES})
+endif()
+
+target_link_libraries(${GD_LIB_STATIC} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES} )
+
+set(GD_PROGRAMS gdcmpgif)
+
+if (PNG_FOUND)
+ set(GD_PROGRAMS ${GD_PROGRAMS} gdtopng pngtogd webpng)
+ if (ZLIB_FOUND)
+ set(GD_PROGRAMS ${GD_PROGRAMS} gdparttopng gd2topng pngtogd2)
+ endif()
+endif()
+
+if (FREETYPE_FOUND)
+ set(GD_PROGRAMS ${GD_PROGRAMS} annotate)
+endif()
+
+if (ZLIB_FOUND)
+ set(GD_PROGRAMS ${GD_PROGRAMS} gd2copypal gd2togif giftogd2)
+endif()
-set(GD_PROGRAMS annotate gdparttopng gdtopng gd2copypal gd2topng pngtogd pngtogd2 webpng gd2togif gdcmpgif giftogd2)
foreach(program ${GD_PROGRAMS})
add_executable(${program} ${program}.c)
- target_link_libraries(${program} ${GD_LIB})
+ if (BUILD_SHARED_LIBS)
+ target_link_libraries(${program} ${GD_LIB})
+ else()
+ target_link_libraries(${program} ${GD_LIB_STATIC})
+ endif()
endforeach(program)
-install(TARGETS ${GD_LIB} ${GD_LIB_STATIC} ${GD_PROGRAMS}
+if (BUILD_SHARED_LIBS)
+ set(GD_INSTALL_TARGETS ${GD_LIB} ${GD_LIB_STATIC} ${GD_PROGRAMS})
+else()
+ set(GD_INSTALL_TARGETS ${GD_LIB_STATIC} ${GD_PROGRAMS})
+endif()
+
+install(TARGETS ${GD_INSTALL_TARGETS}
RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib)
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(PROGRAMS bdftogd DESTINATION bin)
-install(FILES gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h gd_color_map.h gd_errors.h DESTINATION include)
+install(FILES
+ entities.h
+ gd.h
+ gd_color_map.h
+ gd_errors.h
+ gd_io.h
+ gdcache.h
+ gdfontg.h
+ gdfontl.h
+ gdfontmb.h
+ gdfonts.h
+ gdfontt.h
+ gdfx.h
+ gdpp.h
+ DESTINATION include)
diff --git a/Build/source/libs/gd/libgd-src/src/Makefile.am b/Build/source/libs/gd/libgd-src/src/Makefile.am
index 7dc4151134f..92772b79642 100644
--- a/Build/source/libs/gd/libgd-src/src/Makefile.am
+++ b/Build/source/libs/gd/libgd-src/src/Makefile.am
@@ -1,58 +1,107 @@
-## Process this file with automake to produce Makefile.in -*-Makefile-*-
-
-bin_PROGRAMS = gdcmpgif
-check_PROGRAMS = gifanimtest gd_color_map_test
-
-if HAVE_LIBPNG
-bin_PROGRAMS += gdtopng pngtogd webpng
-check_PROGRAMS += circletexttest fontsizetest fontwheeltest gddemo testac
-if HAVE_LIBZ
-bin_PROGRAMS += gdparttopng gd2topng pngtogd2
-check_PROGRAMS += gdtest
-endif
-endif
-
-if HAVE_LIBJPEG
-if !HAVE_LIBPNG
-check_PROGRAMS += fontsizetest fontwheeltest
-endif
-endif
-
-if HAVE_LIBFONTCONFIG
-check_PROGRAMS += fontconfigtest
-endif
-
-if HAVE_LIBFREETYPE
-bin_PROGRAMS += annotate
-check_PROGRAMS += gdtestft testtr
-endif
-
-if HAVE_LIBZ
-bin_PROGRAMS += gd2copypal gd2togif giftogd2
-endif
-
-bin_SCRIPTS = bdftogd
-
-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
-
-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
-
-lib_LTLIBRARIES = libgd.la
-
-libgd_la_SOURCES = gd.c gd_color.c gd_color_map.c gd_transform.c gdfx.c gd_security.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c gd_gif_in.c \
- gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c \
- gdfontmb.c gdfonts.c gdfontt.c gdft.c gdhelpers.c gdhelpers.h gdkanji.c gdtables.c gdxpm.c jisx0208.h wbmp.c wbmp.h \
- gd_filter.c gd_nnquant.c gd_rotate.c gd_matrix.c gd_interpolation.c gd_crop.c webpimg.c webpimg.h gd_webp.c gd_tiff.c \
- gd_tga.c gd_tga.h gd_bmp.c bmp.h gd_color.h gd_nnquant.h gd_tga.h gd_intern.h gd_io_stream.h gd_xbm.c \
- gd_color_match.c gd_version.c gd_filename.c
-
-libgd_la_LDFLAGS = -version-info $(GDLIB_CURRENT):$(GDLIB_REVISION):$(GDLIB_AGE) -no-undefined
-
-libgd_la_LIBADD = $(LTLIBICONV)
-
-LDADD = libgd.la $(LIBICONV)
-
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+
+bin_PROGRAMS = gdcmpgif
+check_PROGRAMS = gifanimtest gd_color_map_test
+
+if HAVE_LIBPNG
+bin_PROGRAMS += gdtopng pngtogd webpng
+check_PROGRAMS += circletexttest fontsizetest fontwheeltest gddemo testac
+if HAVE_LIBZ
+bin_PROGRAMS += gdparttopng gd2topng pngtogd2
+check_PROGRAMS += gdtest
+endif
+endif
+
+if HAVE_LIBJPEG
+if !HAVE_LIBPNG
+check_PROGRAMS += fontsizetest fontwheeltest
+endif
+endif
+
+if HAVE_LIBFONTCONFIG
+check_PROGRAMS += fontconfigtest
+endif
+
+if HAVE_LIBFREETYPE
+bin_PROGRAMS += annotate
+check_PROGRAMS += gdtestft testtr
+endif
+
+if HAVE_LIBZ
+bin_PROGRAMS += gd2copypal gd2togif giftogd2
+endif
+
+bin_SCRIPTS = bdftogd
+
+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
+
+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
+
+lib_LTLIBRARIES = libgd.la
+
+libgd_la_SOURCES = \
+ bmp.h \
+ gd.c \
+ gd_bmp.c \
+ gd_color.c \
+ gd_color.h \
+ gd_color_map.c \
+ gd_color_match.c \
+ gd_crop.c \
+ gd_filename.c \
+ gd_filter.c \
+ gd_gd.c \
+ gd_gd2.c \
+ gd_gif_in.c \
+ gd_gif_out.c \
+ gd_intern.h \
+ gd_interpolation.c \
+ gd_io.c \
+ gd_io_dp.c \
+ gd_io_file.c \
+ gd_io_ss.c \
+ gd_io_stream.h \
+ gd_jpeg.c \
+ gd_matrix.c \
+ gd_nnquant.c \
+ gd_nnquant.h \
+ gd_png.c \
+ gd_rotate.c \
+ gd_security.c \
+ gd_ss.c \
+ gd_tga.c \
+ gd_tga.h \
+ gd_tiff.c \
+ gd_topal.c \
+ gd_transform.c \
+ gd_version.c \
+ gd_wbmp.c \
+ gd_webp.c \
+ gd_xbm.c \
+ gdcache.c \
+ gdfontg.c \
+ gdfontl.c \
+ gdfontmb.c \
+ gdfonts.c \
+ gdfontt.c \
+ gdft.c \
+ gdfx.c \
+ gdhelpers.c \
+ gdhelpers.h \
+ gdkanji.c \
+ gdtables.c \
+ gdxpm.c \
+ jisx0208.h \
+ wbmp.c \
+ wbmp.h
+
+libgd_la_LDFLAGS = -version-info $(GDLIB_LT_CURRENT):$(GDLIB_LT_REVISION):$(GDLIB_LT_AGE) -no-undefined
+
+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 c66e3311306..00aaf496bbd 100644
--- a/Build/source/libs/gd/libgd-src/src/annotate.c
+++ b/Build/source/libs/gd/libgd-src/src/annotate.c
@@ -47,7 +47,7 @@ int main(int argc, char *argv[])
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\n");
+ fprintf(stderr, "font fontname (max name length 1024)\n");
fprintf(stderr, "size pointsize\n");
fprintf(stderr, "align (left|right|center)\n");
fprintf(stderr, "move x y\n");
@@ -98,9 +98,14 @@ int main(int argc, char *argv[])
char *st = strtok(0, " \t\r\n");
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);
+ goto badLine;
+ }
+ strncpy(font, st, font_len);
}
-
- strcpy(font, st);
} else if(!strcmp(st, "align")) {
char *st = strtok(0, " \t\r\n");
diff --git a/Build/source/libs/gd/libgd-src/src/circletexttest.c b/Build/source/libs/gd/libgd-src/src/circletexttest.c
index 55e0970c1a3..c1e67ab742f 100644
--- a/Build/source/libs/gd/libgd-src/src/circletexttest.c
+++ b/Build/source/libs/gd/libgd-src/src/circletexttest.c
@@ -33,6 +33,10 @@ int main(void)
#else
im = gdImageCreateTrueColor(300, 300);
#endif /* HAVE_LIBJPEG */
+ if(!im) {
+ fprintf(stderr, "gdImageCreateTrueColor failed \n");
+ return 1;
+ }
if(gdImageSX(im) < gdImageSY(im)) {
radius = gdImageSX(im) / 2;
} else {
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 a8e6f00b64d..acc22be281a 100644
--- a/Build/source/libs/gd/libgd-src/src/config.h.cmake
+++ b/Build/source/libs/gd/libgd-src/src/config.h.cmake
@@ -1,4 +1,10 @@
-/* config.hin. Generated from config.h.cmake by cmake */
+/* Generated from config.hin via autoheader for cmake; see bootstraps.h. */
+
+/* Define is you are building for Win32 API */
+#cmakedefine BGDWIN32
+
+/* 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
@@ -6,10 +12,10 @@
/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H
-/* Define to 1 if you have the <ft2build.h> header file. */
+/* Define if you have the ft2build.h header. */
#cmakedefine HAVE_FT2BUILD_H
-/* Define if you have the iconv() function. */
+/* Define if you have the iconv() function and it works. */
#cmakedefine HAVE_ICONV
/* Define to 1 if you have the <iconv.h> header file. */
@@ -21,34 +27,34 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H
-/* Define if you have the fontconfig library. */
+/* Define if you have fontconfig */
#cmakedefine HAVE_LIBFONTCONFIG
-/* Define if you have the freetype library. */
+/* Define if you have freetype */
#cmakedefine HAVE_LIBFREETYPE
-/* Define if you have the jpeg library. */
-#cmakedefine HAVE_LIBJPEG
+/* Define if you have liq */
+#cmakedefine HAVE_LIBIMAGEQUANT
-/* Define if you have the jpeg library. */
-#cmakedefine HAVE_LIBTIFF
+/* Define if you have jpeg */
+#cmakedefine HAVE_LIBJPEG
/* Define to 1 if you have the `m' library (-lm). */
#cmakedefine HAVE_LIBM
-/* Define if you have the png library. */
+/* Define if you have png */
#cmakedefine HAVE_LIBPNG
-/* Define if you have the VPX library. */
-#cmakedefine HAVE_LIBVPX
+/* Define if you have tiff */
+#cmakedefine HAVE_LIBTIFF
-/* Define to 1 if you have the <libimagequant.h> header file. */
-#cmakedefine HAVE_LIBIMAGEQUANT_H
+/* Define if you have webp */
+#cmakedefine HAVE_LIBWEBP
-/* Define if you have the Xpm library. */
+/* Define if you have xpm */
#cmakedefine HAVE_LIBXPM
-/* Define if you have zlib. */
+/* Define if you have zlib */
#cmakedefine HAVE_LIBZ
/* Define to 1 if you have the <limits.h> header file. */
@@ -57,12 +63,15 @@
/* Define to 1 if you have the <memory.h> header file. */
#cmakedefine HAVE_MEMORY_H
-/* Define to 1 if you have the <png.h> header file. */
-#cmakedefine HAVE_PNG_H
+/* Define if OpenMP is enabled */
+#cmakedefine HAVE_OPENMP
/* Define if you have POSIX threads libraries and header files. */
#cmakedefine HAVE_PTHREAD
+/* Have PTHREAD_PRIO_INHERIT. */
+#cmakedefine HAVE_PTHREAD_PRIO_INHERIT
+
/* Define to 1 if you have the <stddef.h> header file. */
#cmakedefine HAVE_STDDEF_H
@@ -85,13 +94,19 @@
#cmakedefine HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
-#ifndef HAVE_UNISTD_H
#cmakedefine HAVE_UNISTD_H
-#endif
+
+/* Define to 1 or 0, depending whether the compiler supports simple visibility
+ declarations. */
+#cmakedefine HAVE_VISIBILITY
/* Define as const if the declaration of iconv() needs const. */
#cmakedefine ICONV_CONST
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#cmakedefine LT_OBJDIR
+
/* Name of package */
#cmakedefine PACKAGE
@@ -107,6 +122,9 @@
/* Define to the one symbol short name of this package. */
#cmakedefine PACKAGE_TARNAME
+/* Define to the home page for this package. */
+#cmakedefine PACKAGE_URL
+
/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION
@@ -117,11 +135,5 @@
/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS
-/* Define to 1 if you have the stdint.h header file. */
-#cmakedefine HAVE_STDINT_H
-
-/* Define to 1 if you have the inttypes.h header file. */
-#cmakedefine HAVE_INTTYPES_H
-
/* Version number of package */
-
+#cmakedefine VERSION
diff --git a/Build/source/libs/gd/libgd-src/src/config.hin b/Build/source/libs/gd/libgd-src/src/config.hin
index 5393c70ef94..5d84fae8c97 100644
--- a/Build/source/libs/gd/libgd-src/src/config.hin
+++ b/Build/source/libs/gd/libgd-src/src/config.hin
@@ -1,133 +1,139 @@
-/* src/config.hin. Generated from configure.ac by autoheader. */
-
-/* Define is you are building for Win32 API */
-#undef BGDWIN32
-
-/* 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
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <iconv.h> header file. */
-#undef HAVE_ICONV_H
-
-/* Define if <iconv.h> defines iconv_t. */
-#undef HAVE_ICONV_T_DEF
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if you have the fontconfig library. */
-#undef HAVE_LIBFONTCONFIG
-
-/* Define if you have the freetype library. */
-#undef HAVE_LIBFREETYPE
-
-/* Define if you have the jpeg library. */
-#undef HAVE_LIBJPEG
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define if you have the png library. */
-#undef HAVE_LIBPNG
-
-/* Define if you have the Tiff library. */
-#undef HAVE_LIBTIFF
-
-/* Define if you have the VPX library. */
-#undef HAVE_LIBVPX
-
-/* Define if you have the Xpm library. */
-#undef HAVE_LIBXPM
-
-/* 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
-
-/* Define if you have POSIX threads libraries and header files. */
-#undef HAVE_PTHREAD
-
-/* 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
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#undef HAVE_VISIBILITY
-
-/* Define as const if the declaration of iconv() needs const. */
-#undef ICONV_CONST
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- your system. */
-#undef PTHREAD_CREATE_JOINABLE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
+/* src/config.hin. Generated from configure.ac by autoheader. */
+
+/* Define is you are building for Win32 API */
+#undef BGDWIN32
+
+/* 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
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <iconv.h> header file. */
+#undef HAVE_ICONV_H
+
+/* Define if <iconv.h> defines iconv_t. */
+#undef HAVE_ICONV_T_DEF
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have fontconfig */
+#undef HAVE_LIBFONTCONFIG
+
+/* Define if you have freetype */
+#undef HAVE_LIBFREETYPE
+
+/* Define if you have liq */
+#undef HAVE_LIBIMAGEQUANT
+
+/* Define if you have jpeg */
+#undef HAVE_LIBJPEG
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define if you have png */
+#undef HAVE_LIBPNG
+
+/* Define if you have tiff */
+#undef HAVE_LIBTIFF
+
+/* Define if you have webp */
+#undef HAVE_LIBWEBP
+
+/* Define if you have xpm */
+#undef HAVE_LIBXPM
+
+/* 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
+
+/* Define if OpenMP is enabled */
+#undef HAVE_OPENMP
+
+/* Define if you have POSIX threads libraries and header files. */
+#undef HAVE_PTHREAD
+
+/* 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
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 or 0, depending whether the compiler supports simple visibility
+ declarations. */
+#undef HAVE_VISIBILITY
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to necessary symbol if this constant uses a non-standard name on
+ your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/Build/source/libs/gd/libgd-src/src/entities.html b/Build/source/libs/gd/libgd-src/src/entities.html
index f6da3c63e81..5c5d7b65a32 100644
--- a/Build/source/libs/gd/libgd-src/src/entities.html
+++ b/Build/source/libs/gd/libgd-src/src/entities.html
@@ -1,682 +1,682 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Character entity references in HTML 4</title>
-
-<link rel="previous" href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
-<link rel="next" href="http://www.w3.org/TR/REC-html40/appendix/changes.html">
-<link rel="contents" href="http://www.w3.org/TR/REC-html40/cover.html#toc">
-<link rel="stylesheet" type="text/css" href="entities.html_files/W3C-REC.css">
-<link rel="STYLESHEET" href="entities.html_files/default.css" type="text/css"></head>
-
-<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>
-
-<hr></div>
-
-<h1 align="center"><a name="h-24">24</a> <a name="entities">Character entity
-references in HTML 4</a></h1>
-
-<div class="subtoc">
-<p><strong>Contents</strong></p>
-
-<ol>
-<li><a class="tocxref" href="#h-24.1">Introduction to character entity
-references</a></li>
-
-<li><a class="tocxref" href="#h-24.2">Character entity references for ISO
-8859-1 characters</a>
-
-<ol>
-<li><a class="tocxref" href="#h-24.2.1">The list of characters</a></li>
-</ol>
-</li>
-
-<li><a class="tocxref" href="#h-24.3">Character entity references for symbols,
-mathematical symbols, and Greek letters</a>
-
-<ol>
-<li><a class="tocxref" href="#h-24.3.1">The list of characters</a></li>
-</ol>
-</li>
-
-<li><a class="tocxref" href="#h-24.4">Character entity references for
-markup-significant and internationalization characters</a>
-
-<ol>
-<li><a class="tocxref" href="#h-24.4.1">The list of characters</a></li>
-</ol>
-</li>
-</ol>
-</div>
-
-<h2><a name="h-24.1">24.1</a> Introduction to character entity references</h2>
-
-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>
-
-<p>This version of HTML supports several sets of character entity
-references:</p>
-
-<ul>
-<li><a href="#iso-88591">ISO 8859-1 (Latin-1) characters</a> In accordance with
-section 14 of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-RFC1866" class="informref">[RFC1866]</a>, the set of Latin-1 entities has been extended by
-this specification to cover the whole right part of ISO-8859-1 (all code
-positions with the high-order bit set), including the already commonly used
-&amp;nbsp;, &amp;copy; and &amp;reg;. The names of the entities are taken from
-the appendices of SGML (defined in <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO8879" class="normref">[ISO8879]</a>).</li>
-
-<li><a href="#sym">symbols, mathematical symbols, and Greek letters</a>. These
-characters may be represented by glyphs in the Adobe font "Symbol".</li>
-
-<li><a href="#misc">markup-significant and internationalization characters</a>
-(e.g., for bidirectional text).</li>
-</ul>
-
-<p>The following sections present the complete lists of character entity
-references. Although, by convention, <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> the comments
-following each entry are usually written with uppercase letters, we have
-converted them to lowercase in this specification for reasons of
-readability.</p>
-
-<h2><a name="h-24.2">24.2</a> <a name="iso-88591">Character entity references
-for ISO 8859-1 characters</a></h2>
-
-<p>The character entity references in this section produce characters whose
-numeric equivalents should already be supported by conforming HTML 2.0 user
-agents. Thus, the character entity reference &amp;divide; is a more convenient
-form than &amp;#247; for obtaining the division sign (÷).</p>
-
-<p>To support these named entities, user agents need only recognize the entity
-names and convert them to characters that lie within the repertoire of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO88591" class="normref">
-[ISO88591]</a>.</p>
-
-<p>Character 65533 (FFFD hexadecimal) is the last valid character in UCS-2.
-65534 (FFFE hexadecimal) is unassigned and reserved as the byte-swapped version
-of ZERO WIDTH NON-BREAKING SPACE for byte-order detection purposes. 65535 (FFFF
-hexadecimal) is unassigned.</p>
-
-<h3><a name="h-24.2.1">24.2.1</a> The list of characters</h3>
-
-<div class="dtd-fragment">
-<pre>&lt;!-- Portions © International Organization for Standardization 1986
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
---&gt;
-&lt;!-- Character entity set. Typical invocation:
- &lt;!ENTITY % HTMLlat1 PUBLIC
- "-//W3C//ENTITIES Latin 1//EN//HTML"&gt;
- %HTMLlat1;
---&gt;
-
-&lt;!ENTITY nbsp CDATA "&amp;#160;" -- no-break space = non-breaking space,
- U+00A0 ISOnum --&gt;
-&lt;!ENTITY iexcl CDATA "&amp;#161;" -- inverted exclamation mark, U+00A1 ISOnum --&gt;
-&lt;!ENTITY cent CDATA "&amp;#162;" -- cent sign, U+00A2 ISOnum --&gt;
-&lt;!ENTITY pound CDATA "&amp;#163;" -- pound sign, U+00A3 ISOnum --&gt;
-&lt;!ENTITY curren CDATA "&amp;#164;" -- currency sign, U+00A4 ISOnum --&gt;
-&lt;!ENTITY yen CDATA "&amp;#165;" -- yen sign = yuan sign, U+00A5 ISOnum --&gt;
-&lt;!ENTITY brvbar CDATA "&amp;#166;" -- broken bar = broken vertical bar,
- U+00A6 ISOnum --&gt;
-&lt;!ENTITY sect CDATA "&amp;#167;" -- section sign, U+00A7 ISOnum --&gt;
-&lt;!ENTITY uml CDATA "&amp;#168;" -- diaeresis = spacing diaeresis,
- U+00A8 ISOdia --&gt;
-&lt;!ENTITY copy CDATA "&amp;#169;" -- copyright sign, U+00A9 ISOnum --&gt;
-&lt;!ENTITY ordf CDATA "&amp;#170;" -- feminine ordinal indicator, U+00AA ISOnum --&gt;
-&lt;!ENTITY laquo CDATA "&amp;#171;" -- left-pointing double angle quotation mark
- = left pointing guillemet, U+00AB ISOnum --&gt;
-&lt;!ENTITY not CDATA "&amp;#172;" -- not sign, U+00AC ISOnum --&gt;
-&lt;!ENTITY shy CDATA "&amp;#173;" -- soft hyphen = discretionary hyphen,
- U+00AD ISOnum --&gt;
-&lt;!ENTITY reg CDATA "&amp;#174;" -- registered sign = registered trade mark sign,
- U+00AE ISOnum --&gt;
-&lt;!ENTITY macr CDATA "&amp;#175;" -- macron = spacing macron = overline
- = APL overbar, U+00AF ISOdia --&gt;
-&lt;!ENTITY deg CDATA "&amp;#176;" -- degree sign, U+00B0 ISOnum --&gt;
-&lt;!ENTITY plusmn CDATA "&amp;#177;" -- plus-minus sign = plus-or-minus sign,
- U+00B1 ISOnum --&gt;
-&lt;!ENTITY sup2 CDATA "&amp;#178;" -- superscript two = superscript digit two
- = squared, U+00B2 ISOnum --&gt;
-&lt;!ENTITY sup3 CDATA "&amp;#179;" -- superscript three = superscript digit three
- = cubed, U+00B3 ISOnum --&gt;
-&lt;!ENTITY acute CDATA "&amp;#180;" -- acute accent = spacing acute,
- U+00B4 ISOdia --&gt;
-&lt;!ENTITY micro CDATA "&amp;#181;" -- micro sign, U+00B5 ISOnum --&gt;
-&lt;!ENTITY para CDATA "&amp;#182;" -- pilcrow sign = paragraph sign,
- U+00B6 ISOnum --&gt;
-&lt;!ENTITY middot CDATA "&amp;#183;" -- middle dot = Georgian comma
- = Greek middle dot, U+00B7 ISOnum --&gt;
-&lt;!ENTITY cedil CDATA "&amp;#184;" -- cedilla = spacing cedilla, U+00B8 ISOdia --&gt;
-&lt;!ENTITY sup1 CDATA "&amp;#185;" -- superscript one = superscript digit one,
- U+00B9 ISOnum --&gt;
-&lt;!ENTITY ordm CDATA "&amp;#186;" -- masculine ordinal indicator,
- U+00BA ISOnum --&gt;
-&lt;!ENTITY raquo CDATA "&amp;#187;" -- right-pointing double angle quotation mark
- = right pointing guillemet, U+00BB ISOnum --&gt;
-&lt;!ENTITY frac14 CDATA "&amp;#188;" -- vulgar fraction one quarter
- = fraction one quarter, U+00BC ISOnum --&gt;
-&lt;!ENTITY frac12 CDATA "&amp;#189;" -- vulgar fraction one half
- = fraction one half, U+00BD ISOnum --&gt;
-&lt;!ENTITY frac34 CDATA "&amp;#190;" -- vulgar fraction three quarters
- = fraction three quarters, U+00BE ISOnum --&gt;
-&lt;!ENTITY iquest CDATA "&amp;#191;" -- inverted question mark
- = turned question mark, U+00BF ISOnum --&gt;
-&lt;!ENTITY Agrave CDATA "&amp;#192;" -- latin capital letter A with grave
- = latin capital letter A grave,
- U+00C0 ISOlat1 --&gt;
-&lt;!ENTITY Aacute CDATA "&amp;#193;" -- latin capital letter A with acute,
- U+00C1 ISOlat1 --&gt;
-&lt;!ENTITY Acirc CDATA "&amp;#194;" -- latin capital letter A with circumflex,
- U+00C2 ISOlat1 --&gt;
-&lt;!ENTITY Atilde CDATA "&amp;#195;" -- latin capital letter A with tilde,
- U+00C3 ISOlat1 --&gt;
-&lt;!ENTITY Auml CDATA "&amp;#196;" -- latin capital letter A with diaeresis,
- U+00C4 ISOlat1 --&gt;
-&lt;!ENTITY Aring CDATA "&amp;#197;" -- latin capital letter A with ring above
- = latin capital letter A ring,
- U+00C5 ISOlat1 --&gt;
-&lt;!ENTITY AElig CDATA "&amp;#198;" -- latin capital letter AE
- = latin capital ligature AE,
- U+00C6 ISOlat1 --&gt;
-&lt;!ENTITY Ccedil CDATA "&amp;#199;" -- latin capital letter C with cedilla,
- U+00C7 ISOlat1 --&gt;
-&lt;!ENTITY Egrave CDATA "&amp;#200;" -- latin capital letter E with grave,
- U+00C8 ISOlat1 --&gt;
-&lt;!ENTITY Eacute CDATA "&amp;#201;" -- latin capital letter E with acute,
- U+00C9 ISOlat1 --&gt;
-&lt;!ENTITY Ecirc CDATA "&amp;#202;" -- latin capital letter E with circumflex,
- U+00CA ISOlat1 --&gt;
-&lt;!ENTITY Euml CDATA "&amp;#203;" -- latin capital letter E with diaeresis,
- U+00CB ISOlat1 --&gt;
-&lt;!ENTITY Igrave CDATA "&amp;#204;" -- latin capital letter I with grave,
- U+00CC ISOlat1 --&gt;
-&lt;!ENTITY Iacute CDATA "&amp;#205;" -- latin capital letter I with acute,
- U+00CD ISOlat1 --&gt;
-&lt;!ENTITY Icirc CDATA "&amp;#206;" -- latin capital letter I with circumflex,
- U+00CE ISOlat1 --&gt;
-&lt;!ENTITY Iuml CDATA "&amp;#207;" -- latin capital letter I with diaeresis,
- U+00CF ISOlat1 --&gt;
-&lt;!ENTITY ETH CDATA "&amp;#208;" -- latin capital letter ETH, U+00D0 ISOlat1 --&gt;
-&lt;!ENTITY Ntilde CDATA "&amp;#209;" -- latin capital letter N with tilde,
- U+00D1 ISOlat1 --&gt;
-&lt;!ENTITY Ograve CDATA "&amp;#210;" -- latin capital letter O with grave,
- U+00D2 ISOlat1 --&gt;
-&lt;!ENTITY Oacute CDATA "&amp;#211;" -- latin capital letter O with acute,
- U+00D3 ISOlat1 --&gt;
-&lt;!ENTITY Ocirc CDATA "&amp;#212;" -- latin capital letter O with circumflex,
- U+00D4 ISOlat1 --&gt;
-&lt;!ENTITY Otilde CDATA "&amp;#213;" -- latin capital letter O with tilde,
- U+00D5 ISOlat1 --&gt;
-&lt;!ENTITY Ouml CDATA "&amp;#214;" -- latin capital letter O with diaeresis,
- U+00D6 ISOlat1 --&gt;
-&lt;!ENTITY times CDATA "&amp;#215;" -- multiplication sign, U+00D7 ISOnum --&gt;
-&lt;!ENTITY Oslash CDATA "&amp;#216;" -- latin capital letter O with stroke
- = latin capital letter O slash,
- U+00D8 ISOlat1 --&gt;
-&lt;!ENTITY Ugrave CDATA "&amp;#217;" -- latin capital letter U with grave,
- U+00D9 ISOlat1 --&gt;
-&lt;!ENTITY Uacute CDATA "&amp;#218;" -- latin capital letter U with acute,
- U+00DA ISOlat1 --&gt;
-&lt;!ENTITY Ucirc CDATA "&amp;#219;" -- latin capital letter U with circumflex,
- U+00DB ISOlat1 --&gt;
-&lt;!ENTITY Uuml CDATA "&amp;#220;" -- latin capital letter U with diaeresis,
- U+00DC ISOlat1 --&gt;
-&lt;!ENTITY Yacute CDATA "&amp;#221;" -- latin capital letter Y with acute,
- U+00DD ISOlat1 --&gt;
-&lt;!ENTITY THORN CDATA "&amp;#222;" -- latin capital letter THORN,
- U+00DE ISOlat1 --&gt;
-&lt;!ENTITY szlig CDATA "&amp;#223;" -- latin small letter sharp s = ess-zed,
- U+00DF ISOlat1 --&gt;
-&lt;!ENTITY agrave CDATA "&amp;#224;" -- latin small letter a with grave
- = latin small letter a grave,
- U+00E0 ISOlat1 --&gt;
-&lt;!ENTITY aacute CDATA "&amp;#225;" -- latin small letter a with acute,
- U+00E1 ISOlat1 --&gt;
-&lt;!ENTITY acirc CDATA "&amp;#226;" -- latin small letter a with circumflex,
- U+00E2 ISOlat1 --&gt;
-&lt;!ENTITY atilde CDATA "&amp;#227;" -- latin small letter a with tilde,
- U+00E3 ISOlat1 --&gt;
-&lt;!ENTITY auml CDATA "&amp;#228;" -- latin small letter a with diaeresis,
- U+00E4 ISOlat1 --&gt;
-&lt;!ENTITY aring CDATA "&amp;#229;" -- latin small letter a with ring above
- = latin small letter a ring,
- U+00E5 ISOlat1 --&gt;
-&lt;!ENTITY aelig CDATA "&amp;#230;" -- latin small letter ae
- = latin small ligature ae, U+00E6 ISOlat1 --&gt;
-&lt;!ENTITY ccedil CDATA "&amp;#231;" -- latin small letter c with cedilla,
- U+00E7 ISOlat1 --&gt;
-&lt;!ENTITY egrave CDATA "&amp;#232;" -- latin small letter e with grave,
- U+00E8 ISOlat1 --&gt;
-&lt;!ENTITY eacute CDATA "&amp;#233;" -- latin small letter e with acute,
- U+00E9 ISOlat1 --&gt;
-&lt;!ENTITY ecirc CDATA "&amp;#234;" -- latin small letter e with circumflex,
- U+00EA ISOlat1 --&gt;
-&lt;!ENTITY euml CDATA "&amp;#235;" -- latin small letter e with diaeresis,
- U+00EB ISOlat1 --&gt;
-&lt;!ENTITY igrave CDATA "&amp;#236;" -- latin small letter i with grave,
- U+00EC ISOlat1 --&gt;
-&lt;!ENTITY iacute CDATA "&amp;#237;" -- latin small letter i with acute,
- U+00ED ISOlat1 --&gt;
-&lt;!ENTITY icirc CDATA "&amp;#238;" -- latin small letter i with circumflex,
- U+00EE ISOlat1 --&gt;
-&lt;!ENTITY iuml CDATA "&amp;#239;" -- latin small letter i with diaeresis,
- U+00EF ISOlat1 --&gt;
-&lt;!ENTITY eth CDATA "&amp;#240;" -- latin small letter eth, U+00F0 ISOlat1 --&gt;
-&lt;!ENTITY ntilde CDATA "&amp;#241;" -- latin small letter n with tilde,
- U+00F1 ISOlat1 --&gt;
-&lt;!ENTITY ograve CDATA "&amp;#242;" -- latin small letter o with grave,
- U+00F2 ISOlat1 --&gt;
-&lt;!ENTITY oacute CDATA "&amp;#243;" -- latin small letter o with acute,
- U+00F3 ISOlat1 --&gt;
-&lt;!ENTITY ocirc CDATA "&amp;#244;" -- latin small letter o with circumflex,
- U+00F4 ISOlat1 --&gt;
-&lt;!ENTITY otilde CDATA "&amp;#245;" -- latin small letter o with tilde,
- U+00F5 ISOlat1 --&gt;
-&lt;!ENTITY ouml CDATA "&amp;#246;" -- latin small letter o with diaeresis,
- U+00F6 ISOlat1 --&gt;
-&lt;!ENTITY divide CDATA "&amp;#247;" -- division sign, U+00F7 ISOnum --&gt;
-&lt;!ENTITY oslash CDATA "&amp;#248;" -- latin small letter o with stroke,
- = latin small letter o slash,
- U+00F8 ISOlat1 --&gt;
-&lt;!ENTITY ugrave CDATA "&amp;#249;" -- latin small letter u with grave,
- U+00F9 ISOlat1 --&gt;
-&lt;!ENTITY uacute CDATA "&amp;#250;" -- latin small letter u with acute,
- U+00FA ISOlat1 --&gt;
-&lt;!ENTITY ucirc CDATA "&amp;#251;" -- latin small letter u with circumflex,
- U+00FB ISOlat1 --&gt;
-&lt;!ENTITY uuml CDATA "&amp;#252;" -- latin small letter u with diaeresis,
- U+00FC ISOlat1 --&gt;
-&lt;!ENTITY yacute CDATA "&amp;#253;" -- latin small letter y with acute,
- U+00FD ISOlat1 --&gt;
-&lt;!ENTITY thorn CDATA "&amp;#254;" -- latin small letter thorn,
- U+00FE ISOlat1 --&gt;
-&lt;!ENTITY yuml CDATA "&amp;#255;" -- latin small letter y with diaeresis,
- U+00FF ISOlat1 --&gt;
-</pre>
-</div>
-
-<h2><a name="h-24.3">24.3</a> <a name="sym">Character entity references for
-symbols, mathematical symbols, and Greek letters</a></h2>
-
-<p>The character entity references in this section produce characters that may
-be represented by glyphs in the widely available Adobe Symbol font, including
-Greek characters, various bracketing symbols, and a selection of mathematical
-operators such as gradient, product, and summation symbols.</p>
-
-<p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
-other means. Display of glyphs for these characters may be obtained by being
-able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
-by other means, such as internally mapping the listed entities, numeric
-character references, and characters to the appropriate position in some font
-that contains the requisite glyphs.</p>
-
-<div class="note">
-<p><em><strong>When to use Greek entities.</strong> This entity set contains
-all the letters used in modern Greek. However, it does not include Greek
-punctuation, precomposed accented characters nor the non-spacing accents
-(tonos, dialytika) required to compose them. There are no archaic letters,
-Coptic-unique letters, or precomposed letters for Polytonic Greek. The entities
-defined here are not intended for the representation of modern Greek text and
-would not be an efficient representation; rather, they are intended for
-occasional Greek letters used in technical and mathematical works.</em></p>
-</div>
-
-<h3><a name="h-24.3.1">24.3.1</a> The list of characters</h3>
-
-<div class="dtd-fragment">
-<pre>&lt;!-- Mathematical, Greek and Symbolic characters for HTML --&gt;
-
-&lt;!-- Character entity set. Typical invocation:
- &lt;!ENTITY % HTMLsymbol PUBLIC
- "-//W3C//ENTITIES Symbols//EN//HTML"&gt;
- %HTMLsymbol; --&gt;
-
-&lt;!-- Portions © International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
---&gt;
-
-&lt;!-- Relevant ISO entity set is given unless names are newly introduced.
- New names (i.e., not in ISO 8879 list) do not clash with any
- 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.
-
---&gt;
-
-&lt;!-- Latin Extended-B --&gt;
-&lt;!ENTITY fnof CDATA "&amp;#402;" -- latin small f with hook = function
- = florin, U+0192 ISOtech --&gt;
-
-&lt;!-- Greek --&gt;
-&lt;!ENTITY Alpha CDATA "&amp;#913;" -- greek capital letter alpha, U+0391 --&gt;
-&lt;!ENTITY Beta CDATA "&amp;#914;" -- greek capital letter beta, U+0392 --&gt;
-&lt;!ENTITY Gamma CDATA "&amp;#915;" -- greek capital letter gamma,
- U+0393 ISOgrk3 --&gt;
-&lt;!ENTITY Delta CDATA "&amp;#916;" -- greek capital letter delta,
- U+0394 ISOgrk3 --&gt;
-&lt;!ENTITY Epsilon CDATA "&amp;#917;" -- greek capital letter epsilon, U+0395 --&gt;
-&lt;!ENTITY Zeta CDATA "&amp;#918;" -- greek capital letter zeta, U+0396 --&gt;
-&lt;!ENTITY Eta CDATA "&amp;#919;" -- greek capital letter eta, U+0397 --&gt;
-&lt;!ENTITY Theta CDATA "&amp;#920;" -- greek capital letter theta,
- U+0398 ISOgrk3 --&gt;
-&lt;!ENTITY Iota CDATA "&amp;#921;" -- greek capital letter iota, U+0399 --&gt;
-&lt;!ENTITY Kappa CDATA "&amp;#922;" -- greek capital letter kappa, U+039A --&gt;
-&lt;!ENTITY Lambda CDATA "&amp;#923;" -- greek capital letter lambda,
- U+039B ISOgrk3 --&gt;
-&lt;!ENTITY Mu CDATA "&amp;#924;" -- greek capital letter mu, U+039C --&gt;
-&lt;!ENTITY Nu CDATA "&amp;#925;" -- greek capital letter nu, U+039D --&gt;
-&lt;!ENTITY Xi CDATA "&amp;#926;" -- greek capital letter xi, U+039E ISOgrk3 --&gt;
-&lt;!ENTITY Omicron CDATA "&amp;#927;" -- greek capital letter omicron, U+039F --&gt;
-&lt;!ENTITY Pi CDATA "&amp;#928;" -- greek capital letter pi, U+03A0 ISOgrk3 --&gt;
-&lt;!ENTITY Rho CDATA "&amp;#929;" -- greek capital letter rho, U+03A1 --&gt;
-&lt;!-- there is no Sigmaf, and no U+03A2 character either --&gt;
-&lt;!ENTITY Sigma CDATA "&amp;#931;" -- greek capital letter sigma,
- U+03A3 ISOgrk3 --&gt;
-&lt;!ENTITY Tau CDATA "&amp;#932;" -- greek capital letter tau, U+03A4 --&gt;
-&lt;!ENTITY Upsilon CDATA "&amp;#933;" -- greek capital letter upsilon,
- U+03A5 ISOgrk3 --&gt;
-&lt;!ENTITY Phi CDATA "&amp;#934;" -- greek capital letter phi,
- U+03A6 ISOgrk3 --&gt;
-&lt;!ENTITY Chi CDATA "&amp;#935;" -- greek capital letter chi, U+03A7 --&gt;
-&lt;!ENTITY Psi CDATA "&amp;#936;" -- greek capital letter psi,
- U+03A8 ISOgrk3 --&gt;
-&lt;!ENTITY Omega CDATA "&amp;#937;" -- greek capital letter omega,
- U+03A9 ISOgrk3 --&gt;
-
-&lt;!ENTITY alpha CDATA "&amp;#945;" -- greek small letter alpha,
- U+03B1 ISOgrk3 --&gt;
-&lt;!ENTITY beta CDATA "&amp;#946;" -- greek small letter beta, U+03B2 ISOgrk3 --&gt;
-&lt;!ENTITY gamma CDATA "&amp;#947;" -- greek small letter gamma,
- U+03B3 ISOgrk3 --&gt;
-&lt;!ENTITY delta CDATA "&amp;#948;" -- greek small letter delta,
- U+03B4 ISOgrk3 --&gt;
-&lt;!ENTITY epsilon CDATA "&amp;#949;" -- greek small letter epsilon,
- U+03B5 ISOgrk3 --&gt;
-&lt;!ENTITY zeta CDATA "&amp;#950;" -- greek small letter zeta, U+03B6 ISOgrk3 --&gt;
-&lt;!ENTITY eta CDATA "&amp;#951;" -- greek small letter eta, U+03B7 ISOgrk3 --&gt;
-&lt;!ENTITY theta CDATA "&amp;#952;" -- greek small letter theta,
- U+03B8 ISOgrk3 --&gt;
-&lt;!ENTITY iota CDATA "&amp;#953;" -- greek small letter iota, U+03B9 ISOgrk3 --&gt;
-&lt;!ENTITY kappa CDATA "&amp;#954;" -- greek small letter kappa,
- U+03BA ISOgrk3 --&gt;
-&lt;!ENTITY lambda CDATA "&amp;#955;" -- greek small letter lambda,
- U+03BB ISOgrk3 --&gt;
-&lt;!ENTITY mu CDATA "&amp;#956;" -- greek small letter mu, U+03BC ISOgrk3 --&gt;
-&lt;!ENTITY nu CDATA "&amp;#957;" -- greek small letter nu, U+03BD ISOgrk3 --&gt;
-&lt;!ENTITY xi CDATA "&amp;#958;" -- greek small letter xi, U+03BE ISOgrk3 --&gt;
-&lt;!ENTITY omicron CDATA "&amp;#959;" -- greek small letter omicron, U+03BF NEW --&gt;
-&lt;!ENTITY pi CDATA "&amp;#960;" -- greek small letter pi, U+03C0 ISOgrk3 --&gt;
-&lt;!ENTITY rho CDATA "&amp;#961;" -- greek small letter rho, U+03C1 ISOgrk3 --&gt;
-&lt;!ENTITY sigmaf CDATA "&amp;#962;" -- greek small letter final sigma,
- U+03C2 ISOgrk3 --&gt;
-&lt;!ENTITY sigma CDATA "&amp;#963;" -- greek small letter sigma,
- U+03C3 ISOgrk3 --&gt;
-&lt;!ENTITY tau CDATA "&amp;#964;" -- greek small letter tau, U+03C4 ISOgrk3 --&gt;
-&lt;!ENTITY upsilon CDATA "&amp;#965;" -- greek small letter upsilon,
- U+03C5 ISOgrk3 --&gt;
-&lt;!ENTITY phi CDATA "&amp;#966;" -- greek small letter phi, U+03C6 ISOgrk3 --&gt;
-&lt;!ENTITY chi CDATA "&amp;#967;" -- greek small letter chi, U+03C7 ISOgrk3 --&gt;
-&lt;!ENTITY psi CDATA "&amp;#968;" -- greek small letter psi, U+03C8 ISOgrk3 --&gt;
-&lt;!ENTITY omega CDATA "&amp;#969;" -- greek small letter omega,
- U+03C9 ISOgrk3 --&gt;
-&lt;!ENTITY thetasym CDATA "&amp;#977;" -- greek small letter theta symbol,
- U+03D1 NEW --&gt;
-&lt;!ENTITY upsih CDATA "&amp;#978;" -- greek upsilon with hook symbol,
- U+03D2 NEW --&gt;
-&lt;!ENTITY piv CDATA "&amp;#982;" -- greek pi symbol, U+03D6 ISOgrk3 --&gt;
-
-&lt;!-- General Punctuation --&gt;
-&lt;!ENTITY bull CDATA "&amp;#8226;" -- bullet = black small circle,
- U+2022 ISOpub --&gt;
-&lt;!-- bullet is NOT the same as bullet operator, U+2219 --&gt;
-&lt;!ENTITY hellip CDATA "&amp;#8230;" -- horizontal ellipsis = three dot leader,
- U+2026 ISOpub --&gt;
-&lt;!ENTITY prime CDATA "&amp;#8242;" -- prime = minutes = feet, U+2032 ISOtech --&gt;
-&lt;!ENTITY Prime CDATA "&amp;#8243;" -- double prime = seconds = inches,
- U+2033 ISOtech --&gt;
-&lt;!ENTITY oline CDATA "&amp;#8254;" -- overline = spacing overscore,
- U+203E NEW --&gt;
-&lt;!ENTITY frasl CDATA "&amp;#8260;" -- fraction slash, U+2044 NEW --&gt;
-
-&lt;!-- Letterlike Symbols --&gt;
-&lt;!ENTITY weierp CDATA "&amp;#8472;" -- script capital P = power set
- = Weierstrass p, U+2118 ISOamso --&gt;
-&lt;!ENTITY image CDATA "&amp;#8465;" -- blackletter capital I = imaginary part,
- U+2111 ISOamso --&gt;
-&lt;!ENTITY real CDATA "&amp;#8476;" -- blackletter capital R = real part symbol,
- U+211C ISOamso --&gt;
-&lt;!ENTITY trade CDATA "&amp;#8482;" -- trade mark sign, U+2122 ISOnum --&gt;
-&lt;!ENTITY alefsym CDATA "&amp;#8501;" -- alef symbol = first transfinite cardinal,
- U+2135 NEW --&gt;
-&lt;!-- alef symbol is NOT the same as hebrew letter alef,
- U+05D0 although the same glyph could be used to depict both characters --&gt;
-
-&lt;!-- Arrows --&gt;
-&lt;!ENTITY larr CDATA "&amp;#8592;" -- leftwards arrow, U+2190 ISOnum --&gt;
-&lt;!ENTITY uarr CDATA "&amp;#8593;" -- upwards arrow, U+2191 ISOnum--&gt;
-&lt;!ENTITY rarr CDATA "&amp;#8594;" -- rightwards arrow, U+2192 ISOnum --&gt;
-&lt;!ENTITY darr CDATA "&amp;#8595;" -- downwards arrow, U+2193 ISOnum --&gt;
-&lt;!ENTITY harr CDATA "&amp;#8596;" -- left right arrow, U+2194 ISOamsa --&gt;
-&lt;!ENTITY crarr CDATA "&amp;#8629;" -- downwards arrow with corner leftwards
- = carriage return, U+21B5 NEW --&gt;
-&lt;!ENTITY lArr CDATA "&amp;#8656;" -- leftwards double arrow, U+21D0 ISOtech --&gt;
-&lt;!-- ISO 10646 does not say that lArr is the same as the 'is implied by' arrow
- but also does not have any other character for that function. So ? lArr can
- be used for 'is implied by' as ISOtech suggests --&gt;
-&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
- 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;
-&lt;!ENTITY hArr CDATA "&amp;#8660;" -- left right double arrow,
- U+21D4 ISOamsa --&gt;
-
-&lt;!-- Mathematical Operators --&gt;
-&lt;!ENTITY forall CDATA "&amp;#8704;" -- for all, U+2200 ISOtech --&gt;
-&lt;!ENTITY part CDATA "&amp;#8706;" -- partial differential, U+2202 ISOtech --&gt;
-&lt;!ENTITY exist CDATA "&amp;#8707;" -- there exists, U+2203 ISOtech --&gt;
-&lt;!ENTITY empty CDATA "&amp;#8709;" -- empty set = null set = diameter,
- U+2205 ISOamso --&gt;
-&lt;!ENTITY nabla CDATA "&amp;#8711;" -- nabla = backward difference,
- U+2207 ISOtech --&gt;
-&lt;!ENTITY isin CDATA "&amp;#8712;" -- element of, U+2208 ISOtech --&gt;
-&lt;!ENTITY notin CDATA "&amp;#8713;" -- not an element of, U+2209 ISOtech --&gt;
-&lt;!ENTITY ni CDATA "&amp;#8715;" -- contains as member, U+220B ISOtech --&gt;
-&lt;!-- should there be a more memorable name than 'ni'? --&gt;
-&lt;!ENTITY prod CDATA "&amp;#8719;" -- n-ary product = product sign,
- U+220F ISOamsb --&gt;
-&lt;!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
- the same glyph might be used for both --&gt;
-&lt;!ENTITY sum CDATA "&amp;#8721;" -- n-ary sumation, U+2211 ISOamsb --&gt;
-&lt;!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
- though the same glyph might be used for both --&gt;
-&lt;!ENTITY minus CDATA "&amp;#8722;" -- minus sign, U+2212 ISOtech --&gt;
-&lt;!ENTITY lowast CDATA "&amp;#8727;" -- asterisk operator, U+2217 ISOtech --&gt;
-&lt;!ENTITY radic CDATA "&amp;#8730;" -- square root = radical sign,
- U+221A ISOtech --&gt;
-&lt;!ENTITY prop CDATA "&amp;#8733;" -- proportional to, U+221D ISOtech --&gt;
-&lt;!ENTITY infin CDATA "&amp;#8734;" -- infinity, U+221E ISOtech --&gt;
-&lt;!ENTITY ang CDATA "&amp;#8736;" -- angle, U+2220 ISOamso --&gt;
-&lt;!ENTITY and CDATA "&amp;#8743;" -- logical and = wedge, U+2227 ISOtech --&gt;
-&lt;!ENTITY or CDATA "&amp;#8744;" -- logical or = vee, U+2228 ISOtech --&gt;
-&lt;!ENTITY cap CDATA "&amp;#8745;" -- intersection = cap, U+2229 ISOtech --&gt;
-&lt;!ENTITY cup CDATA "&amp;#8746;" -- union = cup, U+222A ISOtech --&gt;
-&lt;!ENTITY int CDATA "&amp;#8747;" -- integral, U+222B ISOtech --&gt;
-&lt;!ENTITY there4 CDATA "&amp;#8756;" -- therefore, U+2234 ISOtech --&gt;
-&lt;!ENTITY sim CDATA "&amp;#8764;" -- tilde operator = varies with = similar to,
- U+223C ISOtech --&gt;
-&lt;!-- tilde operator is NOT the same character as the tilde, U+007E,
- although the same glyph might be used to represent both --&gt;
-&lt;!ENTITY cong CDATA "&amp;#8773;" -- approximately equal to, U+2245 ISOtech --&gt;
-&lt;!ENTITY asymp CDATA "&amp;#8776;" -- almost equal to = asymptotic to,
- U+2248 ISOamsr --&gt;
-&lt;!ENTITY ne CDATA "&amp;#8800;" -- not equal to, U+2260 ISOtech --&gt;
-&lt;!ENTITY equiv CDATA "&amp;#8801;" -- identical to, U+2261 ISOtech --&gt;
-&lt;!ENTITY le CDATA "&amp;#8804;" -- less-than or equal to, U+2264 ISOtech --&gt;
-&lt;!ENTITY ge CDATA "&amp;#8805;" -- greater-than or equal to,
- 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
- font encoding and is not included. Should it be, for symmetry?
- 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,
- U+2287 ISOtech --&gt;
-&lt;!ENTITY oplus CDATA "&amp;#8853;" -- circled plus = direct sum,
- U+2295 ISOamsb --&gt;
-&lt;!ENTITY otimes CDATA "&amp;#8855;" -- circled times = vector product,
- U+2297 ISOamsb --&gt;
-&lt;!ENTITY perp CDATA "&amp;#8869;" -- up tack = orthogonal to = perpendicular,
- U+22A5 ISOtech --&gt;
-&lt;!ENTITY sdot CDATA "&amp;#8901;" -- dot operator, U+22C5 ISOamsb --&gt;
-&lt;!-- dot operator is NOT the same character as U+00B7 middle dot --&gt;
-
-&lt;!-- Miscellaneous Technical --&gt;
-&lt;!ENTITY lceil CDATA "&amp;#8968;" -- left ceiling = apl upstile,
- U+2308 ISOamsc --&gt;
-&lt;!ENTITY rceil CDATA "&amp;#8969;" -- right ceiling, U+2309 ISOamsc --&gt;
-&lt;!ENTITY lfloor CDATA "&amp;#8970;" -- left floor = apl downstile,
- U+230A ISOamsc --&gt;
-&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'
- 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'
- or U+203A 'single right-pointing angle quotation mark' --&gt;
-
-&lt;!-- Geometric Shapes --&gt;
-&lt;!ENTITY loz CDATA "&amp;#9674;" -- lozenge, U+25CA ISOpub --&gt;
-
-&lt;!-- Miscellaneous Symbols --&gt;
-&lt;!ENTITY spades CDATA "&amp;#9824;" -- black spade suit, U+2660 ISOpub --&gt;
-&lt;!-- black here seems to mean filled as opposed to hollow --&gt;
-&lt;!ENTITY clubs CDATA "&amp;#9827;" -- black club suit = shamrock,
- U+2663 ISOpub --&gt;
-&lt;!ENTITY hearts CDATA "&amp;#9829;" -- black heart suit = valentine,
- U+2665 ISOpub --&gt;
-&lt;!ENTITY diams CDATA "&amp;#9830;" -- black diamond suit, U+2666 ISOpub --&gt;
-</pre>
-</div>
-
-<h2><a name="h-24.4">24.4</a> <a name="misc">Character entity references for
-markup-significant and internationalization characters</a></h2>
-
-<p>The character entity references in this section are for escaping
-markup-significant characters (these are the same as those in HTML 2.0 and
-3.2), for denoting spaces and dashes. Other characters in this section apply to
-internationalization issues such as the disambiguation of bidirectional text
-(see the section on <a href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#bidirection">bidirectional
-text</a> for details).</p>
-
-<p>Entities have also been added for the remaining characters occurring in
-CP-1252 which do not occur in the HTMLlat1 or HTMLsymbol entity sets. These all
-occur in the 128 to 159 range within the CP-1252 charset. These entities permit
-the characters to be denoted in a platform-independent manner.</p>
-
-<p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
-other means. Display of glyphs for these characters may be obtained by being
-able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
-by other means, such as internally mapping the listed entities, numeric
-character references, and characters to the appropriate position in some font
-that contains the requisite glyphs.</p>
-
-<h3><a name="h-24.4.1">24.4.1</a> The list of characters</h3>
-
-<div class="dtd-fragment">
-<pre>&lt;!-- Special characters for HTML --&gt;
-
-&lt;!-- Character entity set. Typical invocation:
- &lt;!ENTITY % HTMLspecial PUBLIC
- "-//W3C//ENTITIES Special//EN//HTML"&gt;
- %HTMLspecial; --&gt;
-
-&lt;!-- Portions © International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
---&gt;
-
-&lt;!-- Relevant ISO entity set is given unless names are newly introduced.
- New names (i.e., not in ISO 8879 list) do not clash with any
- 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.
-
---&gt;
-
-&lt;!-- C0 Controls and Basic Latin --&gt;
-&lt;!ENTITY quot CDATA "&amp;#34;" -- quotation mark = APL quote,
- U+0022 ISOnum --&gt;
-&lt;!ENTITY amp CDATA "&amp;#38;" -- ampersand, U+0026 ISOnum --&gt;
-&lt;!ENTITY lt CDATA "&amp;#60;" -- less-than sign, U+003C ISOnum --&gt;
-&lt;!ENTITY gt CDATA "&amp;#62;" -- greater-than sign, U+003E ISOnum --&gt;
-
-&lt;!-- Latin Extended-A --&gt;
-&lt;!ENTITY OElig CDATA "&amp;#338;" -- latin capital ligature OE,
- U+0152 ISOlat2 --&gt;
-&lt;!ENTITY oelig CDATA "&amp;#339;" -- latin small ligature oe, U+0153 ISOlat2 --&gt;
-&lt;!-- ligature is a misnomer, this is a separate character in some languages --&gt;
-&lt;!ENTITY Scaron CDATA "&amp;#352;" -- latin capital letter S with caron,
- U+0160 ISOlat2 --&gt;
-&lt;!ENTITY scaron CDATA "&amp;#353;" -- latin small letter s with caron,
- U+0161 ISOlat2 --&gt;
-&lt;!ENTITY Yuml CDATA "&amp;#376;" -- latin capital letter Y with diaeresis,
- U+0178 ISOlat2 --&gt;
-
-&lt;!-- Spacing Modifier Letters --&gt;
-&lt;!ENTITY circ CDATA "&amp;#710;" -- modifier letter circumflex accent,
- U+02C6 ISOpub --&gt;
-&lt;!ENTITY tilde CDATA "&amp;#732;" -- small tilde, U+02DC ISOdia --&gt;
-
-&lt;!-- General Punctuation --&gt;
-&lt;!ENTITY ensp CDATA "&amp;#8194;" -- en space, U+2002 ISOpub --&gt;
-&lt;!ENTITY emsp CDATA "&amp;#8195;" -- em space, U+2003 ISOpub --&gt;
-&lt;!ENTITY thinsp CDATA "&amp;#8201;" -- thin space, U+2009 ISOpub --&gt;
-&lt;!ENTITY zwnj CDATA "&amp;#8204;" -- zero width non-joiner,
- U+200C NEW RFC 2070 --&gt;
-&lt;!ENTITY zwj CDATA "&amp;#8205;" -- zero width joiner, U+200D NEW RFC 2070 --&gt;
-&lt;!ENTITY lrm CDATA "&amp;#8206;" -- left-to-right mark, U+200E NEW RFC 2070 --&gt;
-&lt;!ENTITY rlm CDATA "&amp;#8207;" -- right-to-left mark, U+200F NEW RFC 2070 --&gt;
-&lt;!ENTITY ndash CDATA "&amp;#8211;" -- en dash, U+2013 ISOpub --&gt;
-&lt;!ENTITY mdash CDATA "&amp;#8212;" -- em dash, U+2014 ISOpub --&gt;
-&lt;!ENTITY lsquo CDATA "&amp;#8216;" -- left single quotation mark,
- U+2018 ISOnum --&gt;
-&lt;!ENTITY rsquo CDATA "&amp;#8217;" -- right single quotation mark,
- U+2019 ISOnum --&gt;
-&lt;!ENTITY sbquo CDATA "&amp;#8218;" -- single low-9 quotation mark, U+201A NEW --&gt;
-&lt;!ENTITY ldquo CDATA "&amp;#8220;" -- left double quotation mark,
- U+201C ISOnum --&gt;
-&lt;!ENTITY rdquo CDATA "&amp;#8221;" -- right double quotation mark,
- U+201D ISOnum --&gt;
-&lt;!ENTITY bdquo CDATA "&amp;#8222;" -- double low-9 quotation mark, U+201E NEW --&gt;
-&lt;!ENTITY dagger CDATA "&amp;#8224;" -- dagger, U+2020 ISOpub --&gt;
-&lt;!ENTITY Dagger CDATA "&amp;#8225;" -- double dagger, U+2021 ISOpub --&gt;
-&lt;!ENTITY permil CDATA "&amp;#8240;" -- per mille sign, U+2030 ISOtech --&gt;
-&lt;!ENTITY lsaquo CDATA "&amp;#8249;" -- single left-pointing angle quotation mark,
- U+2039 ISO proposed --&gt;
-&lt;!-- lsaquo is proposed but not yet ISO standardized --&gt;
-&lt;!ENTITY rsaquo CDATA "&amp;#8250;" -- single right-pointing angle quotation mark,
- U+203A ISO proposed --&gt;
-&lt;!-- rsaquo is proposed but not yet ISO standardized --&gt;
-&lt;!ENTITY euro CDATA "&amp;#8364;" -- euro sign, U+20AC NEW --&gt;
-</pre>
-</div>
-
-<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>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Character entity references in HTML 4</title>
+
+<link rel="previous" href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
+<link rel="next" href="http://www.w3.org/TR/REC-html40/appendix/changes.html">
+<link rel="contents" href="http://www.w3.org/TR/REC-html40/cover.html#toc">
+<link rel="stylesheet" type="text/css" href="entities.html_files/W3C-REC.css">
+<link rel="STYLESHEET" href="entities.html_files/default.css" type="text/css"></head>
+
+<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>
+
+<hr></div>
+
+<h1 align="center"><a name="h-24">24</a> <a name="entities">Character entity
+references in HTML 4</a></h1>
+
+<div class="subtoc">
+<p><strong>Contents</strong></p>
+
+<ol>
+<li><a class="tocxref" href="#h-24.1">Introduction to character entity
+references</a></li>
+
+<li><a class="tocxref" href="#h-24.2">Character entity references for ISO
+8859-1 characters</a>
+
+<ol>
+<li><a class="tocxref" href="#h-24.2.1">The list of characters</a></li>
+</ol>
+</li>
+
+<li><a class="tocxref" href="#h-24.3">Character entity references for symbols,
+mathematical symbols, and Greek letters</a>
+
+<ol>
+<li><a class="tocxref" href="#h-24.3.1">The list of characters</a></li>
+</ol>
+</li>
+
+<li><a class="tocxref" href="#h-24.4">Character entity references for
+markup-significant and internationalization characters</a>
+
+<ol>
+<li><a class="tocxref" href="#h-24.4.1">The list of characters</a></li>
+</ol>
+</li>
+</ol>
+</div>
+
+<h2><a name="h-24.1">24.1</a> Introduction to character entity references</h2>
+
+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>
+
+<p>This version of HTML supports several sets of character entity
+references:</p>
+
+<ul>
+<li><a href="#iso-88591">ISO 8859-1 (Latin-1) characters</a> In accordance with
+section 14 of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-RFC1866" class="informref">[RFC1866]</a>, the set of Latin-1 entities has been extended by
+this specification to cover the whole right part of ISO-8859-1 (all code
+positions with the high-order bit set), including the already commonly used
+&amp;nbsp;, &amp;copy; and &amp;reg;. The names of the entities are taken from
+the appendices of SGML (defined in <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO8879" class="normref">[ISO8879]</a>).</li>
+
+<li><a href="#sym">symbols, mathematical symbols, and Greek letters</a>. These
+characters may be represented by glyphs in the Adobe font "Symbol".</li>
+
+<li><a href="#misc">markup-significant and internationalization characters</a>
+(e.g., for bidirectional text).</li>
+</ul>
+
+<p>The following sections present the complete lists of character entity
+references. Although, by convention, <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> the comments
+following each entry are usually written with uppercase letters, we have
+converted them to lowercase in this specification for reasons of
+readability.</p>
+
+<h2><a name="h-24.2">24.2</a> <a name="iso-88591">Character entity references
+for ISO 8859-1 characters</a></h2>
+
+<p>The character entity references in this section produce characters whose
+numeric equivalents should already be supported by conforming HTML 2.0 user
+agents. Thus, the character entity reference &amp;divide; is a more convenient
+form than &amp;#247; for obtaining the division sign (÷).</p>
+
+<p>To support these named entities, user agents need only recognize the entity
+names and convert them to characters that lie within the repertoire of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO88591" class="normref">
+[ISO88591]</a>.</p>
+
+<p>Character 65533 (FFFD hexadecimal) is the last valid character in UCS-2.
+65534 (FFFE hexadecimal) is unassigned and reserved as the byte-swapped version
+of ZERO WIDTH NON-BREAKING SPACE for byte-order detection purposes. 65535 (FFFF
+hexadecimal) is unassigned.</p>
+
+<h3><a name="h-24.2.1">24.2.1</a> The list of characters</h3>
+
+<div class="dtd-fragment">
+<pre>&lt;!-- Portions © International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+--&gt;
+&lt;!-- Character entity set. Typical invocation:
+ &lt;!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1//EN//HTML"&gt;
+ %HTMLlat1;
+--&gt;
+
+&lt;!ENTITY nbsp CDATA "&amp;#160;" -- no-break space = non-breaking space,
+ U+00A0 ISOnum --&gt;
+&lt;!ENTITY iexcl CDATA "&amp;#161;" -- inverted exclamation mark, U+00A1 ISOnum --&gt;
+&lt;!ENTITY cent CDATA "&amp;#162;" -- cent sign, U+00A2 ISOnum --&gt;
+&lt;!ENTITY pound CDATA "&amp;#163;" -- pound sign, U+00A3 ISOnum --&gt;
+&lt;!ENTITY curren CDATA "&amp;#164;" -- currency sign, U+00A4 ISOnum --&gt;
+&lt;!ENTITY yen CDATA "&amp;#165;" -- yen sign = yuan sign, U+00A5 ISOnum --&gt;
+&lt;!ENTITY brvbar CDATA "&amp;#166;" -- broken bar = broken vertical bar,
+ U+00A6 ISOnum --&gt;
+&lt;!ENTITY sect CDATA "&amp;#167;" -- section sign, U+00A7 ISOnum --&gt;
+&lt;!ENTITY uml CDATA "&amp;#168;" -- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia --&gt;
+&lt;!ENTITY copy CDATA "&amp;#169;" -- copyright sign, U+00A9 ISOnum --&gt;
+&lt;!ENTITY ordf CDATA "&amp;#170;" -- feminine ordinal indicator, U+00AA ISOnum --&gt;
+&lt;!ENTITY laquo CDATA "&amp;#171;" -- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum --&gt;
+&lt;!ENTITY not CDATA "&amp;#172;" -- not sign, U+00AC ISOnum --&gt;
+&lt;!ENTITY shy CDATA "&amp;#173;" -- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum --&gt;
+&lt;!ENTITY reg CDATA "&amp;#174;" -- registered sign = registered trade mark sign,
+ U+00AE ISOnum --&gt;
+&lt;!ENTITY macr CDATA "&amp;#175;" -- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia --&gt;
+&lt;!ENTITY deg CDATA "&amp;#176;" -- degree sign, U+00B0 ISOnum --&gt;
+&lt;!ENTITY plusmn CDATA "&amp;#177;" -- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum --&gt;
+&lt;!ENTITY sup2 CDATA "&amp;#178;" -- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum --&gt;
+&lt;!ENTITY sup3 CDATA "&amp;#179;" -- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum --&gt;
+&lt;!ENTITY acute CDATA "&amp;#180;" -- acute accent = spacing acute,
+ U+00B4 ISOdia --&gt;
+&lt;!ENTITY micro CDATA "&amp;#181;" -- micro sign, U+00B5 ISOnum --&gt;
+&lt;!ENTITY para CDATA "&amp;#182;" -- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum --&gt;
+&lt;!ENTITY middot CDATA "&amp;#183;" -- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum --&gt;
+&lt;!ENTITY cedil CDATA "&amp;#184;" -- cedilla = spacing cedilla, U+00B8 ISOdia --&gt;
+&lt;!ENTITY sup1 CDATA "&amp;#185;" -- superscript one = superscript digit one,
+ U+00B9 ISOnum --&gt;
+&lt;!ENTITY ordm CDATA "&amp;#186;" -- masculine ordinal indicator,
+ U+00BA ISOnum --&gt;
+&lt;!ENTITY raquo CDATA "&amp;#187;" -- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum --&gt;
+&lt;!ENTITY frac14 CDATA "&amp;#188;" -- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum --&gt;
+&lt;!ENTITY frac12 CDATA "&amp;#189;" -- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum --&gt;
+&lt;!ENTITY frac34 CDATA "&amp;#190;" -- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum --&gt;
+&lt;!ENTITY iquest CDATA "&amp;#191;" -- inverted question mark
+ = turned question mark, U+00BF ISOnum --&gt;
+&lt;!ENTITY Agrave CDATA "&amp;#192;" -- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 --&gt;
+&lt;!ENTITY Aacute CDATA "&amp;#193;" -- latin capital letter A with acute,
+ U+00C1 ISOlat1 --&gt;
+&lt;!ENTITY Acirc CDATA "&amp;#194;" -- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 --&gt;
+&lt;!ENTITY Atilde CDATA "&amp;#195;" -- latin capital letter A with tilde,
+ U+00C3 ISOlat1 --&gt;
+&lt;!ENTITY Auml CDATA "&amp;#196;" -- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 --&gt;
+&lt;!ENTITY Aring CDATA "&amp;#197;" -- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 --&gt;
+&lt;!ENTITY AElig CDATA "&amp;#198;" -- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 --&gt;
+&lt;!ENTITY Ccedil CDATA "&amp;#199;" -- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 --&gt;
+&lt;!ENTITY Egrave CDATA "&amp;#200;" -- latin capital letter E with grave,
+ U+00C8 ISOlat1 --&gt;
+&lt;!ENTITY Eacute CDATA "&amp;#201;" -- latin capital letter E with acute,
+ U+00C9 ISOlat1 --&gt;
+&lt;!ENTITY Ecirc CDATA "&amp;#202;" -- latin capital letter E with circumflex,
+ U+00CA ISOlat1 --&gt;
+&lt;!ENTITY Euml CDATA "&amp;#203;" -- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 --&gt;
+&lt;!ENTITY Igrave CDATA "&amp;#204;" -- latin capital letter I with grave,
+ U+00CC ISOlat1 --&gt;
+&lt;!ENTITY Iacute CDATA "&amp;#205;" -- latin capital letter I with acute,
+ U+00CD ISOlat1 --&gt;
+&lt;!ENTITY Icirc CDATA "&amp;#206;" -- latin capital letter I with circumflex,
+ U+00CE ISOlat1 --&gt;
+&lt;!ENTITY Iuml CDATA "&amp;#207;" -- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 --&gt;
+&lt;!ENTITY ETH CDATA "&amp;#208;" -- latin capital letter ETH, U+00D0 ISOlat1 --&gt;
+&lt;!ENTITY Ntilde CDATA "&amp;#209;" -- latin capital letter N with tilde,
+ U+00D1 ISOlat1 --&gt;
+&lt;!ENTITY Ograve CDATA "&amp;#210;" -- latin capital letter O with grave,
+ U+00D2 ISOlat1 --&gt;
+&lt;!ENTITY Oacute CDATA "&amp;#211;" -- latin capital letter O with acute,
+ U+00D3 ISOlat1 --&gt;
+&lt;!ENTITY Ocirc CDATA "&amp;#212;" -- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 --&gt;
+&lt;!ENTITY Otilde CDATA "&amp;#213;" -- latin capital letter O with tilde,
+ U+00D5 ISOlat1 --&gt;
+&lt;!ENTITY Ouml CDATA "&amp;#214;" -- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 --&gt;
+&lt;!ENTITY times CDATA "&amp;#215;" -- multiplication sign, U+00D7 ISOnum --&gt;
+&lt;!ENTITY Oslash CDATA "&amp;#216;" -- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 --&gt;
+&lt;!ENTITY Ugrave CDATA "&amp;#217;" -- latin capital letter U with grave,
+ U+00D9 ISOlat1 --&gt;
+&lt;!ENTITY Uacute CDATA "&amp;#218;" -- latin capital letter U with acute,
+ U+00DA ISOlat1 --&gt;
+&lt;!ENTITY Ucirc CDATA "&amp;#219;" -- latin capital letter U with circumflex,
+ U+00DB ISOlat1 --&gt;
+&lt;!ENTITY Uuml CDATA "&amp;#220;" -- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 --&gt;
+&lt;!ENTITY Yacute CDATA "&amp;#221;" -- latin capital letter Y with acute,
+ U+00DD ISOlat1 --&gt;
+&lt;!ENTITY THORN CDATA "&amp;#222;" -- latin capital letter THORN,
+ U+00DE ISOlat1 --&gt;
+&lt;!ENTITY szlig CDATA "&amp;#223;" -- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 --&gt;
+&lt;!ENTITY agrave CDATA "&amp;#224;" -- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 --&gt;
+&lt;!ENTITY aacute CDATA "&amp;#225;" -- latin small letter a with acute,
+ U+00E1 ISOlat1 --&gt;
+&lt;!ENTITY acirc CDATA "&amp;#226;" -- latin small letter a with circumflex,
+ U+00E2 ISOlat1 --&gt;
+&lt;!ENTITY atilde CDATA "&amp;#227;" -- latin small letter a with tilde,
+ U+00E3 ISOlat1 --&gt;
+&lt;!ENTITY auml CDATA "&amp;#228;" -- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 --&gt;
+&lt;!ENTITY aring CDATA "&amp;#229;" -- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 --&gt;
+&lt;!ENTITY aelig CDATA "&amp;#230;" -- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 --&gt;
+&lt;!ENTITY ccedil CDATA "&amp;#231;" -- latin small letter c with cedilla,
+ U+00E7 ISOlat1 --&gt;
+&lt;!ENTITY egrave CDATA "&amp;#232;" -- latin small letter e with grave,
+ U+00E8 ISOlat1 --&gt;
+&lt;!ENTITY eacute CDATA "&amp;#233;" -- latin small letter e with acute,
+ U+00E9 ISOlat1 --&gt;
+&lt;!ENTITY ecirc CDATA "&amp;#234;" -- latin small letter e with circumflex,
+ U+00EA ISOlat1 --&gt;
+&lt;!ENTITY euml CDATA "&amp;#235;" -- latin small letter e with diaeresis,
+ U+00EB ISOlat1 --&gt;
+&lt;!ENTITY igrave CDATA "&amp;#236;" -- latin small letter i with grave,
+ U+00EC ISOlat1 --&gt;
+&lt;!ENTITY iacute CDATA "&amp;#237;" -- latin small letter i with acute,
+ U+00ED ISOlat1 --&gt;
+&lt;!ENTITY icirc CDATA "&amp;#238;" -- latin small letter i with circumflex,
+ U+00EE ISOlat1 --&gt;
+&lt;!ENTITY iuml CDATA "&amp;#239;" -- latin small letter i with diaeresis,
+ U+00EF ISOlat1 --&gt;
+&lt;!ENTITY eth CDATA "&amp;#240;" -- latin small letter eth, U+00F0 ISOlat1 --&gt;
+&lt;!ENTITY ntilde CDATA "&amp;#241;" -- latin small letter n with tilde,
+ U+00F1 ISOlat1 --&gt;
+&lt;!ENTITY ograve CDATA "&amp;#242;" -- latin small letter o with grave,
+ U+00F2 ISOlat1 --&gt;
+&lt;!ENTITY oacute CDATA "&amp;#243;" -- latin small letter o with acute,
+ U+00F3 ISOlat1 --&gt;
+&lt;!ENTITY ocirc CDATA "&amp;#244;" -- latin small letter o with circumflex,
+ U+00F4 ISOlat1 --&gt;
+&lt;!ENTITY otilde CDATA "&amp;#245;" -- latin small letter o with tilde,
+ U+00F5 ISOlat1 --&gt;
+&lt;!ENTITY ouml CDATA "&amp;#246;" -- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 --&gt;
+&lt;!ENTITY divide CDATA "&amp;#247;" -- division sign, U+00F7 ISOnum --&gt;
+&lt;!ENTITY oslash CDATA "&amp;#248;" -- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 --&gt;
+&lt;!ENTITY ugrave CDATA "&amp;#249;" -- latin small letter u with grave,
+ U+00F9 ISOlat1 --&gt;
+&lt;!ENTITY uacute CDATA "&amp;#250;" -- latin small letter u with acute,
+ U+00FA ISOlat1 --&gt;
+&lt;!ENTITY ucirc CDATA "&amp;#251;" -- latin small letter u with circumflex,
+ U+00FB ISOlat1 --&gt;
+&lt;!ENTITY uuml CDATA "&amp;#252;" -- latin small letter u with diaeresis,
+ U+00FC ISOlat1 --&gt;
+&lt;!ENTITY yacute CDATA "&amp;#253;" -- latin small letter y with acute,
+ U+00FD ISOlat1 --&gt;
+&lt;!ENTITY thorn CDATA "&amp;#254;" -- latin small letter thorn,
+ U+00FE ISOlat1 --&gt;
+&lt;!ENTITY yuml CDATA "&amp;#255;" -- latin small letter y with diaeresis,
+ U+00FF ISOlat1 --&gt;
+</pre>
+</div>
+
+<h2><a name="h-24.3">24.3</a> <a name="sym">Character entity references for
+symbols, mathematical symbols, and Greek letters</a></h2>
+
+<p>The character entity references in this section produce characters that may
+be represented by glyphs in the widely available Adobe Symbol font, including
+Greek characters, various bracketing symbols, and a selection of mathematical
+operators such as gradient, product, and summation symbols.</p>
+
+<p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
+other means. Display of glyphs for these characters may be obtained by being
+able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
+by other means, such as internally mapping the listed entities, numeric
+character references, and characters to the appropriate position in some font
+that contains the requisite glyphs.</p>
+
+<div class="note">
+<p><em><strong>When to use Greek entities.</strong> This entity set contains
+all the letters used in modern Greek. However, it does not include Greek
+punctuation, precomposed accented characters nor the non-spacing accents
+(tonos, dialytika) required to compose them. There are no archaic letters,
+Coptic-unique letters, or precomposed letters for Polytonic Greek. The entities
+defined here are not intended for the representation of modern Greek text and
+would not be an efficient representation; rather, they are intended for
+occasional Greek letters used in technical and mathematical works.</em></p>
+</div>
+
+<h3><a name="h-24.3.1">24.3.1</a> The list of characters</h3>
+
+<div class="dtd-fragment">
+<pre>&lt;!-- Mathematical, Greek and Symbolic characters for HTML --&gt;
+
+&lt;!-- Character entity set. Typical invocation:
+ &lt;!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols//EN//HTML"&gt;
+ %HTMLsymbol; --&gt;
+
+&lt;!-- Portions © International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+--&gt;
+
+&lt;!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ 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.
+
+--&gt;
+
+&lt;!-- Latin Extended-B --&gt;
+&lt;!ENTITY fnof CDATA "&amp;#402;" -- latin small f with hook = function
+ = florin, U+0192 ISOtech --&gt;
+
+&lt;!-- Greek --&gt;
+&lt;!ENTITY Alpha CDATA "&amp;#913;" -- greek capital letter alpha, U+0391 --&gt;
+&lt;!ENTITY Beta CDATA "&amp;#914;" -- greek capital letter beta, U+0392 --&gt;
+&lt;!ENTITY Gamma CDATA "&amp;#915;" -- greek capital letter gamma,
+ U+0393 ISOgrk3 --&gt;
+&lt;!ENTITY Delta CDATA "&amp;#916;" -- greek capital letter delta,
+ U+0394 ISOgrk3 --&gt;
+&lt;!ENTITY Epsilon CDATA "&amp;#917;" -- greek capital letter epsilon, U+0395 --&gt;
+&lt;!ENTITY Zeta CDATA "&amp;#918;" -- greek capital letter zeta, U+0396 --&gt;
+&lt;!ENTITY Eta CDATA "&amp;#919;" -- greek capital letter eta, U+0397 --&gt;
+&lt;!ENTITY Theta CDATA "&amp;#920;" -- greek capital letter theta,
+ U+0398 ISOgrk3 --&gt;
+&lt;!ENTITY Iota CDATA "&amp;#921;" -- greek capital letter iota, U+0399 --&gt;
+&lt;!ENTITY Kappa CDATA "&amp;#922;" -- greek capital letter kappa, U+039A --&gt;
+&lt;!ENTITY Lambda CDATA "&amp;#923;" -- greek capital letter lambda,
+ U+039B ISOgrk3 --&gt;
+&lt;!ENTITY Mu CDATA "&amp;#924;" -- greek capital letter mu, U+039C --&gt;
+&lt;!ENTITY Nu CDATA "&amp;#925;" -- greek capital letter nu, U+039D --&gt;
+&lt;!ENTITY Xi CDATA "&amp;#926;" -- greek capital letter xi, U+039E ISOgrk3 --&gt;
+&lt;!ENTITY Omicron CDATA "&amp;#927;" -- greek capital letter omicron, U+039F --&gt;
+&lt;!ENTITY Pi CDATA "&amp;#928;" -- greek capital letter pi, U+03A0 ISOgrk3 --&gt;
+&lt;!ENTITY Rho CDATA "&amp;#929;" -- greek capital letter rho, U+03A1 --&gt;
+&lt;!-- there is no Sigmaf, and no U+03A2 character either --&gt;
+&lt;!ENTITY Sigma CDATA "&amp;#931;" -- greek capital letter sigma,
+ U+03A3 ISOgrk3 --&gt;
+&lt;!ENTITY Tau CDATA "&amp;#932;" -- greek capital letter tau, U+03A4 --&gt;
+&lt;!ENTITY Upsilon CDATA "&amp;#933;" -- greek capital letter upsilon,
+ U+03A5 ISOgrk3 --&gt;
+&lt;!ENTITY Phi CDATA "&amp;#934;" -- greek capital letter phi,
+ U+03A6 ISOgrk3 --&gt;
+&lt;!ENTITY Chi CDATA "&amp;#935;" -- greek capital letter chi, U+03A7 --&gt;
+&lt;!ENTITY Psi CDATA "&amp;#936;" -- greek capital letter psi,
+ U+03A8 ISOgrk3 --&gt;
+&lt;!ENTITY Omega CDATA "&amp;#937;" -- greek capital letter omega,
+ U+03A9 ISOgrk3 --&gt;
+
+&lt;!ENTITY alpha CDATA "&amp;#945;" -- greek small letter alpha,
+ U+03B1 ISOgrk3 --&gt;
+&lt;!ENTITY beta CDATA "&amp;#946;" -- greek small letter beta, U+03B2 ISOgrk3 --&gt;
+&lt;!ENTITY gamma CDATA "&amp;#947;" -- greek small letter gamma,
+ U+03B3 ISOgrk3 --&gt;
+&lt;!ENTITY delta CDATA "&amp;#948;" -- greek small letter delta,
+ U+03B4 ISOgrk3 --&gt;
+&lt;!ENTITY epsilon CDATA "&amp;#949;" -- greek small letter epsilon,
+ U+03B5 ISOgrk3 --&gt;
+&lt;!ENTITY zeta CDATA "&amp;#950;" -- greek small letter zeta, U+03B6 ISOgrk3 --&gt;
+&lt;!ENTITY eta CDATA "&amp;#951;" -- greek small letter eta, U+03B7 ISOgrk3 --&gt;
+&lt;!ENTITY theta CDATA "&amp;#952;" -- greek small letter theta,
+ U+03B8 ISOgrk3 --&gt;
+&lt;!ENTITY iota CDATA "&amp;#953;" -- greek small letter iota, U+03B9 ISOgrk3 --&gt;
+&lt;!ENTITY kappa CDATA "&amp;#954;" -- greek small letter kappa,
+ U+03BA ISOgrk3 --&gt;
+&lt;!ENTITY lambda CDATA "&amp;#955;" -- greek small letter lambda,
+ U+03BB ISOgrk3 --&gt;
+&lt;!ENTITY mu CDATA "&amp;#956;" -- greek small letter mu, U+03BC ISOgrk3 --&gt;
+&lt;!ENTITY nu CDATA "&amp;#957;" -- greek small letter nu, U+03BD ISOgrk3 --&gt;
+&lt;!ENTITY xi CDATA "&amp;#958;" -- greek small letter xi, U+03BE ISOgrk3 --&gt;
+&lt;!ENTITY omicron CDATA "&amp;#959;" -- greek small letter omicron, U+03BF NEW --&gt;
+&lt;!ENTITY pi CDATA "&amp;#960;" -- greek small letter pi, U+03C0 ISOgrk3 --&gt;
+&lt;!ENTITY rho CDATA "&amp;#961;" -- greek small letter rho, U+03C1 ISOgrk3 --&gt;
+&lt;!ENTITY sigmaf CDATA "&amp;#962;" -- greek small letter final sigma,
+ U+03C2 ISOgrk3 --&gt;
+&lt;!ENTITY sigma CDATA "&amp;#963;" -- greek small letter sigma,
+ U+03C3 ISOgrk3 --&gt;
+&lt;!ENTITY tau CDATA "&amp;#964;" -- greek small letter tau, U+03C4 ISOgrk3 --&gt;
+&lt;!ENTITY upsilon CDATA "&amp;#965;" -- greek small letter upsilon,
+ U+03C5 ISOgrk3 --&gt;
+&lt;!ENTITY phi CDATA "&amp;#966;" -- greek small letter phi, U+03C6 ISOgrk3 --&gt;
+&lt;!ENTITY chi CDATA "&amp;#967;" -- greek small letter chi, U+03C7 ISOgrk3 --&gt;
+&lt;!ENTITY psi CDATA "&amp;#968;" -- greek small letter psi, U+03C8 ISOgrk3 --&gt;
+&lt;!ENTITY omega CDATA "&amp;#969;" -- greek small letter omega,
+ U+03C9 ISOgrk3 --&gt;
+&lt;!ENTITY thetasym CDATA "&amp;#977;" -- greek small letter theta symbol,
+ U+03D1 NEW --&gt;
+&lt;!ENTITY upsih CDATA "&amp;#978;" -- greek upsilon with hook symbol,
+ U+03D2 NEW --&gt;
+&lt;!ENTITY piv CDATA "&amp;#982;" -- greek pi symbol, U+03D6 ISOgrk3 --&gt;
+
+&lt;!-- General Punctuation --&gt;
+&lt;!ENTITY bull CDATA "&amp;#8226;" -- bullet = black small circle,
+ U+2022 ISOpub --&gt;
+&lt;!-- bullet is NOT the same as bullet operator, U+2219 --&gt;
+&lt;!ENTITY hellip CDATA "&amp;#8230;" -- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub --&gt;
+&lt;!ENTITY prime CDATA "&amp;#8242;" -- prime = minutes = feet, U+2032 ISOtech --&gt;
+&lt;!ENTITY Prime CDATA "&amp;#8243;" -- double prime = seconds = inches,
+ U+2033 ISOtech --&gt;
+&lt;!ENTITY oline CDATA "&amp;#8254;" -- overline = spacing overscore,
+ U+203E NEW --&gt;
+&lt;!ENTITY frasl CDATA "&amp;#8260;" -- fraction slash, U+2044 NEW --&gt;
+
+&lt;!-- Letterlike Symbols --&gt;
+&lt;!ENTITY weierp CDATA "&amp;#8472;" -- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso --&gt;
+&lt;!ENTITY image CDATA "&amp;#8465;" -- blackletter capital I = imaginary part,
+ U+2111 ISOamso --&gt;
+&lt;!ENTITY real CDATA "&amp;#8476;" -- blackletter capital R = real part symbol,
+ U+211C ISOamso --&gt;
+&lt;!ENTITY trade CDATA "&amp;#8482;" -- trade mark sign, U+2122 ISOnum --&gt;
+&lt;!ENTITY alefsym CDATA "&amp;#8501;" -- alef symbol = first transfinite cardinal,
+ U+2135 NEW --&gt;
+&lt;!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters --&gt;
+
+&lt;!-- Arrows --&gt;
+&lt;!ENTITY larr CDATA "&amp;#8592;" -- leftwards arrow, U+2190 ISOnum --&gt;
+&lt;!ENTITY uarr CDATA "&amp;#8593;" -- upwards arrow, U+2191 ISOnum--&gt;
+&lt;!ENTITY rarr CDATA "&amp;#8594;" -- rightwards arrow, U+2192 ISOnum --&gt;
+&lt;!ENTITY darr CDATA "&amp;#8595;" -- downwards arrow, U+2193 ISOnum --&gt;
+&lt;!ENTITY harr CDATA "&amp;#8596;" -- left right arrow, U+2194 ISOamsa --&gt;
+&lt;!ENTITY crarr CDATA "&amp;#8629;" -- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW --&gt;
+&lt;!ENTITY lArr CDATA "&amp;#8656;" -- leftwards double arrow, U+21D0 ISOtech --&gt;
+&lt;!-- ISO 10646 does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So ? lArr can
+ be used for 'is implied by' as ISOtech suggests --&gt;
+&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
+ 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;
+&lt;!ENTITY hArr CDATA "&amp;#8660;" -- left right double arrow,
+ U+21D4 ISOamsa --&gt;
+
+&lt;!-- Mathematical Operators --&gt;
+&lt;!ENTITY forall CDATA "&amp;#8704;" -- for all, U+2200 ISOtech --&gt;
+&lt;!ENTITY part CDATA "&amp;#8706;" -- partial differential, U+2202 ISOtech --&gt;
+&lt;!ENTITY exist CDATA "&amp;#8707;" -- there exists, U+2203 ISOtech --&gt;
+&lt;!ENTITY empty CDATA "&amp;#8709;" -- empty set = null set = diameter,
+ U+2205 ISOamso --&gt;
+&lt;!ENTITY nabla CDATA "&amp;#8711;" -- nabla = backward difference,
+ U+2207 ISOtech --&gt;
+&lt;!ENTITY isin CDATA "&amp;#8712;" -- element of, U+2208 ISOtech --&gt;
+&lt;!ENTITY notin CDATA "&amp;#8713;" -- not an element of, U+2209 ISOtech --&gt;
+&lt;!ENTITY ni CDATA "&amp;#8715;" -- contains as member, U+220B ISOtech --&gt;
+&lt;!-- should there be a more memorable name than 'ni'? --&gt;
+&lt;!ENTITY prod CDATA "&amp;#8719;" -- n-ary product = product sign,
+ U+220F ISOamsb --&gt;
+&lt;!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both --&gt;
+&lt;!ENTITY sum CDATA "&amp;#8721;" -- n-ary sumation, U+2211 ISOamsb --&gt;
+&lt;!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both --&gt;
+&lt;!ENTITY minus CDATA "&amp;#8722;" -- minus sign, U+2212 ISOtech --&gt;
+&lt;!ENTITY lowast CDATA "&amp;#8727;" -- asterisk operator, U+2217 ISOtech --&gt;
+&lt;!ENTITY radic CDATA "&amp;#8730;" -- square root = radical sign,
+ U+221A ISOtech --&gt;
+&lt;!ENTITY prop CDATA "&amp;#8733;" -- proportional to, U+221D ISOtech --&gt;
+&lt;!ENTITY infin CDATA "&amp;#8734;" -- infinity, U+221E ISOtech --&gt;
+&lt;!ENTITY ang CDATA "&amp;#8736;" -- angle, U+2220 ISOamso --&gt;
+&lt;!ENTITY and CDATA "&amp;#8743;" -- logical and = wedge, U+2227 ISOtech --&gt;
+&lt;!ENTITY or CDATA "&amp;#8744;" -- logical or = vee, U+2228 ISOtech --&gt;
+&lt;!ENTITY cap CDATA "&amp;#8745;" -- intersection = cap, U+2229 ISOtech --&gt;
+&lt;!ENTITY cup CDATA "&amp;#8746;" -- union = cup, U+222A ISOtech --&gt;
+&lt;!ENTITY int CDATA "&amp;#8747;" -- integral, U+222B ISOtech --&gt;
+&lt;!ENTITY there4 CDATA "&amp;#8756;" -- therefore, U+2234 ISOtech --&gt;
+&lt;!ENTITY sim CDATA "&amp;#8764;" -- tilde operator = varies with = similar to,
+ U+223C ISOtech --&gt;
+&lt;!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both --&gt;
+&lt;!ENTITY cong CDATA "&amp;#8773;" -- approximately equal to, U+2245 ISOtech --&gt;
+&lt;!ENTITY asymp CDATA "&amp;#8776;" -- almost equal to = asymptotic to,
+ U+2248 ISOamsr --&gt;
+&lt;!ENTITY ne CDATA "&amp;#8800;" -- not equal to, U+2260 ISOtech --&gt;
+&lt;!ENTITY equiv CDATA "&amp;#8801;" -- identical to, U+2261 ISOtech --&gt;
+&lt;!ENTITY le CDATA "&amp;#8804;" -- less-than or equal to, U+2264 ISOtech --&gt;
+&lt;!ENTITY ge CDATA "&amp;#8805;" -- greater-than or equal to,
+ 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
+ font encoding and is not included. Should it be, for symmetry?
+ 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,
+ U+2287 ISOtech --&gt;
+&lt;!ENTITY oplus CDATA "&amp;#8853;" -- circled plus = direct sum,
+ U+2295 ISOamsb --&gt;
+&lt;!ENTITY otimes CDATA "&amp;#8855;" -- circled times = vector product,
+ U+2297 ISOamsb --&gt;
+&lt;!ENTITY perp CDATA "&amp;#8869;" -- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech --&gt;
+&lt;!ENTITY sdot CDATA "&amp;#8901;" -- dot operator, U+22C5 ISOamsb --&gt;
+&lt;!-- dot operator is NOT the same character as U+00B7 middle dot --&gt;
+
+&lt;!-- Miscellaneous Technical --&gt;
+&lt;!ENTITY lceil CDATA "&amp;#8968;" -- left ceiling = apl upstile,
+ U+2308 ISOamsc --&gt;
+&lt;!ENTITY rceil CDATA "&amp;#8969;" -- right ceiling, U+2309 ISOamsc --&gt;
+&lt;!ENTITY lfloor CDATA "&amp;#8970;" -- left floor = apl downstile,
+ U+230A ISOamsc --&gt;
+&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'
+ 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'
+ or U+203A 'single right-pointing angle quotation mark' --&gt;
+
+&lt;!-- Geometric Shapes --&gt;
+&lt;!ENTITY loz CDATA "&amp;#9674;" -- lozenge, U+25CA ISOpub --&gt;
+
+&lt;!-- Miscellaneous Symbols --&gt;
+&lt;!ENTITY spades CDATA "&amp;#9824;" -- black spade suit, U+2660 ISOpub --&gt;
+&lt;!-- black here seems to mean filled as opposed to hollow --&gt;
+&lt;!ENTITY clubs CDATA "&amp;#9827;" -- black club suit = shamrock,
+ U+2663 ISOpub --&gt;
+&lt;!ENTITY hearts CDATA "&amp;#9829;" -- black heart suit = valentine,
+ U+2665 ISOpub --&gt;
+&lt;!ENTITY diams CDATA "&amp;#9830;" -- black diamond suit, U+2666 ISOpub --&gt;
+</pre>
+</div>
+
+<h2><a name="h-24.4">24.4</a> <a name="misc">Character entity references for
+markup-significant and internationalization characters</a></h2>
+
+<p>The character entity references in this section are for escaping
+markup-significant characters (these are the same as those in HTML 2.0 and
+3.2), for denoting spaces and dashes. Other characters in this section apply to
+internationalization issues such as the disambiguation of bidirectional text
+(see the section on <a href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#bidirection">bidirectional
+text</a> for details).</p>
+
+<p>Entities have also been added for the remaining characters occurring in
+CP-1252 which do not occur in the HTMLlat1 or HTMLsymbol entity sets. These all
+occur in the 128 to 159 range within the CP-1252 charset. These entities permit
+the characters to be denoted in a platform-independent manner.</p>
+
+<p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
+other means. Display of glyphs for these characters may be obtained by being
+able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
+by other means, such as internally mapping the listed entities, numeric
+character references, and characters to the appropriate position in some font
+that contains the requisite glyphs.</p>
+
+<h3><a name="h-24.4.1">24.4.1</a> The list of characters</h3>
+
+<div class="dtd-fragment">
+<pre>&lt;!-- Special characters for HTML --&gt;
+
+&lt;!-- Character entity set. Typical invocation:
+ &lt;!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special//EN//HTML"&gt;
+ %HTMLspecial; --&gt;
+
+&lt;!-- Portions © International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+--&gt;
+
+&lt;!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ 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.
+
+--&gt;
+
+&lt;!-- C0 Controls and Basic Latin --&gt;
+&lt;!ENTITY quot CDATA "&amp;#34;" -- quotation mark = APL quote,
+ U+0022 ISOnum --&gt;
+&lt;!ENTITY amp CDATA "&amp;#38;" -- ampersand, U+0026 ISOnum --&gt;
+&lt;!ENTITY lt CDATA "&amp;#60;" -- less-than sign, U+003C ISOnum --&gt;
+&lt;!ENTITY gt CDATA "&amp;#62;" -- greater-than sign, U+003E ISOnum --&gt;
+
+&lt;!-- Latin Extended-A --&gt;
+&lt;!ENTITY OElig CDATA "&amp;#338;" -- latin capital ligature OE,
+ U+0152 ISOlat2 --&gt;
+&lt;!ENTITY oelig CDATA "&amp;#339;" -- latin small ligature oe, U+0153 ISOlat2 --&gt;
+&lt;!-- ligature is a misnomer, this is a separate character in some languages --&gt;
+&lt;!ENTITY Scaron CDATA "&amp;#352;" -- latin capital letter S with caron,
+ U+0160 ISOlat2 --&gt;
+&lt;!ENTITY scaron CDATA "&amp;#353;" -- latin small letter s with caron,
+ U+0161 ISOlat2 --&gt;
+&lt;!ENTITY Yuml CDATA "&amp;#376;" -- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 --&gt;
+
+&lt;!-- Spacing Modifier Letters --&gt;
+&lt;!ENTITY circ CDATA "&amp;#710;" -- modifier letter circumflex accent,
+ U+02C6 ISOpub --&gt;
+&lt;!ENTITY tilde CDATA "&amp;#732;" -- small tilde, U+02DC ISOdia --&gt;
+
+&lt;!-- General Punctuation --&gt;
+&lt;!ENTITY ensp CDATA "&amp;#8194;" -- en space, U+2002 ISOpub --&gt;
+&lt;!ENTITY emsp CDATA "&amp;#8195;" -- em space, U+2003 ISOpub --&gt;
+&lt;!ENTITY thinsp CDATA "&amp;#8201;" -- thin space, U+2009 ISOpub --&gt;
+&lt;!ENTITY zwnj CDATA "&amp;#8204;" -- zero width non-joiner,
+ U+200C NEW RFC 2070 --&gt;
+&lt;!ENTITY zwj CDATA "&amp;#8205;" -- zero width joiner, U+200D NEW RFC 2070 --&gt;
+&lt;!ENTITY lrm CDATA "&amp;#8206;" -- left-to-right mark, U+200E NEW RFC 2070 --&gt;
+&lt;!ENTITY rlm CDATA "&amp;#8207;" -- right-to-left mark, U+200F NEW RFC 2070 --&gt;
+&lt;!ENTITY ndash CDATA "&amp;#8211;" -- en dash, U+2013 ISOpub --&gt;
+&lt;!ENTITY mdash CDATA "&amp;#8212;" -- em dash, U+2014 ISOpub --&gt;
+&lt;!ENTITY lsquo CDATA "&amp;#8216;" -- left single quotation mark,
+ U+2018 ISOnum --&gt;
+&lt;!ENTITY rsquo CDATA "&amp;#8217;" -- right single quotation mark,
+ U+2019 ISOnum --&gt;
+&lt;!ENTITY sbquo CDATA "&amp;#8218;" -- single low-9 quotation mark, U+201A NEW --&gt;
+&lt;!ENTITY ldquo CDATA "&amp;#8220;" -- left double quotation mark,
+ U+201C ISOnum --&gt;
+&lt;!ENTITY rdquo CDATA "&amp;#8221;" -- right double quotation mark,
+ U+201D ISOnum --&gt;
+&lt;!ENTITY bdquo CDATA "&amp;#8222;" -- double low-9 quotation mark, U+201E NEW --&gt;
+&lt;!ENTITY dagger CDATA "&amp;#8224;" -- dagger, U+2020 ISOpub --&gt;
+&lt;!ENTITY Dagger CDATA "&amp;#8225;" -- double dagger, U+2021 ISOpub --&gt;
+&lt;!ENTITY permil CDATA "&amp;#8240;" -- per mille sign, U+2030 ISOtech --&gt;
+&lt;!ENTITY lsaquo CDATA "&amp;#8249;" -- single left-pointing angle quotation mark,
+ U+2039 ISO proposed --&gt;
+&lt;!-- lsaquo is proposed but not yet ISO standardized --&gt;
+&lt;!ENTITY rsaquo CDATA "&amp;#8250;" -- single right-pointing angle quotation mark,
+ U+203A ISO proposed --&gt;
+&lt;!-- rsaquo is proposed but not yet ISO standardized --&gt;
+&lt;!ENTITY euro CDATA "&amp;#8364;" -- euro sign, U+20AC NEW --&gt;
+</pre>
+</div>
+
+<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
diff --git a/Build/source/libs/gd/libgd-src/src/entities.tcl b/Build/source/libs/gd/libgd-src/src/entities.tcl
index 29f87dbc977..1f7c9e7e4af 100644
--- a/Build/source/libs/gd/libgd-src/src/entities.tcl
+++ b/Build/source/libs/gd/libgd-src/src/entities.tcl
@@ -1,50 +1,50 @@
-#!/usr/bin/tclsh
-
-# get names for html-4.0 characters from:
-# http://www.w3.org/TR/REC-html40/sgml/entities.html
-set f [open entities.html r]
-set entity_name_length_max 0
-set nr_of_entities 0
-while {! [eof $f]} {
- set rec [gets $f]
- if {[scan $rec {&lt;!ENTITY %s CDATA "&amp;#%d;"; --} name val] == 2} {
- set entity($name) $val
- set entity_name_length [string length $name]
- if {$entity_name_length > $entity_name_length_max} {
- set entity_name_length_max $entity_name_length
- }
- incr nr_of_entities
- }
-}
-close $f
-
-set f [open entities.h w]
-puts $f "/*"
-puts $f " * Generated file - do not edit directly."
-puts $f " *"
-puts $f " * This file was generated from:"
-puts $f " * http://www.w3.org/TR/REC-html40/sgml/entities.html"
-puts $f " * by means of the script:"
-puts $f " * entities.tcl"
-puts $f " */"
-puts $f ""
-puts $f "#ifdef __cplusplus"
-puts $f "extern \"C\" {"
-puts $f "#endif"
-puts $f ""
-puts $f "static struct entities_s {"
-puts $f " char *name;"
-puts $f " int value;"
-puts $f "} entities\[\] = {"
-foreach name [lsort [array names entity]] {
- puts $f " {\"$name\", $entity($name)},"
-}
-puts $f "};"
-puts $f ""
-puts $f "#define ENTITY_NAME_LENGTH_MAX $entity_name_length_max"
-puts $f "#define NR_OF_ENTITIES $nr_of_entities"
-puts $f ""
-puts $f "#ifdef __cplusplus"
-puts $f "}"
-puts $f "#endif"
-close $f
+#!/usr/bin/tclsh
+
+# get names for html-4.0 characters from:
+# http://www.w3.org/TR/REC-html40/sgml/entities.html
+set f [open entities.html r]
+set entity_name_length_max 0
+set nr_of_entities 0
+while {! [eof $f]} {
+ set rec [gets $f]
+ if {[scan $rec {&lt;!ENTITY %s CDATA "&amp;#%d;"; --} name val] == 2} {
+ set entity($name) $val
+ set entity_name_length [string length $name]
+ if {$entity_name_length > $entity_name_length_max} {
+ set entity_name_length_max $entity_name_length
+ }
+ incr nr_of_entities
+ }
+}
+close $f
+
+set f [open entities.h w]
+puts $f "/*"
+puts $f " * Generated file - do not edit directly."
+puts $f " *"
+puts $f " * This file was generated from:"
+puts $f " * http://www.w3.org/TR/REC-html40/sgml/entities.html"
+puts $f " * by means of the script:"
+puts $f " * entities.tcl"
+puts $f " */"
+puts $f ""
+puts $f "#ifdef __cplusplus"
+puts $f "extern \"C\" {"
+puts $f "#endif"
+puts $f ""
+puts $f "static struct entities_s {"
+puts $f " char *name;"
+puts $f " int value;"
+puts $f "} entities\[\] = {"
+foreach name [lsort [array names entity]] {
+ puts $f " {\"$name\", $entity($name)},"
+}
+puts $f "};"
+puts $f ""
+puts $f "#define ENTITY_NAME_LENGTH_MAX $entity_name_length_max"
+puts $f "#define NR_OF_ENTITIES $nr_of_entities"
+puts $f ""
+puts $f "#ifdef __cplusplus"
+puts $f "}"
+puts $f "#endif"
+close $f
diff --git a/Build/source/libs/gd/libgd-src/src/gd.c b/Build/source/libs/gd/libgd-src/src/gd.c
index 053873b4d97..f0fc40ede11 100644
--- a/Build/source/libs/gd/libgd-src/src/gd.c
+++ b/Build/source/libs/gd/libgd-src/src/gd.c
@@ -96,12 +96,19 @@ void gd_stderr_error(int priority, const char *format, va_list args)
static gdErrorMethod gd_error_method = gd_stderr_error;
+static void _gd_error_ex(int priority, const char *format, va_list args)
+{
+ if (gd_error_method) {
+ gd_error_method(priority, format, args);
+ }
+}
+
void gd_error(const char *format, ...)
{
va_list args;
va_start(args, format);
- gd_error_ex(GD_WARNING, format, args);
+ _gd_error_ex(GD_WARNING, format, args);
va_end(args);
}
void gd_error_ex(int priority, const char *format, ...)
@@ -109,17 +116,21 @@ void gd_error_ex(int priority, const char *format, ...)
va_list args;
va_start(args, format);
- if (gd_error_method) {
- gd_error_method(priority, format, args);
- }
+ _gd_error_ex(priority, format, args);
va_end(args);
}
+/*
+ Function: gdSetErrorMethod
+*/
BGD_DECLARE(void) gdSetErrorMethod(gdErrorMethod error_method)
{
gd_error_method = error_method;
}
+/*
+ Function: gdClearErrorMethod
+*/
BGD_DECLARE(void) gdClearErrorMethod(void)
{
gd_error_method = gd_stderr_error;
@@ -127,6 +138,10 @@ BGD_DECLARE(void) gdClearErrorMethod(void)
static void gdImageBrushApply (gdImagePtr im, int x, int y);
static void gdImageTileApply (gdImagePtr im, int x, int y);
+
+/*
+ Function: gdImageGetTrueColorPixel
+*/
BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
@@ -272,7 +287,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy)
return 0;
}
- if (overflow2(sizeof(int), sx)) {
+ if (overflow2(sizeof(int *), sx)) {
return NULL;
}
@@ -380,11 +395,17 @@ BGD_DECLARE(void) gdImageDestroy (gdImagePtr im)
gdFree (im);
}
+/*
+ Function: gdImageColorClosest
+*/
BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b)
{
return gdImageColorClosestAlpha (im, r, g, b, gdAlphaOpaque);
}
+/*
+ Function: gdImageColorClosestAlpha
+*/
BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a)
{
int i;
@@ -552,6 +573,9 @@ HWB_to_RGB (HWBType HWB, RGBType * RGB)
}
#endif
+/*
+ Function: gdImageColorClosestHWB
+*/
BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b)
{
int i;
@@ -577,11 +601,17 @@ BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b)
return ct;
}
+/*
+ Function: gdImageColorExact
+*/
BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b)
{
return gdImageColorExactAlpha (im, r, g, b, gdAlphaOpaque);
}
+/*
+ Function: gdImageColorExactAlpha
+*/
BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a)
{
int i;
@@ -600,11 +630,17 @@ BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int
return -1;
}
+/*
+ Function: gdImageColorAllocate
+*/
BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b)
{
return gdImageColorAllocateAlpha (im, r, g, b, gdAlphaOpaque);
}
+/*
+ Function: gdImageColorAllocateAlpha
+*/
BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a)
{
int i;
@@ -634,21 +670,24 @@ BGD_DECLARE(int) gdImageColorAllocateAlpha (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.
- */
+ Function: gdImageColorResolve
+
+ 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.
+*/
BGD_DECLARE(int) gdImageColorResolve (gdImagePtr im, int r, int g, int b)
{
return gdImageColorResolveAlpha (im, r, g, b, gdAlphaOpaque);
}
+/*
+ Function: gdImageColorResolveAlpha
+*/
BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a)
{
int c;
@@ -700,6 +739,9 @@ BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, i
return op; /* Return newly allocated color */
}
+/*
+ Function: gdImageColorDeallocate
+*/
BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color)
{
if (im->trueColor || (color >= gdMaxColors) || (color < 0)) {
@@ -709,8 +751,15 @@ BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color)
im->open[color] = 1;
}
+/*
+ Function: gdImageColorTransparent
+*/
BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
{
+ if (color < 0) {
+ return;
+ }
+
if (!im->trueColor) {
if((color < -1) || (color >= gdMaxColors)) {
return;
@@ -725,6 +774,9 @@ BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
im->transparent = color;
}
+/*
+ Function: gdImagePaletteCopy
+*/
BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr to, gdImagePtr from)
{
int i;
@@ -777,6 +829,9 @@ BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr to, gdImagePtr from)
}
+/*
+ Function: gdImageColorReplace
+*/
BGD_DECLARE(int) gdImageColorReplace (gdImagePtr im, int src, int dst)
{
register int x, y;
@@ -808,6 +863,9 @@ BGD_DECLARE(int) gdImageColorReplace (gdImagePtr im, int src, int dst)
return n;
}
+/*
+ Function: gdImageColorReplaceThreshold
+*/
BGD_DECLARE(int) gdImageColorReplaceThreshold (gdImagePtr im, int src, int dst, float threshold)
{
register int x, y;
@@ -846,6 +904,9 @@ static int colorCmp (const void *x, const void *y)
return (a > b) - (a < b);
}
+/*
+ Function: gdImageColorReplaceArray
+*/
BGD_DECLARE(int) gdImageColorReplaceArray (gdImagePtr im, int len, int *src, int *dst)
{
register int x, y;
@@ -895,6 +956,9 @@ BGD_DECLARE(int) gdImageColorReplaceArray (gdImagePtr im, int len, int *src, int
return n;
}
+/*
+ Function: gdImageColorReplaceCallback
+*/
BGD_DECLARE(int) gdImageColorReplaceCallback (gdImagePtr im, gdCallbackImageColor callback)
{
int c, d, n = 0;
@@ -1020,6 +1084,9 @@ clip_1d (int *x0, int *y0, int *x1, int *y1, int mindim, int maxdim)
/* end of line clipping code */
+/*
+ Function: gdImageSetPixel
+*/
BGD_DECLARE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color)
{
int p;
@@ -1211,6 +1278,9 @@ gdImageTileApply (gdImagePtr im, int x, int y)
}
}
+/*
+ Function: gdImageGetPixel
+*/
BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y)
{
if (gdImageBoundsSafeMacro (im, x, y)) {
@@ -1224,6 +1294,9 @@ BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y)
}
}
+/*
+ Function: gdImageGetTrueColorPixel
+*/
BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
{
int p = gdImageGetPixel (im, x, y);
@@ -1236,19 +1309,26 @@ BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
}
}
+/*
+ Function: gdImageAABlend
+
+ NO-OP, kept for library compatibility.
+*/
BGD_DECLARE(void) gdImageAABlend (gdImagePtr im)
{
- /* NO-OP, kept for library compatibility. */
(void)im;
}
static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int col);
+static void _gdImageFilledHRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
+ int color);
+
static void gdImageHLine(gdImagePtr im, int y, int x1, int x2, int col)
{
if (im->thick > 1) {
int thickhalf = im->thick >> 1;
- gdImageFilledRectangle(im, x1, y - thickhalf, x2, y + im->thick - thickhalf - 1, col);
+ _gdImageFilledHRectangle(im, x1, y - thickhalf, x2, y + im->thick - thickhalf - 1, col);
} else {
if (x2 < x1) {
int t = x2;
@@ -1282,7 +1362,11 @@ static void gdImageVLine(gdImagePtr im, int x, int y1, int y2, int col)
return;
}
-/* Bresenham as presented in Foley & Van Dam */
+/*
+ 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)
{
int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
@@ -1325,20 +1409,17 @@ 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) */
- if ((dx == 0) && (dy == 0)) {
- wid = 1;
+
+ /* 2.0.12: Michael Schwartz: divide rather than multiply;
+ TBB: but watch out for /0! */
+ double ac = cos (atan2 (dy, dx));
+ if (ac != 0) {
+ wid = thick / ac;
} else {
- /* 2.0.12: Michael Schwartz: divide rather than multiply;
- TBB: but watch out for /0! */
- double ac = cos (atan2 (dy, dx));
- if (ac != 0) {
- wid = thick / ac;
- } else {
- wid = 1;
- }
- if (wid == 0) {
- wid = 1;
- }
+ wid = 1;
+ }
+ if (wid == 0) {
+ wid = 1;
}
d = 2 * dy - dx;
incr1 = 2 * dy;
@@ -1453,6 +1534,9 @@ BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, in
static void dashedSet (gdImagePtr im, int x, int y, int color,
int *onP, int *dashStepP, int wid, int vert);
+/*
+ Function: gdImageDashedLine
+*/
BGD_DECLARE(void) gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
{
int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
@@ -1594,11 +1678,17 @@ dashedSet (gdImagePtr im, int x, int y, int color,
*onP = on;
}
+/*
+ Function: gdImageBoundsSafe
+*/
BGD_DECLARE(int) gdImageBoundsSafe (gdImagePtr im, int x, int y)
{
return gdImageBoundsSafeMacro (im, x, y);
}
+/*
+ Function: gdImageChar
+*/
BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
{
int cx, cy;
@@ -1625,6 +1715,9 @@ BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c,
}
}
+/*
+ Function: gdImageCharUp
+*/
BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
{
int cx, cy;
@@ -1651,6 +1744,9 @@ BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c
}
}
+/*
+ Function: gdImageString
+*/
BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f,
int x, int y, unsigned char *s, int color)
{
@@ -1663,6 +1759,9 @@ BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f,
}
}
+/*
+ Function: gdImageStringUp
+*/
BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f,
int x, int y, unsigned char *s, int color)
{
@@ -1677,6 +1776,9 @@ BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f,
static int strlen16 (unsigned short *s);
+/*
+ Function: gdImageString16
+*/
BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f,
int x, int y, unsigned short *s, int color)
{
@@ -1689,6 +1791,9 @@ BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f,
}
}
+/*
+ Function: gdImageStringUp16
+*/
BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f,
int x, int y, unsigned short *s, int color)
{
@@ -1727,21 +1832,25 @@ lsqrt (long n)
/* s and e are integers modulo 360 (degrees), with 0 degrees
being the rightmost extreme and degrees changing clockwise.
cx and cy are the center in pixels; w and h are the horizontal
- and vertical diameter in pixels. Nice interface, but slow.
- See gd_arc_f_buggy.c for a better version that doesn't
- seem to be bug-free yet. */
+ and vertical diameter in pixels. */
+/*
+ Function: gdImageArc
+*/
BGD_DECLARE(void) gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
int color)
{
gdImageFilledArc (im, cx, cy, w, h, s, e, color, gdNoFill);
}
+/*
+ Function: gdImageFilledArc
+*/
BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
int color, int style)
{
- gdPoint pts[3];
- int i;
+ gdPoint pts[363];
+ int i, pti;
int lx = 0, ly = 0;
int fx = 0, fy = 0;
@@ -1771,7 +1880,7 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
}
}
- for (i = s; (i <= e); i++) {
+ 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;
@@ -1780,19 +1889,29 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
if (style & gdNoFill) {
gdImageLine (im, lx, ly, x, y, color);
} else {
- /* This is expensive! */
- pts[0].x = lx;
- pts[0].y = ly;
- pts[1].x = x;
- pts[1].y = y;
- pts[2].x = cx;
- pts[2].y = cy;
- gdImageFilledPolygon (im, pts, 3, color);
+ if (y == ly) {
+ pti--; /* don't add this point */
+ if (((i > 270 || i < 90) && x > lx) || ((i > 90 && i < 270) && x < lx)) {
+ /* replace the old x coord, if increasing on the
+ right side or decreasing on the left side */
+ pts[pti].x = x;
+ }
+ } else {
+ pts[pti].x = x;
+ pts[pti].y = y;
+ }
}
}
} else {
fx = x;
fy = y;
+
+ if (!(style & (gdChord | gdNoFill))) {
+ pts[0].x = cx;
+ pts[0].y = cy;
+ pts[pti].x = x;
+ pts[pti].y = y;
+ }
}
lx = x;
ly = y;
@@ -1819,10 +1938,17 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
gdImageLine (im, cx, cy, lx, ly, color);
gdImageLine (im, cx, cy, fx, fy, color);
}
+ } else {
+ pts[pti].x = cx;
+ pts[pti].y = cy;
+ gdImageFilledPolygon(im, pts, pti+1, color);
}
}
}
+/*
+ Function: gdImageEllipse
+*/
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;
@@ -1867,6 +1993,9 @@ BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, in
}
+/*
+ Function: gdImageFilledEllipse
+*/
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;
@@ -1909,20 +2038,20 @@ BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, in
rx -=dy;
r +=rx;
}
- if(old_y2!=my2) {
- for(i=mx1; i<=mx2; i++) {
- gdImageSetPixel(im,i,my1,c);
- }
- }
+
if(old_y2!=my2) {
for(i=mx1; i<=mx2; i++) {
gdImageSetPixel(im,i,my2,c);
+ gdImageSetPixel(im,i,my1,c);
}
}
old_y2 = my2;
}
}
+/*
+ Function: gdImageFillToBorder
+*/
BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
{
int lastBorder;
@@ -1931,16 +2060,33 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
int i;
int restoreAlphaBleding;
- if (border < 0) {
+ if (border < 0 || color < 0) {
/* Refuse to fill to a non-solid border */
return;
}
+ if (!im->trueColor) {
+ if ((color > (im->colorsTotal - 1)) || (border > (im->colorsTotal - 1)) || (color < 0)) {
+ return;
+ }
+ }
+
leftLimit = (-1);
restoreAlphaBleding = im->alphaBlendingFlag;
im->alphaBlendingFlag = 0;
+ if (x >= im->sx) {
+ x = im->sx - 1;
+ } else if (x < 0) {
+ x = 0;
+ }
+ if (y >= im->sy) {
+ y = im->sy - 1;
+ } else if (y < 0) {
+ y = 0;
+ }
+
for (i = x; (i >= 0); i--) {
if (gdImageGetPixel (im, i, y) == border) {
break;
@@ -2051,6 +2197,10 @@ struct seg {
{sp--; Y = sp->y+(DY = sp->dy); XL = sp->xl; XR = sp->xr;}
static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
+
+/*
+ Function: gdImageFill
+*/
BGD_DECLARE(void) gdImageFill(gdImagePtr im, int x, int y, int nc)
{
int l, x1, x2, dy;
@@ -2204,9 +2354,9 @@ static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
FILL_PUSH(y+1, x, x, -1);
while (sp>stack) {
FILL_POP(y, x1, x2, dy);
- for (x=x1; x>=0 && (!pts[y + x*wx2] && gdImageGetPixel(im,x,y)==oc); x--) {
+ for (x=x1; x>=0 && (!pts[y + x*wy2] && gdImageGetPixel(im,x,y)==oc); x--) {
nc = gdImageTileGet(im,x,y);
- pts[y + x*wx2]=1;
+ pts[y + x*wy2]=1;
gdImageSetPixel(im,x, y, nc);
}
if (x>=x1) {
@@ -2220,13 +2370,13 @@ static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
}
x = x1+1;
do {
- for (; x<wx2 && (!pts[y + x*wx2] && gdImageGetPixel(im,x, y)==oc) ; x++) {
- if (pts[y + x*wx2]) {
+ for (; x<wx2 && (!pts[y + x*wy2] && gdImageGetPixel(im,x, y)==oc) ; x++) {
+ if (pts[y + x*wy2]) {
/* we should never be here */
break;
}
nc = gdImageTileGet(im,x,y);
- pts[y + x*wx2]=1;
+ pts[y + x*wy2]=1;
gdImageSetPixel(im, x, y, nc);
}
FILL_PUSH(y, l, x-1, dy);
@@ -2235,7 +2385,7 @@ static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
FILL_PUSH(y, x2+1, x-1, -dy);
}
skip:
- for (x++; x<=x2 && (pts[y + x*wx2] || gdImageGetPixel(im,x, y)!=oc); x++);
+ for (x++; x<=x2 && (pts[y + x*wy2] || gdImageGetPixel(im,x, y)!=oc); x++);
l = x;
} while (x<=x2);
}
@@ -2244,6 +2394,9 @@ skip:
gdFree(stack);
}
+/*
+ Function: gdImageRectangle
+*/
BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
{
int thick = im->thick;
@@ -2253,6 +2406,16 @@ BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y
return;
}
+ if (x1 == x2 && y1 == y2) {
+ gdImageSetPixel(im, x1, y1, color);
+ return;
+ }
+
+ if (x1 == x2 || y1 == y2) {
+ gdImageLine(im, x1, y1, x2, y2, color);
+ return;
+ }
+
if (y2 < y1) {
int t;
t = y1;
@@ -2314,7 +2477,52 @@ BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y
}
}
-BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
+static void _gdImageFilledHRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
+ int color)
+{
+ int x, y;
+
+ if (x1 == x2 && y1 == y2) {
+ gdImageSetPixel(im, x1, y1, color);
+ return;
+ }
+
+ if (x1 > x2) {
+ x = x1;
+ x1 = x2;
+ x2 = x;
+ }
+
+ if (y1 > y2) {
+ y = y1;
+ y1 = y2;
+ y2 = y;
+ }
+
+ if (x1 < 0) {
+ x1 = 0;
+ }
+
+ if (x2 >= gdImageSX(im)) {
+ x2 = gdImageSX(im) - 1;
+ }
+
+ if (y1 < 0) {
+ y1 = 0;
+ }
+
+ if (y2 >= gdImageSY(im)) {
+ y2 = gdImageSY(im) - 1;
+ }
+
+ for (x = x1; (x <= x2); x++) {
+ for (y = y1; (y <= y2); y++) {
+ gdImageSetPixel (im, x, y, color);
+ }
+ }
+}
+
+static void _gdImageFilledVRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
int color)
{
int x, y;
@@ -2359,6 +2567,18 @@ BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2,
}
}
+/*
+ Function: gdImageFilledRectangle
+*/
+BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
+ int color)
+{
+ _gdImageFilledVRectangle(im, x1, y1, x2, y2, color);
+}
+
+/*
+ Function: gdImageClone
+*/
BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
gdImagePtr dst;
register int i, x;
@@ -2384,7 +2604,7 @@ BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
}
for (i = 0; i < src->sy; i++) {
for (x = 0; x < src->sx; x++) {
- dst->pixels[i][x] = dst->pixels[i][x];
+ dst->pixels[i][x] = src->pixels[i][x];
}
}
} else {
@@ -2454,6 +2674,9 @@ BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
return dst;
}
+/*
+ Function: gdImageCopy
+*/
BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX,
int srcY, int w, int h)
{
@@ -2541,8 +2764,12 @@ BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dst
}
}
-/* This function is a substitute for real alpha channel operations,
- so it doesn't pay attention to the alpha channel. */
+/*
+ Function: gdImageCopyMerge
+
+ This function is a substitute for real alpha channel operations,
+ so it doesn't pay attention to the alpha channel.
+*/
BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
int srcX, int srcY, int w, int h, int pct)
{
@@ -2585,8 +2812,12 @@ BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, in
}
}
-/* This function is a substitute for real alpha channel operations,
- so it doesn't pay attention to the alpha channel. */
+/*
+ Function: gdImageCopyMergeGray
+
+ This function is a substitute for real alpha channel operations,
+ so it doesn't pay attention to the alpha channel.
+*/
BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
int srcX, int srcY, int w, int h, int pct)
{
@@ -2645,6 +2876,9 @@ BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX
}
}
+/*
+ Function: gdImageCopyResized
+*/
BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
int srcX, int srcY, int dstW, int dstH, int srcW,
int srcH)
@@ -2781,6 +3015,9 @@ BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX,
coordinates allow accurate rotation of
objects of odd-numbered width or height. */
+/*
+ Function: gdImageCopyRotated
+*/
BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX, double dstY,
@@ -2864,6 +3101,9 @@ BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
#define floor2(exp) ((long) exp)
/*#define floor2(exp) floor(exp)*/
+/*
+ Function: gdImageCopyResampled
+*/
BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX, int dstY,
@@ -2871,78 +3111,77 @@ BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst,
int dstW, int dstH, int srcW, int srcH)
{
int x, y;
- double sy1, sy2, sx1, sx2;
if (!dst->trueColor) {
- gdImageCopyResized (dst, src, dstX, dstY, srcX, srcY, dstW, dstH,
- srcW, srcH);
+ gdImageCopyResized (dst, src, dstX, dstY, srcX, srcY, dstW, dstH, srcW, srcH);
return;
}
for (y = dstY; (y < dstY + dstH); y++) {
- sy1 = ((double) y - (double) dstY) * (double) srcH / (double) dstH;
- sy2 = ((double) (y + 1) - (double) dstY) * (double) srcH /
- (double) dstH;
for (x = dstX; (x < dstX + dstW); x++) {
- double sx, sy;
- double spixels = 0;
- double red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
- double alpha_sum = 0.0, contrib_sum = 0.0;
-
- sx1 = ((double) x - (double) dstX) * (double) srcW / dstW;
- sx2 = ((double) (x + 1) - (double) dstX) * (double) srcW / dstW;
+ float sy1, sy2, sx1, sx2;
+ float sx, sy;
+ float spixels = 0.0;
+ float red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
+ float alpha_factor, alpha_sum = 0.0, contrib_sum = 0.0;
+ sy1 = ((float)(y - dstY)) * (float)srcH / (float)dstH;
+ sy2 = ((float)(y + 1 - dstY)) * (float) srcH / (float) dstH;
sy = sy1;
do {
- double yportion;
- if (floor2 (sy) == floor2 (sy1)) {
- yportion = 1.0 - (sy - floor2 (sy));
+ float yportion;
+ if (floorf(sy) == floorf(sy1)) {
+ yportion = 1.0 - (sy - floorf(sy));
if (yportion > sy2 - sy1) {
yportion = sy2 - sy1;
}
- sy = floor2 (sy);
- } else if (sy == floor2 (sy2)) {
- yportion = sy2 - floor2 (sy2);
+ sy = floorf(sy);
+ } else if (sy == floorf(sy2)) {
+ yportion = sy2 - floorf(sy2);
} else {
yportion = 1.0;
}
+ sx1 = ((float)(x - dstX)) * (float) srcW / dstW;
+ sx2 = ((float)(x + 1 - dstX)) * (float) srcW / dstW;
sx = sx1;
do {
- double xportion;
- double pcontribution;
+ float xportion;
+ float pcontribution;
int p;
- if (floor2 (sx) == floor2 (sx1)) {
- xportion = 1.0 - (sx - floor2 (sx));
+ if (floorf(sx) == floorf(sx1)) {
+ xportion = 1.0 - (sx - floorf(sx));
if (xportion > sx2 - sx1) {
xportion = sx2 - sx1;
}
- sx = floor2 (sx);
- } else if (sx == floor2 (sx2)) {
- xportion = sx2 - floor2 (sx2);
+ sx = floorf(sx);
+ } else if (sx == floorf(sx2)) {
+ xportion = sx2 - floorf(sx2);
} else {
xportion = 1.0;
}
pcontribution = xportion * yportion;
- /* 2.08: previously srcX and srcY were ignored.
- Andrew Pattison */
- p = gdImageGetTrueColorPixel (src,
- (int) sx + srcX,
- (int) sy + srcY);
- red += gdTrueColorGetRed (p) * pcontribution;
- green += gdTrueColorGetGreen (p) * pcontribution;
- blue += gdTrueColorGetBlue (p) * pcontribution;
+ p = gdImageGetTrueColorPixel(src, (int) sx + srcX, (int) sy + srcY);
+
+ alpha_factor = ((gdAlphaMax - gdTrueColorGetAlpha(p))) * pcontribution;
+ red += gdTrueColorGetRed (p) * alpha_factor;
+ green += gdTrueColorGetGreen (p) * alpha_factor;
+ blue += gdTrueColorGetBlue (p) * alpha_factor;
alpha += gdTrueColorGetAlpha (p) * pcontribution;
+ alpha_sum += alpha_factor;
+ contrib_sum += pcontribution;
spixels += xportion * yportion;
sx += 1.0;
- } while (sx < sx2);
- sy += 1.0;
- } while (sy < sy2);
+ }
+ while (sx < sx2);
+ sy += 1.0f;
+ }
+ while (sy < sy2);
+
if (spixels != 0.0) {
red /= spixels;
green /= spixels;
blue /= spixels;
alpha /= spixels;
- alpha += 0.5;
}
- if ( alpha_sum != 0.0f) {
- if( contrib_sum != 0.0f) {
+ if ( alpha_sum != 0.0) {
+ if( contrib_sum != 0.0) {
alpha_sum /= contrib_sum;
}
red /= alpha_sum;
@@ -2956,21 +3195,20 @@ BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst,
if (green > 255.0) {
green = 255.0;
}
- if (blue > 255.0) {
+ if (blue > 255.0f) {
blue = 255.0;
}
if (alpha > gdAlphaMax) {
alpha = gdAlphaMax;
}
- gdImageSetPixel (dst,
- x, y,
- gdTrueColorAlpha ((int) red,
- (int) green,
- (int) blue, (int) alpha));
+ gdImageSetPixel(dst, x, y, gdTrueColorAlpha ((int) red, (int) green, (int) blue, (int) alpha));
}
}
}
+/*
+ Function: gdImagePolygon
+*/
BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
{
if (n <= 0) {
@@ -2982,6 +3220,9 @@ BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
gdImageOpenPolygon (im, p, n, c);
}
+/*
+ Function: gdImageOpenPolygon
+*/
BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
{
int i;
@@ -3009,6 +3250,9 @@ BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
/* That could help to adjust intersections to produce a nice */
/* interior_extrema. */
+/*
+ Function: gdImageFilledPolygon
+*/
BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
{
int i;
@@ -3063,6 +3307,19 @@ BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int
maxy = p[i].y;
}
}
+ /* necessary special case: horizontal line */
+ if (n > 1 && miny == maxy) {
+ x1 = x2 = p[0].x;
+ for (i = 1; (i < n); i++) {
+ if (p[i].x < x1) {
+ x1 = p[i].x;
+ } else if (p[i].x > x2) {
+ x2 = p[i].x;
+ }
+ }
+ gdImageLine(im, x1, miny, x2, miny, c);
+ return;
+ }
pmaxy = maxy;
/* 2.0.16: Optimization by Ilia Chipitsine -- don't waste time offscreen */
/* 2.0.26: clipping rectangle is even better */
@@ -3139,6 +3396,9 @@ BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int
static void gdImageSetAAPixelColor(gdImagePtr im, int x, int y, int color, int t);
+/*
+ Function: gdImageSetStyle
+*/
BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels)
{
if (im->style) {
@@ -3156,11 +3416,17 @@ BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels)
im->stylePos = 0;
}
+/*
+ Function: gdImageSetThickness
+*/
BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness)
{
im->thick = thickness;
}
+/*
+ Function: gdImageSetBrush
+*/
BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush)
{
int i;
@@ -3178,6 +3444,9 @@ BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush)
}
}
+/*
+ Function: gdImageSetTile
+*/
BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile)
{
int i;
@@ -3195,6 +3464,9 @@ BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile)
}
}
+/*
+ Function: gdImageSetAntiAliased
+*/
BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c)
{
im->AA = 1;
@@ -3202,6 +3474,9 @@ BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c)
im->AA_dont_blend = -1;
}
+/*
+ Function: gdImageSetAntiAliasedDontBlend
+*/
BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend)
{
im->AA = 1;
@@ -3209,11 +3484,17 @@ BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont
im->AA_dont_blend = dont_blend;
}
+/*
+ Function: gdImageInterlace
+*/
BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg)
{
im->interlace = interlaceArg;
}
+/*
+ Function: gdImageCompare
+*/
BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2)
{
int x, y;
@@ -3296,6 +3577,9 @@ BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2)
of gdAlphaBlend(), which merges alpha in the
destination color much better. */
+/*
+ Function: gdAlphaBlend
+*/
BGD_DECLARE(int) gdAlphaBlend (int dst, int src)
{
int src_alpha = gdTrueColorGetAlpha(src);
@@ -3342,6 +3626,10 @@ BGD_DECLARE(int) gdAlphaBlend (int dst, int src)
}
static int gdAlphaOverlayColor (int src, int dst, int max );
+
+/*
+ Function: gdLayerOverlay
+*/
BGD_DECLARE(int) gdLayerOverlay (int dst, int src)
{
int a1, a2;
@@ -3367,7 +3655,11 @@ static int gdAlphaOverlayColor (int src, int dst, int max )
}
}
-/* Apply 'multiply' effect */
+/*
+ Function: gdLayerMultiply
+
+ Apply 'multiply' effect.
+*/
BGD_DECLARE(int) gdLayerMultiply (int dst, int src)
{
int a1, a2, r1, r2, g1, g2, b1, b2;
@@ -3390,16 +3682,25 @@ BGD_DECLARE(int) gdLayerMultiply (int dst, int src)
);
}
+/*
+ Function: gdImageAlphaBlending
+*/
BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg)
{
im->alphaBlendingFlag = alphaBlendingArg;
}
+/*
+ Function: gdImageSaveAlpha
+*/
BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg)
{
im->saveAlphaFlag = saveAlphaArg;
}
+/*
+ Function: gdImageSetClip
+*/
BGD_DECLARE(void) gdImageSetClip (gdImagePtr im, int x1, int y1, int x2, int y2)
{
if (x1 < 0) {
@@ -3432,6 +3733,9 @@ BGD_DECLARE(void) gdImageSetClip (gdImagePtr im, int x1, int y1, int x2, int y2)
im->cy2 = y2;
}
+/*
+ Function: gdImageGetClip
+*/
BGD_DECLARE(void) gdImageGetClip (gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P)
{
*x1P = im->cx1;
@@ -3440,6 +3744,9 @@ BGD_DECLARE(void) gdImageGetClip (gdImagePtr im, int *x1P, int *y1P, int *x2P, i
*y2P = im->cy2;
}
+/*
+ Function: gdImageSetResolution
+*/
BGD_DECLARE(void) gdImageSetResolution(gdImagePtr im, const unsigned int res_x, const unsigned int res_y)
{
if (res_x > 0) im->res_x = res_x;
@@ -3511,9 +3818,11 @@ static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int co
return;
} else {
double ag;
- ag = (abs(dy) < abs(dx)) ? cos(atan2(dy, dx)) : sin(atan2(dy, dx));
+ /* Cast the long to an int to avoid compiler warnings about truncation.
+ * This isn't a problem as computed dy/dx values came from ints above. */
+ ag = fabs(abs((int)dy) < abs((int)dx) ? cos(atan2(dy, dx)) : sin(atan2(dy, dx)));
if (ag != 0) {
- wid = abs(thick / ag);
+ wid = thick / ag;
} else {
wid = 1;
}
@@ -3531,7 +3840,7 @@ static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int co
return;
}
- if (abs(dx) > abs(dy)) {
+ if (abs((int)dx) > abs((int)dy)) {
if (dx < 0) {
tmp = x1;
x1 = x2;
@@ -3595,7 +3904,11 @@ static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int co
}
-/* convert a palette image to true color */
+/*
+ Function: gdImagePaletteToTrueColor
+
+ Convert a palette image to true color.
+*/
BGD_DECLARE(int) gdImagePaletteToTrueColor(gdImagePtr src)
{
unsigned int y;
diff --git a/Build/source/libs/gd/libgd-src/src/gd.h b/Build/source/libs/gd/libgd-src/src/gd.h
index bdc479c9275..cf60be3ad85 100644
--- a/Build/source/libs/gd/libgd-src/src/gd.h
+++ b/Build/source/libs/gd/libgd-src/src/gd.h
@@ -2,6 +2,7 @@
extern "C" {
#endif
+#include <stdlib.h>
#ifndef GD_H
#define GD_H 1
@@ -11,8 +12,8 @@ extern "C" {
* whitespace, take the form GD_*_VERSION and contain the magical
* trailing comment. */
#define GD_MAJOR_VERSION 2 /*version605b5d1778*/
-#define GD_MINOR_VERSION 1 /*version605b5d1778*/
-#define GD_RELEASE_VERSION 1 /*version605b5d1778*/
+#define GD_MINOR_VERSION 2 /*version605b5d1778*/
+#define GD_RELEASE_VERSION 3 /*version605b5d1778*/
#define GD_EXTRA_VERSION "" /*version605b5d1778*/
/* End parsable section. */
@@ -65,7 +66,7 @@ extern "C" {
# define BGD_STDCALL
# define BGD_EXPORT_DATA_IMPL
#else
-# ifdef HAVE_VISIBILITY
+# if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY==1
# define BGD_EXPORT_DATA_PROT __attribute__ ((visibility ("default")))
# define BGD_EXPORT_DATA_IMPL __attribute__ ((visibility ("hidden")))
# else
@@ -88,9 +89,9 @@ extern "C" {
# ifndef strcasecmp
# define strcasecmp _stricmp
# endif
-# ifndef snprintf
-# define snprintf _snprintf
-# endif
+#if _MSC_VER < 1900
+ extern int snprintf(char*, size_t, const char*, ...);
+#endif
#endif
#ifdef __cplusplus
@@ -207,6 +208,7 @@ enum gdPaletteQuantizationMethod {
* GD_SINC - Sinc
* GD_TRIANGLE - Triangle
* GD_WEIGHTED4 - 4 pixels weighted bilinear interpolation
+ * GD_LINEAR - bilinear interpolation
*
* See also:
* <gdSetInterpolationMethod>
@@ -234,7 +236,8 @@ typedef enum {
GD_SINC,
GD_TRIANGLE,
GD_WEIGHTED4,
- GD_METHOD_COUNT = 21
+ GD_LINEAR,
+ GD_METHOD_COUNT = 23
} gdInterpolationMethod;
/* define struct with name and func ptr and add it to gdImageStruct gdInterpolationMethod interpolation; */
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 5f39b67c3e4..e1194c54d80 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_bmp.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_bmp.c
@@ -60,6 +60,9 @@ static int gdBMPPutInt(gdIOCtx *out, int w)
return 0;
}
+/*
+ Function: gdImageBmpPtr
+*/
BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
{
void *rv;
@@ -71,6 +74,9 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
return rv;
}
+/*
+ Function: gdImageBmp
+*/
BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
{
gdIOCtx *out = gdNewFileCtx(outFile);
@@ -79,6 +85,9 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
out->gd_free(out);
}
+/*
+ Function: gdImageBmpCtx
+*/
BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
{
int bitmap_size = 0, info_size, total_size, padding;
@@ -343,8 +352,6 @@ static int compress_row(unsigned char *row, int length)
if (compressed_run) {
if (rle_type == BMP_RLE_TYPE_RLE) {
compressed_length += build_rle_packet(row, rle_type, compressed_run, uncompressed_row);
- } else {
- compressed_length += build_rle_packet(row, rle_type, compressed_run, uncompressed_row);
}
}
@@ -399,6 +406,9 @@ static int build_rle_packet(unsigned char *row, int packet_type, int length, uns
return compressed_size;
}
+/*
+ Function: gdImageCreateFromBmp
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmp(FILE * inFile)
{
gdImagePtr im = 0;
@@ -409,6 +419,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromBmp(FILE * inFile)
return im;
}
+/*
+ Function: gdImageCreateFromBmpPtr
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpPtr(int size, void *data)
{
gdImagePtr im;
@@ -419,6 +432,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpPtr(int size, void *data)
return im;
}
+/*
+ Function: gdImageCreateFromBmpCtx
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpCtx(gdIOCtxPtr infile)
{
bmp_hdr_t *hdr;
@@ -678,11 +694,13 @@ static int bmp_read_direct(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, b
BMP_DEBUG(printf("RLE is only valid for 8-bit images\n"));
return 1;
}
+ break;
case BMP_BI_RLE4:
if (info->depth != 4) {
BMP_DEBUG(printf("RLE is only valid for 4-bit images\n"));
return 1;
}
+ break;
case BMP_BI_JPEG:
case BMP_BI_PNG:
default:
diff --git a/Build/source/libs/gd/libgd-src/src/gd_color_map.c b/Build/source/libs/gd/libgd-src/src/gd_color_map.c
index ff48399a982..46f3bfa5e81 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_color_map.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_color_map.c
@@ -767,6 +767,9 @@ BGD_EXPORT_DATA_PROT gdColorMap GD_COLOR_MAP_X11 = {
(gdColorMapEntry *)GD_COLOR_MAP_X11_ENTRIES
};
+/*
+ Function: gdColorMapLookup
+*/
BGD_DECLARE(int)
gdColorMapLookup(const gdColorMap color_map, const char *color_name, int *r, int *g, int *b)
{
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 5f0fd0a86c2..f0842b69ed7 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
@@ -5,8 +5,10 @@
#include "gd.h"
#include "gdhelpers.h"
-/* bring the palette colors in im2 to be closer to im1
- *
+/*
+ Function: gdImageColorMatch
+
+ Bring the palette colors in im2 to be closer to im1.
*/
BGD_DECLARE(int) gdImageColorMatch (gdImagePtr im1, gdImagePtr im2)
{
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 02966336d18..6cca8198cf0 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_crop.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_crop.c
@@ -18,6 +18,9 @@
static int gdGuessBackgroundColorFromCorners(gdImagePtr im, int *color);
+/*
+ Function: gdImageCrop
+ */
BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop)
{
gdImagePtr dst;
@@ -29,6 +32,9 @@ BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop)
return dst;
}
+/*
+ Function: gdImageCropAuto
+ */
BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
{
const int width = gdImageSX(im);
@@ -117,6 +123,9 @@ BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
return gdImageCrop(im, &crop);
}
+/*
+ Function: gdImageCropThreshold
+ */
BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int color, const float threshold)
{
const int width = gdImageSX(im);
@@ -136,6 +145,10 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c
return NULL;
}
+ if (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im)) {
+ return NULL;
+ }
+
/* TODO: Add gdImageGetRowPtr and works with ptr at the row level
* for the true color and palette images
* new formats will simply work with ptr
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 ba636cfe0e7..fd61677d581 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_filename.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_filename.c
@@ -70,7 +70,7 @@ static struct FileType {
{".gd2", gdImageCreateFromGd2, writegd2, NULL},
#endif
-#ifdef HAVE_LIBVPX
+#ifdef HAVE_LIBWEBP
{".webp", gdImageCreateFromWebp, gdImageWebp, NULL},
#endif
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 a3119f77f80..d3a5918addc 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_filter.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_filter.c
@@ -15,7 +15,11 @@
#include <time.h>
#include <math.h>
-#define NDEBUG /* Uncomment to enable assertions. */
+#undef NDEBUG
+/* Comment out this line to enable asserts.
+ * TODO: This logic really belongs in cmake and configure.
+ */
+#define NDEBUG 1
#include <assert.h>
typedef int (BGD_STDCALL *FuncPtr)(gdImagePtr, int, int);
@@ -30,6 +34,9 @@ typedef int (BGD_STDCALL *FuncPtr)(gdImagePtr, int, int);
# define GD_SCATTER_SEED() (unsigned int)(time(0) * getpid())
#endif
+/*
+ Function: gdImageScatter
+ */
BGD_DECLARE(int) gdImageScatter(gdImagePtr im, int sub, int plus)
{
gdScatter s;
@@ -41,6 +48,9 @@ BGD_DECLARE(int) gdImageScatter(gdImagePtr im, int sub, int plus)
return gdImageScatterEx(im, &s);
}
+/*
+ Function: gdImageScatterColor
+ */
BGD_DECLARE(int) gdImageScatterColor(gdImagePtr im, int sub, int plus, int colors[], unsigned int num_colors)
{
gdScatter s;
@@ -53,6 +63,9 @@ BGD_DECLARE(int) gdImageScatterColor(gdImagePtr im, int sub, int plus, int color
return gdImageScatterEx(im, &s);
}
+/*
+ Function: gdImageScatterEx
+ */
BGD_DECLARE(int) gdImageScatterEx(gdImagePtr im, gdScatterPtr scatter)
{
register int x, y;
@@ -112,6 +125,9 @@ BGD_DECLARE(int) gdImageScatterEx(gdImagePtr im, gdScatterPtr scatter)
return 1;
}
+/*
+ Function: gdImagePixelate
+ */
BGD_DECLARE(int) gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode)
{
int x, y;
@@ -168,7 +184,11 @@ BGD_DECLARE(int) gdImagePixelate(gdImagePtr im, int block_size, const unsigned i
return 1;
}
-/* invert src image */
+/*
+ Function: gdImageNegate
+
+ Invert src image.
+ */
BGD_DECLARE(int) gdImageNegate(gdImagePtr src)
{
int x, y;
@@ -200,7 +220,11 @@ BGD_DECLARE(int) gdImageNegate(gdImagePtr src)
return 1;
}
-/* Convert the image src to a grayscale image */
+/*
+ Function: gdImageGrayScale
+
+ Convert the image src to a grayscale image.
+ */
BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src)
{
int x, y;
@@ -233,7 +257,11 @@ BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src)
return 1;
}
-/* Set the brightness level <level> for the image src */
+/*
+ Function: gdImageBrightness
+
+ Set the brightness level <level> for the image src.
+ */
BGD_DECLARE(int) gdImageBrightness(gdImagePtr src, int brightness)
{
int x, y;
@@ -279,6 +307,9 @@ BGD_DECLARE(int) gdImageBrightness(gdImagePtr src, int brightness)
}
+/*
+ Function: gdImageContrast
+ */
BGD_DECLARE(int) gdImageContrast(gdImagePtr src, double contrast)
{
int x, y;
@@ -339,6 +370,9 @@ BGD_DECLARE(int) gdImageContrast(gdImagePtr src, double contrast)
}
+/*
+ Function: gdImageColor
+ */
BGD_DECLARE(int) gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha)
{
int x, y;
@@ -381,6 +415,9 @@ BGD_DECLARE(int) gdImageColor(gdImagePtr src, const int red, const int green, co
return 1;
}
+/*
+ Function: gdImageConvolution
+ */
BGD_DECLARE(int) gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, float offset)
{
int x, y, i, j, new_a;
@@ -441,6 +478,9 @@ BGD_DECLARE(int) gdImageConvolution(gdImagePtr src, float filter[3][3], float fi
return 1;
}
+/*
+ Function: gdImageSelectiveBlur
+ */
BGD_DECLARE(int) gdImageSelectiveBlur( gdImagePtr src)
{
int x, y, i, j;
@@ -559,6 +599,9 @@ BGD_DECLARE(int) gdImageSelectiveBlur( gdImagePtr src)
return 1;
}
+/*
+ Function: gdImageEdgeDetectQuick
+ */
BGD_DECLARE(int) gdImageEdgeDetectQuick(gdImagePtr src)
{
float filter[3][3] = {{-1.0,0.0,-1.0},
@@ -599,6 +642,9 @@ BGD_DECLARE(int) gdImageGaussianBlur(gdImagePtr im)
return gdImageConvolution(im, filter, 16, 0);
}
+/*
+ Function: gdImageEmboss
+ */
BGD_DECLARE(int) gdImageEmboss(gdImagePtr im)
{
/*
@@ -613,6 +659,9 @@ BGD_DECLARE(int) gdImageEmboss(gdImagePtr im)
return gdImageConvolution(im, filter, 1, 127);
}
+/*
+ Function: gdImageMeanRemoval
+ */
BGD_DECLARE(int) gdImageMeanRemoval(gdImagePtr im)
{
float filter[3][3] = {{-1.0,-1.0,-1.0},
@@ -622,6 +671,9 @@ BGD_DECLARE(int) gdImageMeanRemoval(gdImagePtr im)
return gdImageConvolution(im, filter, 1, 0);
}
+/*
+ Function: gdImageSmooth
+ */
BGD_DECLARE(int) gdImageSmooth(gdImagePtr im, float weight)
{
float filter[3][3] = {{1.0,1.0,1.0},
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 f8d39cb00ce..13defa09e42 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_gd.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_gd.c
@@ -326,6 +326,9 @@ _gdImageGd (gdImagePtr im, gdIOCtx * out)
}
}
+/*
+ Function: gdImageGd
+ */
BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * outFile)
{
gdIOCtx *out = gdNewFileCtx (outFile);
@@ -334,6 +337,9 @@ BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * outFile)
out->gd_free (out);
}
+/*
+ Function: gdImageGdPtr
+ */
BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
{
void *rv;
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 3e70bfac673..8df93c12f4e 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_gd2.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_gd2.c
@@ -14,11 +14,9 @@
#include "config.h"
#endif
-#include <stdio.h>
/* 2.0.29: no more errno.h, makes windows happy */
#include <math.h>
#include <string.h>
-#include <stdlib.h>
#include "gd.h"
#include "gd_errors.h"
#include "gdhelpers.h"
@@ -154,10 +152,18 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
if (gd2_compressed (*fmt)) {
nc = (*ncx) * (*ncy);
+
GD2_DBG (printf ("Reading %d chunk index entries\n", nc));
+ if (overflow2(sizeof(t_chunk_info), nc)) {
+ goto fail1;
+ }
sidx = sizeof (t_chunk_info) * nc;
+ if (sidx <= 0) {
+ goto fail1;
+ }
+
cidx = gdCalloc (sidx, 1);
- if (!cidx) {
+ if (cidx == NULL) {
goto fail1;
}
for (i = 0; i < nc; i++) {
@@ -167,6 +173,8 @@ _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)
+ goto fail2;
};
*chunkIdx = cidx;
};
@@ -359,9 +367,8 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
im =
_gd2CreateFromFile (in, &sx, &sy, &cs, &vers, &fmt, &ncx, &ncy,
&chunkIdx);
-
if (im == NULL) {
- gdFree (chunkIdx);
+ /* No need to free chunkIdx as _gd2CreateFromFile does it for us. */
return 0;
}
@@ -1036,6 +1043,9 @@ fail:
}
+/*
+ Function: gdImageGd2
+*/
BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
{
gdIOCtx *out = gdNewFileCtx (outFile);
@@ -1044,6 +1054,9 @@ BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
out->gd_free (out);
}
+/*
+ Function: gdImageGd2Ptr
+*/
BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
{
void *rv;
@@ -1056,15 +1069,55 @@ BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
}
#else /* no HAVE_LIBZ */
-BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
+static void _noLibzError (void)
{
gd_error("GD2 support is not available - no libz\n");
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
+{
+ _noLibzError();
return NULL;
}
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
{
- gd_error("GD2 support is not available - no libz\n");
+ _noLibzError();
+ return NULL;
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
+{
+ _noLibzError();
return NULL;
}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data)
+{
+ _noLibzError();
+ return NULL;
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h)
+{
+ _noLibzError();
+ return NULL;
+}
+
+BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int w,
+ int h)
+{
+ _noLibzError();
+ return NULL;
+}
+
+BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
+{
+ _noLibzError();
+}
+
+BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
+{
+ _noLibzError();
+}
#endif /* HAVE_LIBZ */
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 51ceb753855..3099d4982b7 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
@@ -1442,15 +1442,23 @@ nomatch:
* code in turn. When the buffer fills up empty it and start over.
*/
-static unsigned long masks[] = {
+static const unsigned long masks[] = {
0x0000, 0x0001, 0x0003, 0x0007, 0x000F,
0x001F, 0x003F, 0x007F, 0x00FF,
0x01FF, 0x03FF, 0x07FF, 0x0FFF,
0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF
};
+/* Arbitrary value to mark output is done. When we see EOFCode, then we don't
+ * expect to see any more data. If we do (e.g. corrupt image inputs), cur_bits
+ * might be negative, so flag it to return early.
+ */
+#define CUR_BITS_FINISHED -1000
+
static void output(code_int code, GifCtx *ctx)
{
+ if (ctx->cur_bits == CUR_BITS_FINISHED)
+ return;
ctx->cur_accum &= masks[ctx->cur_bits];
if(ctx->cur_bits > 0) {
@@ -1492,6 +1500,8 @@ static void output(code_int code, GifCtx *ctx)
ctx->cur_accum >>= 8;
ctx->cur_bits -= 8;
}
+ /* Flag that it's done to prevent re-entry. */
+ ctx->cur_bits = CUR_BITS_FINISHED;
flush_char(ctx);
}
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 a30062b11f8..86d817e6d4a 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_intern.h
+++ b/Build/source/libs/gd/libgd-src/src/gd_intern.h
@@ -1,7 +1,7 @@
#ifndef GD_INTERN_H
#define GD_INTERN_H
-#if HAVE_LIMITS_H
+#ifdef HAVE_LIMITS_H
#include <limits.h>
#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 84cf92a0b89..7e7943d6955 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
@@ -61,9 +61,12 @@ TODO:
#include <stdlib.h>
#include <string.h>
#include <math.h>
-#include <assert.h>
-#define NDEBUG 1 /* TODO: disable/enable assertions in configure. */
+#undef NDEBUG
+/* Comment out this line to enable asserts.
+ * TODO: This logic really belongs in cmake and configure.
+ */
+#define NDEBUG 1
#include <assert.h>
#include "gd.h"
@@ -87,10 +90,6 @@ static gdImagePtr gdImageScaleNearestNeighbour(gdImagePtr im,
static gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src,
const float degrees,
const int bgColor);
-static gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees,
- const int bgColor);
-static gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees,
- const int bgColor);
static gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees,
const int bgColor);
@@ -138,28 +137,29 @@ typedef struct
} LineContribType;
/* Each core filter has its own radius */
-#define DEFAULT_FILTER_BICUBIC 3.0
-#define DEFAULT_FILTER_BOX 0.5
-#define DEFAULT_FILTER_GENERALIZED_CUBIC 0.5
-#define DEFAULT_FILTER_RADIUS 1.0
-#define DEFAULT_LANCZOS8_RADIUS 8.0
-#define DEFAULT_LANCZOS3_RADIUS 3.0
-#define DEFAULT_HERMITE_RADIUS 1.0
-#define DEFAULT_BOX_RADIUS 0.5
-#define DEFAULT_TRIANGLE_RADIUS 1.0
-#define DEFAULT_BELL_RADIUS 1.5
-#define DEFAULT_CUBICSPLINE_RADIUS 2.0
-#define DEFAULT_MITCHELL_RADIUS 2.0
-#define DEFAULT_COSINE_RADIUS 1.0
-#define DEFAULT_CATMULLROM_RADIUS 2.0
-#define DEFAULT_QUADRATIC_RADIUS 1.5
-#define DEFAULT_QUADRATICBSPLINE_RADIUS 1.5
-#define DEFAULT_CUBICCONVOLUTION_RADIUS 3.0
-#define DEFAULT_GAUSSIAN_RADIUS 1.0
-#define DEFAULT_HANNING_RADIUS 1.0
-#define DEFAULT_HAMMING_RADIUS 1.0
-#define DEFAULT_SINC_RADIUS 1.0
-#define DEFAULT_WELSH_RADIUS 1.0
+#define DEFAULT_FILTER_LINEAR 1.0f
+#define DEFAULT_FILTER_BICUBIC 3.0f
+#define DEFAULT_FILTER_BOX 0.5f
+#define DEFAULT_FILTER_GENERALIZED_CUBIC 0.5f
+#define DEFAULT_FILTER_RADIUS 1.0f
+#define DEFAULT_LANCZOS8_RADIUS 8.0f
+#define DEFAULT_LANCZOS3_RADIUS 3.0f
+#define DEFAULT_HERMITE_RADIUS 1.0f
+#define DEFAULT_BOX_RADIUS 0.5f
+#define DEFAULT_TRIANGLE_RADIUS 1.0f
+#define DEFAULT_BELL_RADIUS 1.5f
+#define DEFAULT_CUBICSPLINE_RADIUS 2.0f
+#define DEFAULT_MITCHELL_RADIUS 2.0f
+#define DEFAULT_COSINE_RADIUS 1.0f
+#define DEFAULT_CATMULLROM_RADIUS 2.0f
+#define DEFAULT_QUADRATIC_RADIUS 1.5f
+#define DEFAULT_QUADRATICBSPLINE_RADIUS 1.5f
+#define DEFAULT_CUBICCONVOLUTION_RADIUS 3.0f
+#define DEFAULT_GAUSSIAN_RADIUS 1.0f
+#define DEFAULT_HANNING_RADIUS 1.0f
+#define DEFAULT_HAMMING_RADIUS 1.0f
+#define DEFAULT_SINC_RADIUS 1.0f
+#define DEFAULT_WELSH_RADIUS 1.0f
static double KernelBessel_J1(const double x)
{
@@ -306,6 +306,15 @@ static double filter_blackman(const double x)
return (0.42f+0.5f*(double)cos(M_PI*x)+0.08f*(double)cos(2.0f*M_PI*x));
}
+double filter_linear(const double x) {
+ double ax = fabs(x);
+ if (ax < 1.0f) {
+ return (1.0f - ax);
+ }
+ return 0.0f;
+}
+
+
/**
* Bicubic interpolation kernel (a=-1):
\verbatim
@@ -610,6 +619,8 @@ static double filter_welsh(const double x)
# define inline __inline
#endif
+/* keep it for future usage for affine copy over an existing image, targetting fix for 2.2.2 */
+#ifdef FUNCTION_NOT_USED_YET
/* Copied from upstream's libgd */
static inline int _color_blend (const int dst, const int src)
{
@@ -650,6 +661,7 @@ static inline int _setEdgePixel(const gdImagePtr src, unsigned int x, unsigned i
c = c | (( (int) (gd_fxtof(gd_mulfx(coverage, f_127)) + 50.5f)) << 24);
return _color_blend(bgColor, c);
}
+#endif
static inline int getPixelOverflowTC(gdImagePtr im, const int x, const int y, const int bgColor)
{
@@ -660,43 +672,7 @@ static inline int getPixelOverflowTC(gdImagePtr im, const int x, const int y, co
}
return c;
} else {
- register int border = 0;
-
- if (y < im->cy1) {
- border = im->tpixels[0][im->cx1];
- goto processborder;
- }
-
- if (y < im->cy1) {
- border = im->tpixels[0][im->cx1];
- goto processborder;
- }
-
- if (y > im->cy2) {
- if (x >= im->cx1 && x <= im->cx1) {
- border = im->tpixels[im->cy2][x];
- goto processborder;
- } else {
- return gdTrueColorAlpha(0, 0, 0, 127);
- }
- }
-
- /* y is bound safe at this point */
- if (x < im->cx1) {
- border = im->tpixels[y][im->cx1];
- goto processborder;
- }
-
- if (x > im->cx2) {
- border = im->tpixels[y][im->cx2];
- }
-
-processborder:
- if (border == im->transparent) {
- return gdTrueColorAlpha(0, 0, 0, 127);
- } else{
- return gdTrueColorAlpha(gdTrueColorGetRed(border), gdTrueColorGetGreen(border), gdTrueColorGetBlue(border), 127);
- }
+ return bgColor;
}
}
@@ -711,42 +687,7 @@ static inline int getPixelOverflowPalette(gdImagePtr im, const int x, const int
}
return colorIndex2RGBA(c);
} else {
- register int border = 0;
- if (y < im->cy1) {
- border = gdImageGetPixel(im, im->cx1, 0);
- goto processborder;
- }
-
- if (y < im->cy1) {
- border = gdImageGetPixel(im, im->cx1, 0);
- goto processborder;
- }
-
- if (y > im->cy2) {
- if (x >= im->cx1 && x <= im->cx1) {
- border = gdImageGetPixel(im, x, im->cy2);
- goto processborder;
- } else {
- return gdTrueColorAlpha(0, 0, 0, 127);
- }
- }
-
- /* y is bound safe at this point */
- if (x < im->cx1) {
- border = gdImageGetPixel(im, im->cx1, y);
- goto processborder;
- }
-
- if (x > im->cx2) {
- border = gdImageGetPixel(im, im->cx2, y);
- }
-
-processborder:
- if (border == im->transparent) {
- return gdTrueColorAlpha(0, 0, 0, 127);
- } else{
- return colorIndex2RGBcustomA(border, 127);
- }
+ return bgColor;
}
}
@@ -813,8 +754,8 @@ static int getPixelInterpolateWeight(gdImagePtr im, const double x, const double
*/
int getPixelInterpolated(gdImagePtr im, const double x, const double y, const int bgColor)
{
- const int xi=(int)((x) < 0 ? x - 1: x);
- const int yi=(int)((y) < 0 ? y - 1: y);
+ const int xi=(int)(x);
+ const int yi=(int)(y);
int yii;
int i;
double kernel, kernel_cache_y;
@@ -822,7 +763,7 @@ int getPixelInterpolated(gdImagePtr im, const double x, const double y, const in
double new_r = 0.0f, new_g = 0.0f, new_b = 0.0f, new_a = 0.0f;
/* These methods use special implementations */
- if (im->interpolation_id == GD_BILINEAR_FIXED || im->interpolation_id == GD_BICUBIC_FIXED || im->interpolation_id == GD_NEAREST_NEIGHBOUR) {
+ if (im->interpolation_id == GD_NEAREST_NEIGHBOUR) {
return -1;
}
@@ -888,6 +829,7 @@ static inline LineContribType * _gdContributionsAlloc(unsigned int line_length,
{
unsigned int u = 0;
LineContribType *res;
+ int overflow_error = 0;
res = (LineContribType *) gdMalloc(sizeof(LineContribType));
if (!res) {
@@ -895,10 +837,31 @@ static inline LineContribType * _gdContributionsAlloc(unsigned int line_length,
}
res->WindowSize = windows_size;
res->LineLength = line_length;
+ if (overflow2(line_length, sizeof(ContributionType))) {
+ gdFree(res);
+ return NULL;
+ }
res->ContribRow = (ContributionType *) gdMalloc(line_length * sizeof(ContributionType));
-
+ if (res->ContribRow == NULL) {
+ gdFree(res);
+ return NULL;
+ }
for (u = 0 ; u < line_length ; u++) {
- res->ContribRow[u].Weights = (double *) gdMalloc(windows_size * sizeof(double));
+ if (overflow2(windows_size, sizeof(double))) {
+ overflow_error = 1;
+ } else {
+ res->ContribRow[u].Weights = (double *) gdMalloc(windows_size * sizeof(double));
+ }
+ if (overflow_error == 1 || res->ContribRow[u].Weights == NULL) {
+ unsigned int i;
+ u--;
+ for (i=0;i<=u;i++) {
+ gdFree(res->ContribRow[i].Weights);
+ }
+ gdFree(res->ContribRow);
+ gdFree(res);
+ return NULL;
+ }
}
return res;
}
@@ -931,7 +894,9 @@ static inline LineContribType *_gdContributionsCalc(unsigned int line_size, unsi
windows_size = 2 * (int)ceil(width_d) + 1;
res = _gdContributionsAlloc(line_size, windows_size);
-
+ if (res == NULL) {
+ return NULL;
+ }
for (u = 0; u < line_size; u++) {
const double dCenter = (double)u / scale_d;
/* get the significant edge points affecting the pixel */
@@ -1036,7 +1001,6 @@ _gdScalePass(const gdImagePtr pSrc, const unsigned int src_len,
_gdScaleOneAxis(pSrc, pDst, dst_len, line_ndx, contrib, axis);
}
_gdContributionsFree (contrib);
-
return 1;
}/* _gdScalePass*/
@@ -1049,6 +1013,7 @@ gdImageScaleTwoPass(const gdImagePtr src, const unsigned int new_width,
const unsigned int src_height = src->sy;
gdImagePtr tmp_im = NULL;
gdImagePtr dst = NULL;
+ int scale_pass_res;
/* First, handle the trivial case. */
if (src_width == new_width && src_height == new_height) {
@@ -1070,7 +1035,11 @@ gdImageScaleTwoPass(const gdImagePtr src, const unsigned int new_width,
}
gdImageSetInterpolationMethod(tmp_im, src->interpolation_id);
- _gdScalePass(src, src_width, tmp_im, new_width, src_height, HORIZONTAL);
+ scale_pass_res = _gdScalePass(src, src_width, tmp_im, new_width, src_height, HORIZONTAL);
+ if (scale_pass_res != 1) {
+ gdImageDestroy(tmp_im);
+ return NULL;
+ }
}/* if .. else*/
/* If vertical sizes match, we're done. */
@@ -1083,11 +1052,19 @@ gdImageScaleTwoPass(const gdImagePtr src, const unsigned int new_width,
dst = gdImageCreateTrueColor(new_width, new_height);
if (dst != NULL) {
gdImageSetInterpolationMethod(dst, src->interpolation_id);
- _gdScalePass(tmp_im, src_height, dst, new_height, new_width, VERTICAL);
+ scale_pass_res = _gdScalePass(tmp_im, src_height, dst, new_height, new_width, VERTICAL);
+ if (scale_pass_res != 1) {
+ gdImageDestroy(dst);
+ if (tmp_im != NULL && src != tmp_im) {
+ gdImageDestroy(tmp_im);
+ }
+ return NULL;
+ }
}/* if */
- if (src != tmp_im) {
- gdFree(tmp_im);
+
+ if (tmp_im != NULL && src != tmp_im) {
+ gdImageDestroy(tmp_im);
}/* if */
return dst;
@@ -1156,6 +1133,7 @@ gdImageScaleNearestNeighbour(gdImagePtr im, const unsigned int width, const unsi
return dst_img;
}
+#if 0
static inline int getPixelOverflowColorTC(gdImagePtr im, const int x, const int y, const int color)
{
if (gdImageBoundsSafe(im, x, y)) {
@@ -1203,6 +1181,7 @@ processborder:
}
}
}
+#endif
static gdImagePtr gdImageScaleBilinearPalette(gdImagePtr im, const unsigned int new_width, const unsigned int new_height)
{
@@ -1224,7 +1203,13 @@ static gdImagePtr gdImageScaleBilinearPalette(gdImagePtr im, const unsigned int
if (new_img == NULL) {
return NULL;
}
- new_img->transparent = gdTrueColorAlpha(im->red[transparent], im->green[transparent], im->blue[transparent], im->alpha[transparent]);
+
+ if (transparent < 0) {
+ /* uninitialized */
+ new_img->transparent = -1;
+ } else {
+ new_img->transparent = gdTrueColorAlpha(im->red[transparent], im->green[transparent], im->blue[transparent], im->alpha[transparent]);
+ }
for (i=0; i < _height; i++) {
long j;
@@ -1452,13 +1437,8 @@ gdImageScaleBicubicFixed(gdImagePtr src, const unsigned int width,
src_offset_y[0] = m;
}
- if (m < 1) {
- src_offset_x[1] = n;
- src_offset_y[1] = m;
- } else {
- src_offset_x[1] = n;
- src_offset_y[1] = m;
- }
+ src_offset_x[1] = n;
+ src_offset_y[1] = m;
if ((m < 1) || (n >= src_w - 1)) {
src_offset_x[2] = n;
@@ -1542,10 +1522,7 @@ gdImageScaleBicubicFixed(gdImagePtr src, const unsigned int width,
src_offset_y[12] = m;
}
- if (m >= src_h - 2) {
- src_offset_x[13] = n;
- src_offset_y[13] = m;
- } else {
+ if (!(m >= src_h - 2)) {
src_offset_x[13] = n;
src_offset_y[13] = m;
}
@@ -1630,14 +1607,23 @@ gdImageScaleBicubicFixed(gdImagePtr src, const unsigned int width,
return dst;
}
+/*
+ Function: gdImageScale
+*/
BGD_DECLARE(gdImagePtr) gdImageScale(const gdImagePtr src, const unsigned int new_width, const unsigned int new_height)
{
gdImagePtr im_scaled = NULL;
- if (src == NULL || src->interpolation_id < 0 || src->interpolation_id > GD_METHOD_COUNT) {
- return 0;
+ if (src == NULL || (uintmax_t)src->interpolation_id >= GD_METHOD_COUNT) {
+ return NULL;
}
+ if (new_width == 0 || new_height == 0) {
+ return NULL;
+ }
+ if (new_width == gdImageSX(src) && new_height == gdImageSY(src)) {
+ return gdImageClone(src);
+ }
switch (src->interpolation_id) {
/*Special cases, optimized implementations */
case GD_NEAREST_NEIGHBOUR:
@@ -1645,10 +1631,12 @@ BGD_DECLARE(gdImagePtr) gdImageScale(const gdImagePtr src, const unsigned int ne
break;
case GD_BILINEAR_FIXED:
+ case GD_LINEAR:
im_scaled = gdImageScaleBilinear(src, new_width, new_height);
break;
case GD_BICUBIC_FIXED:
+ case GD_BICUBIC:
im_scaled = gdImageScaleBicubicFixed(src, new_width, new_height);
break;
@@ -1664,6 +1652,23 @@ BGD_DECLARE(gdImagePtr) gdImageScale(const gdImagePtr src, const unsigned int ne
return im_scaled;
}
+static int gdRotatedImageSize(gdImagePtr src, const float angle, gdRectPtr bbox)
+{
+ gdRect src_area;
+ double m[6];
+
+ gdAffineRotate(m, angle);
+ src_area.x = 0;
+ src_area.y = 0;
+ src_area.width = gdImageSX(src);
+ src_area.height = gdImageSY(src);
+ if (gdTransformAffineBoundingBox(&src_area, m, bbox) != GD_TRUE) {
+ return GD_FALSE;
+ }
+
+ return GD_TRUE;
+}
+
static gdImagePtr
gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees,
const int bgColor)
@@ -1671,8 +1676,6 @@ gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees,
float _angle = ((float) (-degrees / 180.0f) * (float)M_PI);
const int src_w = gdImageSX(src);
const int src_h = gdImageSY(src);
- const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
- const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
const gdFixed f_0_5 = gd_ftofx(0.5f);
const gdFixed f_H = gd_itofx(src_h/2);
const gdFixed f_W = gd_itofx(src_w/2);
@@ -1683,6 +1686,8 @@ gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees,
unsigned int dst_offset_y = 0;
unsigned int i;
gdImagePtr dst;
+ gdRect bbox;
+ int new_height, new_width;
/* impact perf a bit, but not that much. Implementation for palette
images can be done at a later point.
@@ -1691,6 +1696,10 @@ gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees,
gdImagePaletteToTrueColor(src);
}
+ gdRotatedImageSize(src, degrees, &bbox);
+ new_width = bbox.width;
+ new_height = bbox.height;
+
dst = gdImageCreateTrueColor(new_width, new_height);
if (!dst) {
return NULL;
@@ -1728,9 +1737,6 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
float _angle = ((float) (-degrees / 180.0f) * (float)M_PI);
const int src_w = gdImageSX(src);
const int src_h = gdImageSY(src);
- const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
- const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
- const gdFixed f_0_5 = gd_ftofx(0.5f);
const gdFixed f_H = gd_itofx(src_h/2);
const gdFixed f_W = gd_itofx(src_w/2);
const gdFixed f_cos = gd_ftofx(cos(-_angle));
@@ -1740,12 +1746,8 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
unsigned int dst_offset_y = 0;
unsigned int i;
gdImagePtr dst;
-
- const gdFixed f_slop_y = f_sin;
- const gdFixed f_slop_x = f_cos;
- const gdFixed f_slop = f_slop_x > 0 && f_slop_x > 0 ?
- f_slop_x > f_slop_y ? gd_divfx(f_slop_y, f_slop_x) : gd_divfx(f_slop_x, f_slop_y)
- : 0;
+ int new_width, new_height;
+ gdRect bbox;
if (bgColor < 0) {
return NULL;
@@ -1758,6 +1760,14 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
gdImagePaletteToTrueColor(src);
}
+ if (src->interpolation == NULL) {
+ gdImageSetInterpolationMethod(src, GD_DEFAULT);
+ }
+
+ gdRotatedImageSize(src, degrees, &bbox);
+ new_width = bbox.width;
+ new_height = bbox.height;
+
dst = gdImageCreateTrueColor(new_width, new_height);
if (!dst) {
return NULL;
@@ -1770,20 +1780,15 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
for (j = 0; j < new_width; j++) {
gdFixed f_i = gd_itofx((int)i - (int)new_height / 2);
gdFixed f_j = gd_itofx((int)j - (int)new_width / 2);
- gdFixed f_m = gd_mulfx(f_j,f_sin) + gd_mulfx(f_i,f_cos) + f_0_5 + f_H;
- gdFixed f_n = gd_mulfx(f_j,f_cos) - gd_mulfx(f_i,f_sin) + f_0_5 + f_W;
+ gdFixed f_m = gd_mulfx(f_j,f_sin) + gd_mulfx(f_i,f_cos) + f_H;
+ gdFixed f_n = gd_mulfx(f_j,f_cos) - gd_mulfx(f_i,f_sin) + f_W;
long m = gd_fxtoi(f_m);
long n = gd_fxtoi(f_n);
- if ((n <= 0) || (m <= 0) || (m >= src_h) || (n >= src_w)) {
+ if (m < -1 || n < -1 || m >= src_h || n >= src_w ) {
dst->tpixels[dst_offset_y][dst_offset_x++] = bgColor;
- } else if ((n <= 1) || (m <= 1) || (m >= src_h - 1) || (n >= src_w - 1)) {
- register int c = getPixelInterpolated(src, n, m, bgColor);
- c = c | (( gdTrueColorGetAlpha(c) + ((int)(127* gd_fxtof(f_slop)))) << 24);
-
- dst->tpixels[dst_offset_y][dst_offset_x++] = _color_blend(bgColor, c);
} else {
- dst->tpixels[dst_offset_y][dst_offset_x++] = getPixelInterpolated(src, n, m, bgColor);
+ dst->tpixels[dst_offset_y][dst_offset_x++] = getPixelInterpolated(src, gd_fxtod(f_n), gd_fxtod(f_m), bgColor);
}
}
dst_offset_y++;
@@ -1791,405 +1796,9 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
return dst;
}
-static gdImagePtr
-gdImageRotateBilinear(gdImagePtr src, const float degrees, const int bgColor)
-{
- float _angle = (float)((- degrees / 180.0f) * M_PI);
- const unsigned int src_w = gdImageSX(src);
- const unsigned int src_h = gdImageSY(src);
- unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
- unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
- const gdFixed f_0_5 = gd_ftofx(0.5f);
- const gdFixed f_H = gd_itofx(src_h/2);
- const gdFixed f_W = gd_itofx(src_w/2);
- const gdFixed f_cos = gd_ftofx(cos(-_angle));
- const gdFixed f_sin = gd_ftofx(sin(-_angle));
- const gdFixed f_1 = gd_itofx(1);
- unsigned int i;
- unsigned int dst_offset_x;
- unsigned int dst_offset_y = 0;
- unsigned int src_offset_x, src_offset_y;
- gdImagePtr dst;
-
- /* impact perf a bit, but not that much. Implementation for palette
- images can be done at a later point.
- */
- if (src->trueColor == 0) {
- gdImagePaletteToTrueColor(src);
- }
-
- dst = gdImageCreateTrueColor(new_width, new_height);
- if (dst == NULL) {
- return NULL;
- }
- dst->saveAlphaFlag = 1;
-
- for (i = 0; i < new_height; i++) {
- unsigned int j;
- dst_offset_x = 0;
-
- for (j=0; j < new_width; j++) {
- const gdFixed f_i = gd_itofx((int)i - (int)new_height / 2);
- const gdFixed f_j = gd_itofx((int)j - (int)new_width / 2);
- const gdFixed f_m = gd_mulfx(f_j,f_sin) + gd_mulfx(f_i,f_cos) + f_0_5 + f_H;
- const gdFixed f_n = gd_mulfx(f_j,f_cos) - gd_mulfx(f_i,f_sin) + f_0_5 + f_W;
- const unsigned int m = gd_fxtoi(f_m);
- const unsigned int n = gd_fxtoi(f_n);
-
- if ((m > 0) && (m < src_h - 1) && (n > 0) && (n < src_w - 1)) {
- const gdFixed f_f = f_m - gd_itofx(m);
- const gdFixed f_g = f_n - gd_itofx(n);
- const gdFixed f_w1 = gd_mulfx(f_1-f_f, f_1-f_g);
- const gdFixed f_w2 = gd_mulfx(f_1-f_f, f_g);
- const gdFixed f_w3 = gd_mulfx(f_f, f_1-f_g);
- const gdFixed f_w4 = gd_mulfx(f_f, f_g);
-
- if (n < src_w - 1) {
- src_offset_x = n + 1;
- src_offset_y = m;
- }
-
- if (m < src_h - 1) {
- src_offset_x = n;
- src_offset_y = m + 1;
- }
-
- if (!((n >= src_w - 1) || (m >= src_h - 1))) {
- src_offset_x = n + 1;
- src_offset_y = m + 1;
- }
- {
- const int pixel1 = src->tpixels[src_offset_y][src_offset_x];
- register int pixel2, pixel3, pixel4;
-
- if (src_offset_y + 1 >= src_h) {
- pixel2 = bgColor;
- pixel3 = bgColor;
- pixel4 = bgColor;
- } else if (src_offset_x + 1 >= src_w) {
- pixel2 = bgColor;
- pixel3 = bgColor;
- pixel4 = bgColor;
- } else {
- pixel2 = src->tpixels[src_offset_y][src_offset_x + 1];
- pixel3 = src->tpixels[src_offset_y + 1][src_offset_x];
- pixel4 = src->tpixels[src_offset_y + 1][src_offset_x + 1];
- }
- {
- const gdFixed f_r1 = gd_itofx(gdTrueColorGetRed(pixel1));
- const gdFixed f_r2 = gd_itofx(gdTrueColorGetRed(pixel2));
- const gdFixed f_r3 = gd_itofx(gdTrueColorGetRed(pixel3));
- const gdFixed f_r4 = gd_itofx(gdTrueColorGetRed(pixel4));
- const gdFixed f_g1 = gd_itofx(gdTrueColorGetGreen(pixel1));
- const gdFixed f_g2 = gd_itofx(gdTrueColorGetGreen(pixel2));
- const gdFixed f_g3 = gd_itofx(gdTrueColorGetGreen(pixel3));
- const gdFixed f_g4 = gd_itofx(gdTrueColorGetGreen(pixel4));
- const gdFixed f_b1 = gd_itofx(gdTrueColorGetBlue(pixel1));
- const gdFixed f_b2 = gd_itofx(gdTrueColorGetBlue(pixel2));
- const gdFixed f_b3 = gd_itofx(gdTrueColorGetBlue(pixel3));
- const gdFixed f_b4 = gd_itofx(gdTrueColorGetBlue(pixel4));
- const gdFixed f_a1 = gd_itofx(gdTrueColorGetAlpha(pixel1));
- const gdFixed f_a2 = gd_itofx(gdTrueColorGetAlpha(pixel2));
- const gdFixed f_a3 = gd_itofx(gdTrueColorGetAlpha(pixel3));
- const gdFixed f_a4 = gd_itofx(gdTrueColorGetAlpha(pixel4));
- const gdFixed f_red = gd_mulfx(f_w1, f_r1) + gd_mulfx(f_w2, f_r2) + gd_mulfx(f_w3, f_r3) + gd_mulfx(f_w4, f_r4);
- const gdFixed f_green = gd_mulfx(f_w1, f_g1) + gd_mulfx(f_w2, f_g2) + gd_mulfx(f_w3, f_g3) + gd_mulfx(f_w4, f_g4);
- const gdFixed f_blue = gd_mulfx(f_w1, f_b1) + gd_mulfx(f_w2, f_b2) + gd_mulfx(f_w3, f_b3) + gd_mulfx(f_w4, f_b4);
- const gdFixed f_alpha = gd_mulfx(f_w1, f_a1) + gd_mulfx(f_w2, f_a2) + gd_mulfx(f_w3, f_a3) + gd_mulfx(f_w4, f_a4);
-
- const unsigned char red = (unsigned char) CLAMP(gd_fxtoi(f_red), 0, 255);
- const unsigned char green = (unsigned char) CLAMP(gd_fxtoi(f_green), 0, 255);
- const unsigned char blue = (unsigned char) CLAMP(gd_fxtoi(f_blue), 0, 255);
- const unsigned char alpha = (unsigned char) CLAMP(gd_fxtoi(f_alpha), 0, 127);
-
- dst->tpixels[dst_offset_y][dst_offset_x++] = gdTrueColorAlpha(red, green, blue, alpha);
- }
- }
- } else {
- dst->tpixels[dst_offset_y][dst_offset_x++] = bgColor;
- }
- }
- dst_offset_y++;
- }
- return dst;
-}
-
-static gdImagePtr
-gdImageRotateBicubicFixed(gdImagePtr src, const float degrees,const int bgColor)
-{
- const float _angle = (float)((- degrees / 180.0f) * M_PI);
- const int src_w = gdImageSX(src);
- const int src_h = gdImageSY(src);
- const unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
- const unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
- const gdFixed f_0_5 = gd_ftofx(0.5f);
- const gdFixed f_H = gd_itofx(src_h/2);
- const gdFixed f_W = gd_itofx(src_w/2);
- const gdFixed f_cos = gd_ftofx(cos(-_angle));
- const gdFixed f_sin = gd_ftofx(sin(-_angle));
- const gdFixed f_1 = gd_itofx(1);
- const gdFixed f_2 = gd_itofx(2);
- const gdFixed f_4 = gd_itofx(4);
- const gdFixed f_6 = gd_itofx(6);
- const gdFixed f_gama = gd_ftofx(1.04f);
-
- unsigned int dst_offset_x;
- unsigned int dst_offset_y = 0;
- unsigned int i;
- gdImagePtr dst;
-
- /* impact perf a bit, but not that much. Implementation for palette
- images can be done at a later point.
- */
- if (src->trueColor == 0) {
- gdImagePaletteToTrueColor(src);
- }
-
- dst = gdImageCreateTrueColor(new_width, new_height);
-
- if (dst == NULL) {
- return NULL;
- }
- dst->saveAlphaFlag = 1;
-
- for (i=0; i < new_height; i++) {
- unsigned int j;
- dst_offset_x = 0;
-
- for (j=0; j < new_width; j++) {
- const gdFixed f_i = gd_itofx((int)i - (int)new_height / 2);
- const gdFixed f_j = gd_itofx((int)j - (int)new_width / 2);
- const gdFixed f_m = gd_mulfx(f_j,f_sin) + gd_mulfx(f_i,f_cos) + f_0_5 + f_H;
- const gdFixed f_n = gd_mulfx(f_j,f_cos) - gd_mulfx(f_i,f_sin) + f_0_5 + f_W;
- const int m = gd_fxtoi(f_m);
- const int n = gd_fxtoi(f_n);
-
- if ((m > 0) && (m < src_h - 1) && (n > 0) && (n < src_w-1)) {
- const gdFixed f_f = f_m - gd_itofx(m);
- const gdFixed f_g = f_n - gd_itofx(n);
- unsigned int src_offset_x[16], src_offset_y[16];
- unsigned char red, green, blue, alpha;
- gdFixed f_red=0, f_green=0, f_blue=0, f_alpha=0;
- int k;
-
- if ((m < 1) || (n < 1)) {
- src_offset_x[0] = n;
- src_offset_y[0] = m;
- } else {
- src_offset_x[0] = n - 1;
- src_offset_y[0] = m;
- }
-
- if (m < 1) {
- src_offset_x[1] = n;
- src_offset_y[1] = m;
- } else {
- src_offset_x[1] = n;
- src_offset_y[1] = m ;
- }
-
- if ((m < 1) || (n >= src_w-1)) {
- src_offset_x[2] = - 1;
- src_offset_y[2] = - 1;
- } else {
- src_offset_x[2] = n + 1;
- src_offset_y[2] = m ;
- }
-
- if ((m < 1) || (n >= src_w-2)) {
- src_offset_x[3] = - 1;
- src_offset_y[3] = - 1;
- } else {
- src_offset_x[3] = n + 1 + 1;
- src_offset_y[3] = m ;
- }
-
- if (n < 1) {
- src_offset_x[4] = - 1;
- src_offset_y[4] = - 1;
- } else {
- src_offset_x[4] = n - 1;
- src_offset_y[4] = m;
- }
-
- src_offset_x[5] = n;
- src_offset_y[5] = m;
- if (n >= src_w-1) {
- src_offset_x[6] = - 1;
- src_offset_y[6] = - 1;
- } else {
- src_offset_x[6] = n + 1;
- src_offset_y[6] = m;
- }
-
- if (n >= src_w-2) {
- src_offset_x[7] = - 1;
- src_offset_y[7] = - 1;
- } else {
- src_offset_x[7] = n + 1 + 1;
- src_offset_y[7] = m;
- }
-
- if ((m >= src_h-1) || (n < 1)) {
- src_offset_x[8] = - 1;
- src_offset_y[8] = - 1;
- } else {
- src_offset_x[8] = n - 1;
- src_offset_y[8] = m;
- }
-
- if (m >= src_h-1) {
- src_offset_x[8] = - 1;
- src_offset_y[8] = - 1;
- } else {
- src_offset_x[9] = n;
- src_offset_y[9] = m;
- }
-
- if ((m >= src_h-1) || (n >= src_w-1)) {
- src_offset_x[10] = - 1;
- src_offset_y[10] = - 1;
- } else {
- src_offset_x[10] = n + 1;
- src_offset_y[10] = m;
- }
-
- if ((m >= src_h-1) || (n >= src_w-2)) {
- src_offset_x[11] = - 1;
- src_offset_y[11] = - 1;
- } else {
- src_offset_x[11] = n + 1 + 1;
- src_offset_y[11] = m;
- }
-
- if ((m >= src_h-2) || (n < 1)) {
- src_offset_x[12] = - 1;
- src_offset_y[12] = - 1;
- } else {
- src_offset_x[12] = n - 1;
- src_offset_y[12] = m;
- }
-
- if (m >= src_h-2) {
- src_offset_x[13] = - 1;
- src_offset_y[13] = - 1;
- } else {
- src_offset_x[13] = n;
- src_offset_y[13] = m;
- }
-
- if ((m >= src_h-2) || (n >= src_w - 1)) {
- src_offset_x[14] = - 1;
- src_offset_y[14] = - 1;
- } else {
- src_offset_x[14] = n + 1;
- src_offset_y[14] = m;
- }
-
- if ((m >= src_h-2) || (n >= src_w-2)) {
- src_offset_x[15] = - 1;
- src_offset_y[15] = - 1;
- } else {
- src_offset_x[15] = n + 1 + 1;
- src_offset_y[15] = m;
- }
-
- for (k=-1; k<3; k++) {
- const gdFixed f = gd_itofx(k)-f_f;
- const gdFixed f_fm1 = f - f_1;
- const gdFixed f_fp1 = f + f_1;
- const gdFixed f_fp2 = f + f_2;
- gdFixed f_a = 0, f_b = 0,f_c = 0, f_d = 0;
- gdFixed f_RY;
- int l;
-
- if (f_fp2 > 0) {
- f_a = gd_mulfx(f_fp2,gd_mulfx(f_fp2,f_fp2));
- }
-
- if (f_fp1 > 0) {
- f_b = gd_mulfx(f_fp1,gd_mulfx(f_fp1,f_fp1));
- }
-
- if (f > 0) {
- f_c = gd_mulfx(f,gd_mulfx(f,f));
- }
-
- if (f_fm1 > 0) {
- f_d = gd_mulfx(f_fm1,gd_mulfx(f_fm1,f_fm1));
- }
- f_RY = gd_divfx((f_a-gd_mulfx(f_4,f_b)+gd_mulfx(f_6,f_c)-gd_mulfx(f_4,f_d)),f_6);
-
- for (l=-1; l< 3; l++) {
- const gdFixed f = gd_itofx(l) - f_g;
- const gdFixed f_fm1 = f - f_1;
- const gdFixed f_fp1 = f + f_1;
- const gdFixed f_fp2 = f + f_2;
- gdFixed f_a = 0, f_b = 0, f_c = 0, f_d = 0;
- gdFixed f_RX, f_R;
- const int _k = ((k + 1) * 4) + (l + 1);
- register gdFixed f_rs, f_gs, f_bs, f_as;
- register int c;
-
- if (f_fp2 > 0) {
- f_a = gd_mulfx(f_fp2,gd_mulfx(f_fp2,f_fp2));
- }
-
- if (f_fp1 > 0) {
- f_b = gd_mulfx(f_fp1,gd_mulfx(f_fp1,f_fp1));
- }
-
- if (f > 0) {
- f_c = gd_mulfx(f,gd_mulfx(f,f));
- }
-
- if (f_fm1 > 0) {
- f_d = gd_mulfx(f_fm1,gd_mulfx(f_fm1,f_fm1));
- }
-
- f_RX = gd_divfx((f_a - gd_mulfx(f_4, f_b) + gd_mulfx(f_6, f_c) - gd_mulfx(f_4, f_d)), f_6);
- f_R = gd_mulfx(f_RY, f_RX);
-
- if ((src_offset_x[_k] <= 0) || (src_offset_y[_k] <= 0) || (src_offset_y[_k] >= src_h) || (src_offset_x[_k] >= src_w)) {
- c = bgColor;
- } else if ((src_offset_x[_k] <= 1) || (src_offset_y[_k] <= 1) || (src_offset_y[_k] >= (int)src_h - 1) || (src_offset_x[_k] >= (int)src_w - 1)) {
- gdFixed f_127 = gd_itofx(127);
- c = src->tpixels[src_offset_y[_k]][src_offset_x[_k]];
- c = c | (( (int) (gd_fxtof(gd_mulfx(f_R, f_127)) + 50.5f)) << 24);
- c = _color_blend(bgColor, c);
- } else {
- c = src->tpixels[src_offset_y[_k]][src_offset_x[_k]];
- }
-
- f_rs = gd_itofx(gdTrueColorGetRed(c));
- f_gs = gd_itofx(gdTrueColorGetGreen(c));
- f_bs = gd_itofx(gdTrueColorGetBlue(c));
- f_as = gd_itofx(gdTrueColorGetAlpha(c));
-
- f_red += gd_mulfx(f_rs, f_R);
- f_green += gd_mulfx(f_gs, f_R);
- f_blue += gd_mulfx(f_bs, f_R);
- f_alpha += gd_mulfx(f_as, f_R);
- }
- }
-
- red = (unsigned char) CLAMP(gd_fxtoi(gd_mulfx(f_red, f_gama)), 0, 255);
- green = (unsigned char) CLAMP(gd_fxtoi(gd_mulfx(f_green, f_gama)), 0, 255);
- blue = (unsigned char) CLAMP(gd_fxtoi(gd_mulfx(f_blue, f_gama)), 0, 255);
- alpha = (unsigned char) CLAMP(gd_fxtoi(gd_mulfx(f_alpha, f_gama)), 0, 127);
-
- dst->tpixels[dst_offset_y][dst_offset_x] = gdTrueColorAlpha(red, green, blue, alpha);
- } else {
- dst->tpixels[dst_offset_y][dst_offset_x] = bgColor;
- }
- dst_offset_x++;
- }
-
- dst_offset_y++;
- }
- return dst;
-}
-
+/*
+ Function: gdImageRotateInterpolated
+*/
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
@@ -2216,7 +1825,7 @@ BGD_DECLARE(gdImagePtr) gdImageRotateInterpolated(const gdImagePtr src, const fl
return dst;
}
- case -2700:
+ case -27000:
case 9000:
return gdImageRotate90(src, 0);
@@ -2239,13 +1848,7 @@ BGD_DECLARE(gdImagePtr) gdImageRotateInterpolated(const gdImagePtr src, const fl
break;
case GD_BILINEAR_FIXED:
- return gdImageRotateBilinear(src, angle, bgcolor);
- break;
-
case GD_BICUBIC_FIXED:
- return gdImageRotateBicubicFixed(src, angle, bgcolor);
- break;
-
default:
return gdImageRotateGeneric(src, angle, bgcolor);
}
@@ -2339,7 +1942,7 @@ BGD_DECLARE(int) gdTransformAffineGetImage(gdImagePtr *dst,
if (res != GD_TRUE) {
gdImageDestroy(*dst);
- dst = NULL;
+ *dst = NULL;
return GD_FALSE;
} else {
return GD_TRUE;
@@ -2412,8 +2015,8 @@ BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst,
gdImageGetClip(dst, &c1x, &c1y, &c2x, &c2y);
- end_x = bbox.width + (int) fabs(bbox.x);
- end_y = bbox.height + (int) fabs(bbox.y);
+ 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);
@@ -2508,35 +2111,40 @@ BGD_DECLARE(int) gdTransformAffineBoundingBox(gdRectPtr src, const double affine
}
bbox->x = (int) min.x;
bbox->y = (int) min.y;
- bbox->width = (int) floor(max.x - min.x) - 1;
- bbox->height = (int) floor(max.y - min.y);
+ bbox->width = (int) ceil((max.x - min.x)) + 1;
+ bbox->height = (int) ceil(max.y - min.y) + 1;
+
return GD_TRUE;
}
+/*
+ Function: gdImageSetInterpolationMethod
+*/
BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMethod id)
{
- if (im == NULL || id < 0 || id > GD_METHOD_COUNT) {
+ if (im == NULL || (uintmax_t)id > GD_METHOD_COUNT) {
return 0;
}
switch (id) {
- case GD_DEFAULT:
- id = GD_BILINEAR_FIXED;
- /* Optimized versions */
- case GD_BILINEAR_FIXED:
- case GD_BICUBIC_FIXED:
case GD_NEAREST_NEIGHBOUR:
case GD_WEIGHTED4:
im->interpolation = NULL;
break;
/* generic versions*/
+ /* GD_BILINEAR_FIXED and GD_BICUBIC_FIXED are kept for BC reasons */
+ case GD_BILINEAR_FIXED:
+ case GD_LINEAR:
+ im->interpolation = filter_linear;
+ break;
case GD_BELL:
im->interpolation = filter_bell;
break;
case GD_BESSEL:
im->interpolation = filter_bessel;
break;
+ case GD_BICUBIC_FIXED:
case GD_BICUBIC:
im->interpolation = filter_bicubic;
break;
@@ -2582,7 +2190,9 @@ BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMet
case GD_TRIANGLE:
im->interpolation = filter_triangle;
break;
-
+ case GD_DEFAULT:
+ id = GD_LINEAR;
+ im->interpolation = filter_linear;
default:
return 0;
break;
@@ -2592,9 +2202,13 @@ BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMet
}
-/* Return the interpolation mode set in 'im'. 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. */
+/*
+ Function: gdImageGetInterpolationMethod
+
+ Return the interpolation mode set in 'im'. 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.
+*/
BGD_DECLARE(gdInterpolationMethod) gdImageGetInterpolationMethod(gdImagePtr im)
{
return im->interpolation_id;
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 8dbcc62e2aa..135eda3fcb0 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
@@ -64,13 +64,20 @@ static int dynamicGetchar(gdIOCtxPtr ctx);
static int dynamicSeek(struct gdIOCtx *, const int);
static long dynamicTell(struct gdIOCtx *);
-/* return data as a dynamic pointer */
+/*
+ Function: gdNewDynamicCtx
+
+ Return data as a dynamic pointer.
+*/
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtx(int initialSize, void *data)
{
/* 2.0.23: Phil Moore: 'return' keyword was missing! */
return gdNewDynamicCtxEx(initialSize, data, 1);
}
+/*
+ Function: gdNewDynamicCtxEx
+*/
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx(int initialSize, void *data, int freeOKFlag)
{
dpIOCtx *ctx;
@@ -103,6 +110,9 @@ BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx(int initialSize, void *data, int freeOK
return (gdIOCtx *)ctx;
}
+/*
+ Function: gdDPExtractData
+*/
BGD_DECLARE(void *) gdDPExtractData (struct gdIOCtx *ctx, int *size)
{
dynamicPtr *dp;
diff --git a/Build/source/libs/gd/libgd-src/src/gd_io_file.c b/Build/source/libs/gd/libgd-src/src/gd_io_file.c
index d3893e4cea2..40c4f5921b6 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_io_file.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_io_file.c
@@ -48,7 +48,11 @@ static int fileSeek(struct gdIOCtx *, const int);
static long fileTell(struct gdIOCtx *);
static void gdFreeFileCtx(gdIOCtx *ctx);
-/* return data as a dynamic pointer */
+/*
+ Function: gdNewFileCtx
+
+ Return data as a dynamic pointer.
+*/
BGD_DECLARE(gdIOCtx *) gdNewFileCtx(FILE *f)
{
fileIOCtx *ctx;
diff --git a/Build/source/libs/gd/libgd-src/src/gd_io_ss.c b/Build/source/libs/gd/libgd-src/src/gd_io_ss.c
index a0cf3918f91..abff844affa 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_io_ss.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_io_ss.c
@@ -47,7 +47,11 @@ static int sinkPutbuf(gdIOCtx *ctx, const void *buf, int size);
static void sinkPutchar(gdIOCtx *ctx, int a);
static void gdFreeSsCtx(gdIOCtx *ctx);
-/* return data as a dynamic pointer */
+/*
+ Function: gdNewSSCtx
+
+ Return data as a dynamic pointer.
+*/
BGD_DECLARE(gdIOCtx *) gdNewSSCtx(gdSourcePtr src, gdSinkPtr snk)
{
ssIOCtxPtr ctx;
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 04c0011b3e9..28021afc1ae 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,145 +1,145 @@
-/* *****************************************************************************
-** $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.
- Note that half of the below methods are trivial stubs,
- as an input stream has no need of output methods, and vice-versa.
-*/
-#ifdef __cplusplus
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gd_io_stream.h"
-
-/** Read into buffer from stream
- 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).
-*/
-int istreamIOCtx::Getbuf (struct gdIOCtx * ctx, void * buf, int size)
- {
- stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
- _str->read((char * )buf, size);
- return _str->gcount();
- }
-/** Write from buffer to stream
- 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).
-*/
-int istreamIOCtx::Putbuf (struct gdIOCtx * , const void * , int )
- {
- return 0;
- }
-
-/** Reads the next character from stream and returns it as an
- unsigned char cast to an int, or EOF on end of file or error.
-*/
-int istreamIOCtx::Getchar (struct gdIOCtx * ctx)
- {
- stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
- return _str->get();
- }
-/** Write the character to stream
- Character is cast to unsigned char before writing
-*/
-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!
-*/
-int istreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
- {
- stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
- _str->seekg(pos);
- return !_str->fail();
- }
-/** Obtains the current value of the stream position.
- Returns -1 on error.
-*/
-long istreamIOCtx::Tell (struct gdIOCtx * ctx)
- {
- stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
- return _str->tellg();
- }
-/** Deallocate the context
-*/
-void istreamIOCtx::FreeCtx (struct gdIOCtx * ctx)
- {
- delete (istreamIOCtx * )ctx;
- }
-
-/** Read into buffer from stream
- 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).
-*/
-int ostreamIOCtx::Getbuf (struct gdIOCtx * , void * , int )
- {
- return 0;
- }
-/** Write from buffer to stream
- 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).
-*/
-int ostreamIOCtx::Putbuf (struct gdIOCtx * ctx, const void * buf, int size)
- {
- stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
- _str->write((const char * )buf, size);
- return _str->bad()?0:size;
- }
-
-/** Reads the next character from stream and returns it as an
- unsigned char cast to an int, or EOF on end of file or error.
-*/
-int ostreamIOCtx::Getchar (struct gdIOCtx * )
- {
- return EOF;
- }
-/** Write the character to stream
- Character is cast to unsigned char before writing
-*/
-void ostreamIOCtx::Putchar (struct gdIOCtx * ctx, int c)
- {
- stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
- _str->put((char)c);
- }
-
-/** Seek to position offset from the beginning of the stream
- must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
-*/
-int ostreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
- {
- stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
- _str->seekp(pos);
- return !_str->fail();
- }
-/** Obtains the current value of the stream position.
- Returns -1 on error.
-*/
-long ostreamIOCtx::Tell (struct gdIOCtx * ctx)
- {
- stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
- return _str->tellp();
- }
-/** Deallocate the context
-*/
-void ostreamIOCtx::FreeCtx (struct gdIOCtx * ctx)
- {
- delete (ostreamIOCtx * )ctx;
- }
-
-#endif /* __cplusplus */
+/* *****************************************************************************
+** $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.
+ Note that half of the below methods are trivial stubs,
+ as an input stream has no need of output methods, and vice-versa.
+*/
+#ifdef __cplusplus
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gd_io_stream.h"
+
+/** Read into buffer from stream
+ 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).
+*/
+int istreamIOCtx::Getbuf (struct gdIOCtx * ctx, void * buf, int size)
+ {
+ stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
+ _str->read((char * )buf, size);
+ return _str->gcount();
+ }
+/** Write from buffer to stream
+ 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).
+*/
+int istreamIOCtx::Putbuf (struct gdIOCtx * , const void * , int )
+ {
+ return 0;
+ }
+
+/** Reads the next character from stream and returns it as an
+ unsigned char cast to an int, or EOF on end of file or error.
+*/
+int istreamIOCtx::Getchar (struct gdIOCtx * ctx)
+ {
+ stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
+ return _str->get();
+ }
+/** Write the character to stream
+ Character is cast to unsigned char before writing
+*/
+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!
+*/
+int istreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
+ {
+ stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
+ _str->seekg(pos);
+ return !_str->fail();
+ }
+/** Obtains the current value of the stream position.
+ Returns -1 on error.
+*/
+long istreamIOCtx::Tell (struct gdIOCtx * ctx)
+ {
+ stream_type * _str = ( (istreamIOCtx * ) ctx )->_M_stream;
+ return _str->tellg();
+ }
+/** Deallocate the context
+*/
+void istreamIOCtx::FreeCtx (struct gdIOCtx * ctx)
+ {
+ delete (istreamIOCtx * )ctx;
+ }
+
+/** Read into buffer from stream
+ 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).
+*/
+int ostreamIOCtx::Getbuf (struct gdIOCtx * , void * , int )
+ {
+ return 0;
+ }
+/** Write from buffer to stream
+ 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).
+*/
+int ostreamIOCtx::Putbuf (struct gdIOCtx * ctx, const void * buf, int size)
+ {
+ stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
+ _str->write((const char * )buf, size);
+ return _str->bad()?0:size;
+ }
+
+/** Reads the next character from stream and returns it as an
+ unsigned char cast to an int, or EOF on end of file or error.
+*/
+int ostreamIOCtx::Getchar (struct gdIOCtx * )
+ {
+ return EOF;
+ }
+/** Write the character to stream
+ Character is cast to unsigned char before writing
+*/
+void ostreamIOCtx::Putchar (struct gdIOCtx * ctx, int c)
+ {
+ stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
+ _str->put((char)c);
+ }
+
+/** Seek to position offset from the beginning of the stream
+ must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
+*/
+int ostreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
+ {
+ stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
+ _str->seekp(pos);
+ return !_str->fail();
+ }
+/** Obtains the current value of the stream position.
+ Returns -1 on error.
+*/
+long ostreamIOCtx::Tell (struct gdIOCtx * ctx)
+ {
+ stream_type * _str = ( (ostreamIOCtx * ) ctx )->_M_stream;
+ return _str->tellp();
+ }
+/** Deallocate the context
+*/
+void ostreamIOCtx::FreeCtx (struct gdIOCtx * ctx)
+ {
+ delete (ostreamIOCtx * )ctx;
+ }
+
+#endif /* __cplusplus */
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 925b417fac3..51233952d44 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
@@ -307,6 +307,10 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
if(quality >= 0) {
jpeg_set_quality(&cinfo, quality, TRUE);
+ if (quality >= 90) {
+ cinfo.comp_info[0].h_samp_factor = 1;
+ cinfo.comp_info[0].v_samp_factor = 1;
+ }
}
/* If user requests interlace, translate that to progressive JPEG */
@@ -863,26 +867,12 @@ static int CMYKToRGB(int c, int m, int y, int k, int inverted)
* almost a simple global replace from T. Lane's stdio versions.
*/
-/* Different versions of libjpeg use either 'jboolean' or 'boolean', and
- * some platforms define 'boolean', and so forth. Deal with this
- * madness by typedeffing 'safeboolean' to 'boolean' if HAVE_BOOLEAN
- * is already set, because this is the test that libjpeg uses.
- * Otherwise, typedef it to int, because that's what libjpeg does
- * if HAVE_BOOLEAN is not defined. -TBB
- */
-
-#ifdef HAVE_BOOLEAN
-typedef boolean safeboolean;
-#else
-typedef int safeboolean;
-#endif /* HAVE_BOOLEAN */
-
/* Expanded data source object for gdIOCtx input */
typedef struct {
struct jpeg_source_mgr pub; /* public fields */
gdIOCtx *infile; /* source stream */
unsigned char *buffer; /* start of buffer */
- safeboolean start_of_file; /* have we gotten any data yet? */
+ boolean start_of_file; /* have we gotten any data yet? */
}
my_source_mgr;
@@ -942,7 +932,7 @@ void init_source(j_decompress_ptr cinfo)
#define END_JPEG_SEQUENCE "\r\n[*]--:END JPEG:--[*]\r\n"
-safeboolean fill_input_buffer(j_decompress_ptr cinfo)
+boolean fill_input_buffer(j_decompress_ptr cinfo)
{
my_src_ptr src = (my_src_ptr)cinfo->src;
/* 2.0.12: signed size. Thanks to Geert Jansen */
@@ -1132,7 +1122,7 @@ void init_destination(j_compress_ptr cinfo)
* write it out when emptying the buffer externally.
*/
-safeboolean empty_output_buffer(j_compress_ptr cinfo)
+boolean empty_output_buffer(j_compress_ptr cinfo)
{
my_dest_ptr dest = (my_dest_ptr)cinfo->dest;
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 c4b43d6ea35..d6b2b275766 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
@@ -246,16 +246,16 @@ void inxbuild(nn_quant *nnq)
/* Search for ABGR values 0..255 (after net is unbiased) and return colour index
---------------------------------------------------------------------------- */
-int inxsearch(nnq, al,b,g,r)
+unsigned int inxsearch(nnq, al,b,g,r)
nn_quant *nnq;
register int al, b, g, r;
{
register int i, j, dist, a, bestd;
register int *p;
- int best;
+ unsigned int best;
bestd = 1000; /* biggest possible dist is 256*3 */
- best = -1;
+ best = 0;
i = nnq->netindex[g]; /* index on g */
j = i-1; /* start at netindex[g] and work outwards */
@@ -330,12 +330,13 @@ register int al,b,g,r;
/* bias[i] = gamma*((1/netsize)-freq[i]) */
register int i,dist,a,biasdist,betafreq;
- int bestpos,bestbiaspos,bestd,bestbiasd;
+ unsigned int bestpos,bestbiaspos;
+ double bestd,bestbiasd;
register int *p,*f, *n;
bestd = ~(((int) 1)<<31);
bestbiasd = bestd;
- bestpos = -1;
+ bestpos = 0;
bestbiaspos = bestpos;
p = nnq->bias;
f = nnq->freq;
@@ -463,7 +464,7 @@ int verbose;
radius = initradius;
rad = radius >> radiusbiasshift;
- if (rad <= 1) rad = 0;
+
for (i=0; i<rad; i++)
nnq->radpower[i] = alpha*(((rad*rad - i*i)*radbias)/(rad*rad));
@@ -505,6 +506,9 @@ int verbose;
if (verbose) gd_error_ex(GD_NOTICE, "finished 1D learning: final alpha=%f !\n",((float)alpha)/initalpha);
}
+/*
+ Function: gdImageNeuQuant
+*/
BGD_DECLARE(gdImagePtr) gdImageNeuQuant(gdImagePtr im, const int max_color, int sample_factor)
{
const int newcolors = max_color;
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 95139e8b8b5..ab93e4347ce 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_png.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_png.c
@@ -251,7 +251,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
*/
/* setjmp() must be called in every non-callback function that calls a
- * PNG-reading libpng function */
+ * PNG-reading libpng function. We must reset it everytime we get a
+ * new allocation that we save in a stack variable.
+ */
#ifdef PNG_SETJMP_SUPPORTED
if (setjmp(jbw.jmpbuf)) {
gd_error("gd-png error: setjmp returns error condition 1\n");
@@ -275,9 +277,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
}
if (im == NULL) {
gd_error("gd-png error: cannot allocate gdImage struct\n");
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
-
- return NULL;
+ goto error;
}
if (bit_depth == 16) {
@@ -287,18 +287,13 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
}
/* setjmp() must be called in every non-callback function that calls a
- * PNG-reading libpng function
+ * PNG-reading libpng function. We must reset it everytime we get a
+ * new allocation that we save in a stack variable.
*/
#ifdef PNG_SETJMP_SUPPORTED
if (setjmp(jbw.jmpbuf)) {
gd_error("gd-png error: setjmp returns error condition 2\n");
- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
- gdFree(image_data);
- gdFree(row_pointers);
- if (im) {
- gdImageDestroy(im);
- }
- return NULL;
+ goto error;
}
#endif
@@ -346,9 +341,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
/* create a fake palette and check for single-shade transparency */
if ((palette = (png_colorp) gdMalloc (256 * sizeof (png_color))) == NULL) {
gd_error("gd-png error: cannot allocate gray palette\n");
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- gdImageDestroy(im);
- return NULL;
+ goto error;
}
palette_allocated = TRUE;
if (bit_depth < 8) {
@@ -406,65 +399,40 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
break;
default:
gd_error("gd-png color_type is unknown: %d\n", color_type);
- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
- gdFree(image_data);
- gdFree(row_pointers);
- if (im) {
- gdImageDestroy(im);
- }
- return NULL;
- break;
+ goto error;
}
png_read_update_info (png_ptr, info_ptr);
/* allocate space for the PNG image data */
rowbytes = png_get_rowbytes (png_ptr, info_ptr);
- if (overflow2(rowbytes, height)) {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- if (im) {
- gdImageDestroy(im);
- }
- return NULL;
- }
+ if (overflow2(rowbytes, height))
+ goto error;
image_data = (png_bytep) gdMalloc (rowbytes * height);
if (!image_data) {
gd_error("gd-png error: cannot allocate image data\n");
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- if (im) {
- gdImageDestroy(im);
- }
- if (palette_allocated) {
- gdFree (palette);
- }
- return NULL;
- }
- if (overflow2(height, sizeof (png_bytep))) {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- gdFree (image_data);
- if (im) {
- gdImageDestroy(im);
- }
- if (palette_allocated) {
- gdFree (palette);
- }
- return NULL;
+ goto error;
}
+ if (overflow2(height, sizeof (png_bytep)))
+ goto error;
row_pointers = (png_bytepp) gdMalloc (height * sizeof (png_bytep));
if (!row_pointers) {
gd_error("gd-png error: cannot allocate row pointers\n");
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- if (im) {
- gdImageDestroy(im);
- }
- gdFree (image_data);
- if (palette_allocated) {
- gdFree (palette);
- }
- return NULL;
+ goto error;
}
+ /* setjmp() must be called in every non-callback function that calls a
+ * PNG-reading libpng function. We must reset it everytime we get a
+ * new allocation that we save in a stack variable.
+ */
+#ifdef PNG_SETJMP_SUPPORTED
+ if (setjmp(jbw.jmpbuf)) {
+ gd_error("gd-png error: setjmp returns error condition 3\n");
+ goto error;
+ }
+#endif
+
/* set the individual row_pointers to point at the correct offsets */
for (h = 0; h < height; ++h) {
row_pointers[h] = image_data + h * rowbytes;
@@ -527,12 +495,14 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
}
break;
default:
- /* Palette image, or something coerced to be one */
- for (h = 0; h < height; ++h) {
- for (w = 0; w < width; ++w) {
- register png_byte idx = row_pointers[h][w];
- im->pixels[h][w] = idx;
- open[idx] = 0;
+ if (!im->trueColor) {
+ /* Palette image, or something coerced to be one */
+ for (h = 0; h < height; ++h) {
+ for (w = 0; w < width; ++w) {
+ register png_byte idx = row_pointers[h][w];
+ im->pixels[h][w] = idx;
+ open[idx] = 0;
+ }
}
}
}
@@ -548,13 +518,24 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
}
#endif
+ done:
if (palette_allocated) {
gdFree (palette);
}
- gdFree (image_data);
- gdFree (row_pointers);
+ if (image_data)
+ gdFree(image_data);
+ if (row_pointers)
+ gdFree(row_pointers);
return im;
+
+ error:
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ if (im) {
+ gdImageDestroy(im);
+ im = NULL;
+ }
+ goto done;
}
diff --git a/Build/source/libs/gd/libgd-src/src/gd_rotate.c b/Build/source/libs/gd/libgd-src/src/gd_rotate.c
index eb057e1148e..e590b3f2114 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_rotate.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_rotate.c
@@ -55,16 +55,28 @@ void gdImageSkewX (gdImagePtr dst, gdImagePtr src, int uRow, int iOffset, double
b = (int)(gdImageBlue(src,pxlSrc) * dWeight);
a = (int)(gdImageAlpha(src,pxlSrc) * dWeight);
- pxlLeft = gdImageColorAllocateAlpha(src, r, g, b, a);
+ if (r>255) {
+ r = 255;
+ }
- if (pxlLeft == -1) {
- pxlLeft = gdImageColorClosestAlpha(src, r, g, b, a);
+ if (g>255) {
+ g = 255;
}
- r = gdImageRed(src,pxlSrc) - (gdImageRed(src,pxlLeft) - gdImageRed(src,pxlOldLeft));
- g = gdImageGreen(src,pxlSrc) - (gdImageGreen(src,pxlLeft) - gdImageGreen(src,pxlOldLeft));
- b = gdImageBlue(src,pxlSrc) - (gdImageBlue(src,pxlLeft) - gdImageBlue(src,pxlOldLeft));
- a = gdImageAlpha(src,pxlSrc) - (gdImageAlpha(src,pxlLeft) - gdImageAlpha(src,pxlOldLeft));
+ if (b>255) {
+ b = 255;
+ }
+
+ if (a>127) {
+ a = 127;
+ }
+
+ pxlLeft = gdTrueColorAlpha(r, g, b, a);
+
+ r = gdImageRed(src,pxlSrc) - (r - gdImageRed(src,pxlOldLeft));
+ g = gdImageGreen(src,pxlSrc) - (g - gdImageGreen(src,pxlOldLeft));
+ b = gdImageBlue(src,pxlSrc) - (b - gdImageBlue(src,pxlOldLeft));
+ a = gdImageAlpha(src,pxlSrc) - (a - gdImageAlpha(src,pxlOldLeft));
if (r>255) {
r = 255;
@@ -145,19 +157,31 @@ void gdImageSkewY (gdImagePtr dst, gdImagePtr src, int uCol, int iOffset, double
b = (int)((double)gdImageBlue(src,pxlSrc) * dWeight);
a = (int)((double)gdImageAlpha(src,pxlSrc) * dWeight);
- pxlLeft = gdImageColorAllocateAlpha(src, r, g, b, a);
+ if (r>255) {
+ r = 255;
+ }
+
+ if (g>255) {
+ g = 255;
+ }
+
+ if (b>255) {
+ b = 255;
+ }
- if (pxlLeft == -1) {
- pxlLeft = gdImageColorClosestAlpha(src, r, g, b, a);
+ if (a>127) {
+ a = 127;
}
- r = gdImageRed(src,pxlSrc) - (gdImageRed(src,pxlLeft) - gdImageRed(src,pxlOldLeft));
- g = gdImageGreen(src,pxlSrc) - (gdImageGreen(src,pxlLeft) - gdImageGreen(src,pxlOldLeft));
- b = gdImageBlue(src,pxlSrc) - (gdImageBlue(src,pxlLeft) - gdImageBlue(src,pxlOldLeft));
- a = gdImageAlpha(src,pxlSrc) - (gdImageAlpha(src,pxlLeft) - gdImageAlpha(src,pxlOldLeft));
+ pxlLeft = gdTrueColorAlpha(r, g, b, a);
+
+ r = gdImageRed(src,pxlSrc) - (r - gdImageRed(src,pxlOldLeft));
+ g = gdImageGreen(src,pxlSrc) - (g - gdImageGreen(src,pxlOldLeft));
+ b = gdImageBlue(src,pxlSrc) - (b - gdImageBlue(src,pxlOldLeft));
+ a = gdImageAlpha(src,pxlSrc) - (a - gdImageAlpha(src,pxlOldLeft));
if (r>255) {
- r = 255;
+ r = 255;
}
if (g>255) {
@@ -529,5 +553,3 @@ gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignore
return rotatedImg;
}
/* End Rotate function */
-
-
diff --git a/Build/source/libs/gd/libgd-src/src/gd_ss.c b/Build/source/libs/gd/libgd-src/src/gd_ss.c
index 9098c9bc91c..248699e370b 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_ss.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_ss.c
@@ -18,6 +18,9 @@
#define GD_SS_DBG(s)
#ifdef HAVE_LIBPNG
+/*
+ Function: gdImagePngToSink
+*/
BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr outSink)
{
gdIOCtx *out = gdNewSSCtx (NULL, outSink);
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 756248afcea..170532478e2 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_tga.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_tga.c
@@ -12,10 +12,14 @@
#include "gd_errors.h"
#include "gdhelpers.h"
-/*! \brief Creates a gdImage from a TGA file
- * Creates a gdImage from a TGA binary file via a gdIOCtx.
- * \param infile Pointer to TGA binary file
- * \return gdImagePtr
+/*
+ Function: gdImageCreateFromTga
+
+ Creates a gdImage from a TGA file
+
+ Parameters:
+
+ infile - Pointer to TGA binary file
*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTga(FILE *fp)
{
@@ -27,6 +31,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTga(FILE *fp)
return image;
}
+/*
+ Function: gdImageCreateFromTgaPtr
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaPtr(int size, void *data)
{
gdImagePtr im;
@@ -38,10 +45,13 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaPtr(int size, void *data)
}
-/*! \brief Creates a gdImage from a gdIOCtx
- * Creates a gdImage from a gdIOCtx referencing a TGA binary file.
- * \param ctx Pointer to a gdIOCtx structure
- * \return gdImagePtr
+/*
+ Function: gdImageCreateFromTgaCtx
+
+ Creates a gdImage from a gdIOCtx referencing a TGA binary file.
+
+ Parameters:
+ ctx - Pointer to a gdIOCtx structure
*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx)
{
@@ -61,7 +71,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx)
tga->bitmap = NULL;
tga->ident = NULL;
- if (!read_header_tga(ctx, tga)) {
+ if (read_header_tga(ctx, tga) < 0) {
free_tga(tga);
return NULL;
}
@@ -71,7 +81,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx)
image_block_size = (tga->width * tga->height) * pixel_block_size;
*/
- if (read_image_tga(ctx, tga)) {
+ if (read_image_tga(ctx, tga) < 0) {
free_tga(tga);
return NULL;
}
@@ -99,7 +109,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx)
if (tga->bits == TGA_BPP_24) {
*tpix = gdTrueColor(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret]);
bitmap_caret += 3;
- } else if (tga->bits == TGA_BPP_32 || tga->alphabits) {
+ } else if (tga->bits == TGA_BPP_32 && tga->alphabits) {
register int a = tga->bitmap[bitmap_caret + 3];
*tpix = gdTrueColorAlpha(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret], gdAlphaMax - (a >> 1));
@@ -159,16 +169,12 @@ int read_header_tga(gdIOCtx *ctx, oTga *tga)
printf("wxh: %i %i\n", tga->width, tga->height);
#endif
- switch(tga->bits) {
- case 8:
- case 16:
- case 24:
- case 32:
- break;
- default:
- gd_error("bps %i not supported", tga->bits);
+ if (!((tga->bits == TGA_BPP_24 && tga->alphabits == 0)
+ || (tga->bits == TGA_BPP_32 && tga->alphabits == 8)))
+ {
+ gd_error_ex(GD_WARNING, "gd-tga: %u bits per pixel with %u alpha bits not supported\n",
+ tga->bits, tga->alphabits);
return -1;
- break;
}
tga->ident = NULL;
@@ -179,7 +185,7 @@ int read_header_tga(gdIOCtx *ctx, oTga *tga)
return -1;
}
- gdGetBuf( &( tga->ident ), tga->identsize, ctx );
+ gdGetBuf(tga->ident, tga->identsize, ctx);
}
return 1;
@@ -200,8 +206,7 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
int buffer_caret = 0;
int bitmap_caret = 0;
int i = 0;
- int j = 0;
- uint8_t encoded_pixels;
+ int encoded_pixels;
if(overflow2(tga->width, tga->height)) {
return -1;
@@ -211,73 +216,70 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
return -1;
}
- if(overflow2(image_block_size, sizeof(uint8_t))) {
+ if(overflow2(image_block_size, sizeof(int))) {
return -1;
}
- /*! \brief Allocate memmory for image block
- * Allocate a chunk of memory for the image block to be passed into.
+ /*! \todo Add more image type support.
*/
- tga->bitmap = (int *) gdMalloc(image_block_size * sizeof(uint8_t));
- if (tga->bitmap == NULL) {
+ if (tga->imagetype != TGA_TYPE_RGB && tga->imagetype != TGA_TYPE_RGB_RLE)
return -1;
- }
- /*! \todo Add image type support
- * Add support for this image type.
- */
- if (tga->imagetype == TGA_TYPE_INDEXED) {
- return -1;
- }
-
- /*! \todo Add image type support
- * Add support for this image type.
+ /*! \brief Allocate memmory for image block
+ * Allocate a chunk of memory for the image block to be passed into.
*/
- if (tga->imagetype == TGA_TYPE_INDEXED_RLE) {
+ tga->bitmap = (int *) gdMalloc(image_block_size * sizeof(int));
+ if (tga->bitmap == NULL)
return -1;
- }
- /*! \brief Read in uncompressed RGB TGA
- * Chunk load the pixel data from an uncompressed RGB type TGA.
- */
- if (tga->imagetype == TGA_TYPE_RGB) {
+ switch (tga->imagetype) {
+ case TGA_TYPE_RGB:
+ /*! \brief Read in uncompressed RGB TGA
+ * Chunk load the pixel data from an uncompressed RGB type TGA.
+ */
conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char));
if (conversion_buffer == NULL) {
- gdFree(conversion_buffer);
return -1;
}
- gdGetBuf(conversion_buffer, image_block_size, ctx);
+ if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) {
+ gd_error("gd-tga: premature end of image data\n");
+ gdFree(conversion_buffer);
+ return -1;
+ }
while (buffer_caret < image_block_size) {
tga->bitmap[buffer_caret] = (int) conversion_buffer[buffer_caret];
buffer_caret++;
}
- gdFree( conversion_buffer );
- }
+ gdFree(conversion_buffer);
+ break;
- /*! \brief Read in RLE compressed RGB TGA
- * Chunk load the pixel data from an RLE compressed RGB type TGA.
- */
- if (tga->imagetype == TGA_TYPE_RGB_RLE) {
+ case TGA_TYPE_RGB_RLE:
+ /*! \brief Read in RLE compressed RGB TGA
+ * Chunk load the pixel data from an RLE compressed RGB type TGA.
+ */
decompression_buffer = (uint8_t*) gdMalloc(image_block_size * sizeof(uint8_t));
if (decompression_buffer == NULL) {
- gdFree( decompression_buffer );
return -1;
}
conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char));
if (conversion_buffer == NULL) {
+ gd_error("gd-tga: premature end of image data\n");
gdFree( decompression_buffer );
- gdFree( conversion_buffer );
return -1;
}
- gdGetBuf( conversion_buffer, image_block_size, ctx );
+ if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) {
+ gdFree(conversion_buffer);
+ gdFree(decompression_buffer);
+ return -1;
+ }
buffer_caret = 0;
- while( buffer_caret < image_block_size ) {
+ while( buffer_caret < image_block_size) {
decompression_buffer[buffer_caret] = (int)conversion_buffer[buffer_caret];
buffer_caret++;
}
@@ -285,50 +287,44 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
buffer_caret = 0;
while( bitmap_caret < image_block_size ) {
-
+
if ((decompression_buffer[buffer_caret] & TGA_RLE_FLAG) == TGA_RLE_FLAG) {
- encoded_pixels = ( ( decompression_buffer[ buffer_caret ] & 127 ) + 1 );
+ encoded_pixels = ( ( decompression_buffer[ buffer_caret ] & ~TGA_RLE_FLAG ) + 1 );
buffer_caret++;
+ if ((bitmap_caret + (encoded_pixels * pixel_block_size)) >= image_block_size) {
+ gdFree( decompression_buffer );
+ gdFree( conversion_buffer );
+ return -1;
+ }
+
for (i = 0; i < encoded_pixels; i++) {
- for (j = 0; j < pixel_block_size; j++, bitmap_caret++) {
- tga->bitmap[ bitmap_caret ] = decompression_buffer[ buffer_caret + j ];
- }
+ memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, pixel_block_size);
+ bitmap_caret += pixel_block_size;
}
buffer_caret += pixel_block_size;
+
} else {
encoded_pixels = decompression_buffer[ buffer_caret ] + 1;
buffer_caret++;
- for (i = 0; i < encoded_pixels; i++) {
- for( j = 0; j < pixel_block_size; j++, bitmap_caret++ ) {
- tga->bitmap[ bitmap_caret ] = decompression_buffer[ buffer_caret + j ];
- }
- buffer_caret += pixel_block_size;
+ if ((bitmap_caret + (encoded_pixels * pixel_block_size)) >= image_block_size) {
+ gdFree( decompression_buffer );
+ gdFree( conversion_buffer );
+ return -1;
}
+
+ memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, encoded_pixels * pixel_block_size);
+ bitmap_caret += (encoded_pixels * pixel_block_size);
+ buffer_caret += (encoded_pixels * pixel_block_size);
}
}
-
gdFree( decompression_buffer );
gdFree( conversion_buffer );
-
- }
-
- /*! \todo Add image type support
- * Add support for this image type.
- */
- if( tga->imagetype == TGA_TYPE_GREYSCALE ) {
- return -1;
- }
-
- /*! \todo Add image type support
- * Add support for this image type.
- */
- if( tga->imagetype == TGA_TYPE_GREYSCALE_RLE ) {
- return -1;
+ break;
}
- return 0;
+ return 1;
}
/*! \brief Cleans up a TGA structure.
@@ -338,15 +334,10 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
void free_tga(oTga * tga)
{
if (tga) {
- if (tga->ident) {
+ if (tga->ident)
gdFree(tga->ident);
- tga->ident = NULL;
- }
- if (tga->bitmap) {
+ if (tga->bitmap)
gdFree(tga->bitmap);
- tga->bitmap = NULL;
- }
gdFree(tga);
- tga = NULL;
}
}
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 ec6dd113074..26805ffcc4d 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_tiff.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_tiff.c
@@ -282,21 +282,27 @@ void tiffWriter(gdImagePtr image, gdIOCtx *out, int bitDepth)
bitsPerSample = (bitDepth == 24 || bitDepth == 8) ? 8 : 1;
TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, bitsPerSample);
+ TIFFSetField(tiff, TIFFTAG_XRESOLUTION, (float)image->res_x);
+ TIFFSetField(tiff, TIFFTAG_YRESOLUTION, (float)image->res_y);
+
/* build the color map for 8 bit images */
if(bitDepth != 24) {
colorMapRed = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
if (!colorMapRed) {
+ gdFree(th);
return;
}
colorMapGreen = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
if (!colorMapGreen) {
gdFree(colorMapRed);
+ gdFree(th);
return;
}
colorMapBlue = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
if (!colorMapBlue) {
gdFree(colorMapRed);
gdFree(colorMapGreen);
+ gdFree(th);
return;
}
@@ -326,10 +332,18 @@ void tiffWriter(gdImagePtr image, gdIOCtx *out, int bitDepth)
TIFFSetField(tiff, TIFFTAG_ROWSPERSTRIP, 1);
if(overflow2(width, samplesPerPixel)) {
+ if (colorMapRed) gdFree(colorMapRed);
+ if (colorMapGreen) gdFree(colorMapGreen);
+ if (colorMapBlue) gdFree(colorMapBlue);
+ gdFree(th);
return;
}
if(!(scan = (char *)gdMalloc(width * samplesPerPixel))) {
+ if (colorMapRed) gdFree(colorMapRed);
+ if (colorMapGreen) gdFree(colorMapGreen);
+ if (colorMapBlue) gdFree(colorMapBlue);
+ gdFree(th);
return;
}
@@ -371,6 +385,10 @@ void tiffWriter(gdImagePtr image, gdIOCtx *out, int bitDepth)
/* Write the scan line to the tiff */
if(TIFFWriteEncodedStrip(tiff, y, scan, width * samplesPerPixel) == -1) {
+ if (colorMapRed) gdFree(colorMapRed);
+ if (colorMapGreen) gdFree(colorMapGreen);
+ if (colorMapBlue) gdFree(colorMapBlue);
+ gdFree(th);
/* error handler here */
gd_error("Could not create TIFF\n");
return;
@@ -390,13 +408,15 @@ void tiffWriter(gdImagePtr image, gdIOCtx *out, int bitDepth)
}
/*
- gdImageTiffCtx
- --------------
- Write the gd image as a tiff file
- Parameters are:
- image: gd image structure;
- out: the stream where to write
- */
+ Function: gdImageTiffCtx
+
+ Write the gd image as a tiff file.
+
+ Parameters:
+
+ image - gd image structure;
+ out - the stream where to write
+*/
BGD_DECLARE(void) gdImageTiffCtx(gdImagePtr image, gdIOCtx *out)
{
int clipx1P, clipy1P, clipx2P, clipy2P;
@@ -621,10 +641,12 @@ static int createFromTiffTiles(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
if (!TIFFGetField (tif, TIFFTAG_PLANARCONFIG, &planar)) {
planar = PLANARCONFIG_CONTIG;
}
- TIFFGetField (tif, TIFFTAG_IMAGEWIDTH, &im_width);
- TIFFGetField (tif, TIFFTAG_IMAGELENGTH, &im_height);
- TIFFGetField (tif, TIFFTAG_TILEWIDTH, &tile_width);
- TIFFGetField (tif, TIFFTAG_TILELENGTH, &tile_height);
+ if (TIFFGetField (tif, TIFFTAG_IMAGEWIDTH, &im_width) == 0 ||
+ TIFFGetField (tif, TIFFTAG_IMAGELENGTH, &im_height) == 0 ||
+ TIFFGetField (tif, TIFFTAG_TILEWIDTH, &tile_width) == 0 ||
+ TIFFGetField (tif, TIFFTAG_TILELENGTH, &tile_height) == 0) {
+ return FALSE;
+ }
buffer = (unsigned char *) gdMalloc (TIFFTileSize (tif));
if (!buffer) {
@@ -646,6 +668,7 @@ static int createFromTiffTiles(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
}
}
}
+ gdFree(buffer);
return TRUE;
}
@@ -761,10 +784,11 @@ static int createFromTiffRgba(TIFF * tif, gdImagePtr im)
return GD_SUCCESS;
}
-/* gdImageCreateFromTiffCtx
-** ------------------------
-** Create a gdImage from a TIFF file input from an gdIOCtx
- */
+/*
+ Function: gdImageCreateFromTiffCtx
+
+ Create a gdImage from a TIFF file input from an gdIOCtx.
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
{
TIFF *tif;
@@ -780,6 +804,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
char save_transparent;
int image_type;
int ret;
+ float res_float;
gdImagePtr im = NULL;
@@ -798,6 +823,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
if (!tif) {
gd_error("Cannot open TIFF image");
+ gdFree(th);
return NULL;
}
@@ -814,7 +840,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
TIFFGetFieldDefaulted (tif, TIFFTAG_BITSPERSAMPLE, &bps);
/* Unsupported bps, force to RGBA */
- if (bps > 8 && bps != 16) {
+ if (1/*bps > 8 && bps != 16*/) {
force_rgba = TRUE;
}
@@ -942,7 +968,14 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
goto error;
}
- if (TIFFGetField (tif, TIFFTAG_ORIENTATION, &orientation)) {
+ if (TIFFGetField(tif, TIFFTAG_XRESOLUTION, &res_float)) {
+ im->res_x = (unsigned int)res_float; //truncate
+ }
+ if (TIFFGetField(tif, TIFFTAG_YRESOLUTION, &res_float)) {
+ im->res_y = (unsigned int)res_float; //truncate
+ }
+
+ if (TIFFGetField(tif, TIFFTAG_ORIENTATION, &orientation)) {
switch (orientation) {
case ORIENTATION_TOPLEFT:
case ORIENTATION_TOPRIGHT:
@@ -957,12 +990,13 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
}
error:
TIFFClose(tif);
+ gdFree(th);
return im;
}
-/* gdImageCreateFromTIFF
-** ---------------------
- */
+/*
+ Function: gdImageCreateFromTIFF
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiff(FILE *inFile)
{
gdImagePtr im;
@@ -973,6 +1007,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiff(FILE *inFile)
return im;
}
+/*
+ Function: gdImageCreateFromTiffPtr
+*/
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffPtr(int size, void *data)
{
gdImagePtr im;
@@ -983,9 +1020,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffPtr(int size, void *data)
return im;
}
-/* gdImageTIFF
-** -----------
- */
+/*
+ Function: gdImageTiff
+*/
BGD_DECLARE(void) gdImageTiff(gdImagePtr im, FILE *outFile)
{
gdIOCtx *out = gdNewFileCtx(outFile);
@@ -994,9 +1031,9 @@ BGD_DECLARE(void) gdImageTiff(gdImagePtr im, FILE *outFile)
out->gd_free(out);
}
-/* gdImageTIFFPtr
-** --------------
- */
+/*
+ Function: gdImageTiffPtr
+*/
BGD_DECLARE(void *) gdImageTiffPtr(gdImagePtr im, int *size)
{
void *rv;
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 28b6503d063..7ff835a6d36 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_topal.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_topal.c
@@ -43,8 +43,8 @@
#include "gd.h"
#include "gdhelpers.h"
-#ifdef HAVE_LIBIMAGEQUANT_H
-#include <libimagequant.h> /* if this fails then set -DENABLE_LIQ=NO in cmake or make static libimagequant.a in libimagequant/ */
+#ifdef HAVE_LIBIMAGEQUANT
+#include <libimagequant.h>
#endif
/* (Re)define some defines known by libjpeg */
@@ -1366,16 +1366,18 @@ zeroHistogram (hist3d histogram)
/*
- Selects quantization method used for subsequent gdImageTrueColorToPalette calls.
- See gdPaletteQuantizationMethod enum (e.g. GD_QUANT_NEUQUANT, GD_QUANT_LIQ).
- Speed is from 1 (highest quality) to 10 (fastest).
- Speed 0 selects method-specific default (recommended).
+ Function: gdImageTrueColorToPaletteSetMethod
- Returns FALSE if the given method is invalid or not available.
+ Selects quantization method used for subsequent gdImageTrueColorToPalette calls.
+ See gdPaletteQuantizationMethod enum (e.g. GD_QUANT_NEUQUANT, GD_QUANT_LIQ).
+ Speed is from 1 (highest quality) to 10 (fastest).
+ Speed 0 selects method-specific default (recommended).
+
+ Returns FALSE if the given method is invalid or not available.
*/
BGD_DECLARE(int) gdImageTrueColorToPaletteSetMethod (gdImagePtr im, int method, int speed)
{
-#ifndef HAVE_LIBIMAGEQUANT_H
+#ifndef HAVE_LIBIMAGEQUANT
if (method == GD_QUANT_LIQ) {
return FALSE;
}
@@ -1393,11 +1395,13 @@ BGD_DECLARE(int) gdImageTrueColorToPaletteSetMethod (gdImagePtr im, int method,
}
/*
- Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for.
- Min and max quality is in range 1-100 (1 = ugly, 100 = perfect). Max must be higher than min.
- If palette cannot represent image with at least min_quality, then image will remain true-color.
- If palette can represent image with quality better than max_quality, then lower number of colors will be used.
- This function has effect only when GD_QUANT_LIQ method has been selected.
+ Function: gdImageTrueColorToPaletteSetQuality
+
+ Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for.
+ Min and max quality is in range 1-100 (1 = ugly, 100 = perfect). Max must be higher than min.
+ If palette cannot represent image with at least min_quality, then image will remain true-color.
+ If palette can represent image with quality better than max_quality, then lower number of colors will be used.
+ This function has effect only when GD_QUANT_LIQ method has been selected.
*/
BGD_DECLARE(void) gdImageTrueColorToPaletteSetQuality (gdImagePtr im, int min_quality, int max_quality)
{
@@ -1410,6 +1414,9 @@ BGD_DECLARE(void) gdImageTrueColorToPaletteSetQuality (gdImagePtr im, int min_qu
static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colorsWanted, gdImagePtr *cimP);
+/*
+ Function: gdImageCreatePaletteFromTrueColor
+*/
BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int dither, int colorsWanted)
{
gdImagePtr nim;
@@ -1419,12 +1426,15 @@ BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int di
return NULL;
}
+/*
+ Function: gdImageTrueColorToPalette
+*/
BGD_DECLARE(int) gdImageTrueColorToPalette (gdImagePtr im, int dither, int colorsWanted)
{
return gdImageTrueColorToPaletteBody(im, dither, colorsWanted, 0);
}
-#ifdef HAVE_LIBIMAGEQUANT_H
+#ifdef HAVE_LIBIMAGEQUANT
/**
LIQ library needs pixels in RGBA order with alpha 0-255 (opaque 255).
This callback is run whenever source rows need to be converted from GD's format.
@@ -1506,7 +1516,7 @@ static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colors
goto outOfMemory;
}
for (i = 0; (i < nim->sy); i++) {
- nim->pixels[i] = (unsigned char *) gdCalloc (sizeof (unsigned char *), oim->sx);
+ nim->pixels[i] = (unsigned char *) gdCalloc (sizeof (unsigned char), oim->sx);
if (!nim->pixels[i]) {
goto outOfMemory;
}
@@ -1521,6 +1531,9 @@ 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 {
gdImageCopy(oim, nim, 0, 0, 0, 0, oim->sx, oim->sy);
gdImageDestroy(nim);
@@ -1529,7 +1542,7 @@ static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colors
}
-#ifdef HAVE_LIBIMAGEQUANT_H
+#ifdef HAVE_LIBIMAGEQUANT
if (oim->paletteQuantizationMethod == GD_QUANT_DEFAULT ||
oim->paletteQuantizationMethod == GD_QUANT_LIQ) {
liq_attr *attr = liq_attr_create_with_allocator(gdMalloc, gdFree);
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 68013ef9319..a126686269d 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_transform.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_transform.c
@@ -4,6 +4,9 @@
#include "gd.h"
+/*
+ Function: gdImageFlipVertical
+*/
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im)
{
register int x, y;
@@ -23,15 +26,18 @@ BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im)
unsigned char p;
for (y = 0; y < im->sy / 2; y++) {
for (x = 0; x < im->sx; x++) {
- p = im->tpixels[y][x];
- im->tpixels[y][x] = im->tpixels[im->sy - 1 - y][x];
- im->tpixels[im->sy - 1 - y][x] = p;
+ p = im->pixels[y][x];
+ im->pixels[y][x] = im->pixels[im->sy - 1 - y][x];
+ im->pixels[im->sy - 1 - y][x] = p;
}
}
}
return;
}
+/*
+ Function: gdImageFlipHorizontal
+*/
BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im)
{
@@ -68,6 +74,9 @@ BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im)
}
}
+/*
+ Function: gdImageFlipBoth
+*/
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im)
{
gdImageFlipVertical(im);
diff --git a/Build/source/libs/gd/libgd-src/src/gd_version.c b/Build/source/libs/gd/libgd-src/src/gd_version.c
index 222d428ce7b..46725b0dae9 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_version.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_version.c
@@ -9,25 +9,40 @@
* so that changes in the shared library will automatically be
* reflected in executables using it without recompiling them. */
+/*
+ Function: gdMajorVersion
+*/
BGD_DECLARE(int) gdMajorVersion()
{
return GD_MAJOR_VERSION;
}
+/*
+ Function: gdMinorVersion
+*/
BGD_DECLARE(int) gdMinorVersion()
{
return GD_MINOR_VERSION;
}
+/*
+ Function: gdReleaseVersion
+*/
BGD_DECLARE(int) gdReleaseVersion()
{
return GD_RELEASE_VERSION;
}
+/*
+ Function: gdExtraVersion
+*/
BGD_DECLARE(const char *) gdExtraVersion() {
return GD_EXTRA_VERSION;
}
+/*
+ Function: gdVersionString
+*/
BGD_DECLARE(const char *) gdVersionString() {
return GD_VERSION_STRING;
}
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 53fbdc2d1a8..d9de5916bba 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
@@ -82,15 +82,17 @@ int gd_getin(void *in)
return (gdGetC((gdIOCtx *)in));
}
-/* gdImageWBMPCtx
- * --------------
- * Write the image as a wbmp file
- * Parameters are:
- * image: gd image structure;
- * fg: the index of the foreground color. any other value will be
- * considered as background and will not be written
- * out: the stream where to write
- */
+/*
+ Function: gdImageWBMPCtx
+
+ Write the image as a wbmp file
+
+ Parameters:
+ image - gd image structure
+ fg - the index of the foreground color. any other value will be
+ considered as background and will not be written
+ out - the stream where to write
+*/
BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
{
int x, y, pos;
@@ -242,8 +244,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPPtr(int size, void *data)
return im;
}
-/* gdImageWBMP
- */
+/*
+ Function: gdImageWBMP
+*/
BGD_DECLARE(void) gdImageWBMP(gdImagePtr im, int fg, FILE *outFile)
{
gdIOCtx *out = gdNewFileCtx(outFile);
@@ -252,8 +255,9 @@ BGD_DECLARE(void) gdImageWBMP(gdImagePtr im, int fg, FILE *outFile)
out->gd_free(out);
}
-/* gdImageWBMPPtr
- */
+/*
+ Function: gdImageWBMPPtr
+*/
BGD_DECLARE(void *) gdImageWBMPPtr(gdImagePtr im, int *size, int fg)
{
void *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 fae38610999..98628cfff7f 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_webp.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_webp.c
@@ -2,78 +2,55 @@
#include "config.h"
#endif /* HAVE_CONFIG_H */
+
+#ifdef HAVE_LIBWEBP
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include "gd.h"
#include "gd_errors.h"
-
-#ifdef HAVE_LIBVPX
-#include "webpimg.h"
#include "gdhelpers.h"
+#include "webp/decode.h"
+#include "webp/encode.h"
-extern void gd_YUV420toRGBA(uint8* Y,
- uint8* U,
- uint8* V,
- gdImagePtr im);
-
-extern void gd_RGBAToYUV420(gdImagePtr im2,
- uint8* Y,
- uint8* U,
- uint8* V);
-
-const char * gdWebpGetVersionString()
-{
- return "not defined";
-}
+#define GD_WEBP_ALLOC_STEP (4*1024)
-BGD_DECLARE(gdImagePtr) gdImageCreateFromWebp (FILE * inFile)
+gdImagePtr gdImageCreateFromWebp (FILE * inFile)
{
gdImagePtr im;
gdIOCtx *in = gdNewFileCtx(inFile);
+ if (!in) {
+ return 0;
+ }
im = gdImageCreateFromWebpCtx(in);
in->gd_free(in);
return im;
}
-BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpPtr (int size, void *data)
+
+gdImagePtr gdImageCreateFromWebpPtr (int size, void *data)
{
- int width, height, ret;
- unsigned char *Y = NULL;
- unsigned char *U = NULL;
- unsigned char *V = NULL;
gdImagePtr im;
-
- ret = WebPDecode(data, size, &Y, &U, &V, &width, &height);
- if (ret != webp_success) {
- if (Y) free(Y);
- if (U) free(U);
- if (V) free(V);
- gd_error("WebP decode: fail to decode input data");
- return NULL;
- }
- im = gdImageCreateTrueColor(width, height);
- if (!im) {
- return NULL;
- }
- gd_YUV420toRGBA(Y, U, V, im);
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ if (!in)
+ return 0;
+ im = gdImageCreateFromWebpCtx(in);
+ in->gd_free(in);
return im;
}
-#define GD_WEBP_ALLOC_STEP (4*1024)
-
-BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpCtx (gdIOCtx * infile)
+gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx * infile)
{
- int width, height, ret;
- unsigned char *filedata = NULL;
+ int width, height;
+ uint8_t *filedata = NULL;
+ uint8_t *argb = NULL;
unsigned char *read, *temp;
- unsigned char *Y = NULL;
- unsigned char *U = NULL;
- unsigned char *V = NULL;
size_t size = 0, n;
gdImagePtr im;
+ int x, y;
+ uint8_t *p;
do {
temp = gdRealloc(filedata, size+GD_WEBP_ALLOC_STEP);
@@ -89,41 +66,136 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpCtx (gdIOCtx * infile)
}
n = gdGetBuf(read, GD_WEBP_ALLOC_STEP, infile);
- size += n;
- } while (n>0);
-
- ret = WebPDecode(filedata, size, &Y, &U, &V, &width, &height);
- gdFree(filedata);
- if (ret != webp_success) {
- if (Y) free(Y);
- if (U) free(U);
- if (V) free(V);
- gd_error("WebP decode: fail to decode input data");
+ if (n>0 && n!=EOF) {
+ size += n;
+ }
+ } while (n>0 && n!=EOF);
+
+ if (WebPGetInfo(filedata,size, &width, &height) == 0) {
+ gd_error("gd-webp cannot get webp info");
+ gdFree(temp);
return NULL;
}
+
im = gdImageCreateTrueColor(width, height);
- gd_YUV420toRGBA(Y, U, V, im);
+ if (!im) {
+ gdFree(temp);
+ return NULL;
+ }
+ argb = WebPDecodeARGB(filedata, size, &width, &height);
+ if (!argb) {
+ gd_error("gd-webp cannot allocate temporary buffer");
+ gdFree(temp);
+ gdImageDestroy(im);
+ return NULL;
+ }
+ for (y = 0, p = argb; y < height; y++) {
+ for (x = 0; x < width; x++) {
+ register uint8_t a = gdAlphaMax - (*(p++) >> 1);
+ register uint8_t r = *(p++);
+ register uint8_t g = *(p++);
+ register uint8_t b = *(p++);
+ im->tpixels[y][x] = gdTrueColorAlpha(r, g, b, a);
+ }
+ }
+ /* do not use gdFree here, in case gdFree/alloc is mapped to something else than libc */
+ free(argb);
+ gdFree(temp);
+ im->saveAlphaFlag = 1;
return im;
}
+void gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quantization)
+{
+ uint8_t *argb;
+ int x, y;
+ uint8_t *p;
+ uint8_t *out;
+ size_t out_size;
+
+ if (im == NULL) {
+ return;
+ }
+
+ if (!gdImageTrueColor(im)) {
+ gd_error("Paletter image not supported by webp");
+ return;
+ }
+
+ if (quantization == -1) {
+ quantization = 80;
+ }
+
+ argb = (uint8_t *)gdMalloc(gdImageSX(im) * 4 * gdImageSY(im));
+ if (!argb) {
+ return;
+ }
+ p = argb;
+ for (y = 0; y < gdImageSY(im); y++) {
+ for (x = 0; x < gdImageSX(im); x++) {
+ register int c;
+ register char a;
+ c = im->tpixels[y][x];
+ a = gdTrueColorGetAlpha(c);
+ if (a == 127) {
+ a = 0;
+ } else {
+ a = 255 - ((a << 1) + (a >> 6));
+ }
+ *(p++) = gdTrueColorGetRed(c);
+ *(p++) = gdTrueColorGetGreen(c);
+ *(p++) = gdTrueColorGetBlue(c);
+ *(p++) = a;
+ }
+ }
+ out_size = WebPEncodeRGBA(argb, gdImageSX(im), gdImageSY(im), gdImageSX(im) * 4, quantization, &out);
+ if (out_size == 0) {
+ gd_error("gd-webp encoding failed");
+ goto freeargb;
+ }
+ gdPutBuf(out, out_size, outfile);
+ free(out);
+
+freeargb:
+ gdFree(argb);
+}
+
+/*
+ Function: gdImageWebpEx
+*/
BGD_DECLARE(void) gdImageWebpEx (gdImagePtr im, FILE * outFile, int quantization)
{
gdIOCtx *out = gdNewFileCtx(outFile);
+ if (out == NULL) {
+ return;
+ }
gdImageWebpCtx(im, out, quantization);
out->gd_free(out);
}
+/*
+ Function: gdImageWebp
+*/
BGD_DECLARE(void) gdImageWebp (gdImagePtr im, FILE * outFile)
{
gdIOCtx *out = gdNewFileCtx(outFile);
- gdImageWebpCtx(im, out, -1);
+ if (out == NULL) {
+ return;
+ }
+ gdImageWebpCtx(im, out, -1);
out->gd_free(out);
}
+/*
+ Function: gdImageWebpPtr
+*/
BGD_DECLARE(void *) gdImageWebpPtr (gdImagePtr im, int *size)
{
void *rv;
gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ if (out == NULL) {
+ return NULL;
+ }
gdImageWebpCtx(im, out, -1);
rv = gdDPExtractData(out, size);
out->gd_free(out);
@@ -131,81 +203,19 @@ BGD_DECLARE(void *) gdImageWebpPtr (gdImagePtr im, int *size)
return rv;
}
+/*
+ Function: gdImageWebpPtrEx
+*/
BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quantization)
{
void *rv;
gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ if (out == NULL) {
+ return NULL;
+ }
gdImageWebpCtx(im, out, quantization);
rv = gdDPExtractData(out, size);
out->gd_free(out);
return rv;
}
-
-/*
- * Maps normalized QP (quality) to VP8 QP
- */
-int mapQualityToVP8QP(int quality) {
-#define MIN_QUALITY 0
-#define MAX_QUALITY 100
-#define MIN_VP8QP 1
-#define MAX_VP8QP 63
- const float scale = MAX_VP8QP - MIN_VP8QP;
- const float vp8qp =
- scale * (MAX_QUALITY - quality) / (MAX_QUALITY - MIN_QUALITY) + MIN_VP8QP;
- if (quality < MIN_QUALITY || quality > MAX_QUALITY) {
- gd_error("Wrong quality value %d.", quality);
- return -1;
- }
-
- return (int)(vp8qp + 0.5);
-}
-
-/* This routine is based in part on code from Dale Lutz (Safe Software Inc.)
- * and in part on demo code from Chapter 15 of "PNG: The Definitive Guide"
- * (http://www.cdrom.com/pub/png/pngbook.html).
- */
-BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quantization)
-{
- int width = im->sx;
- int height = im->sy;
-
- int yuv_width, yuv_height, yuv_nbytes, ret;
- int vp8_quality;
- unsigned char *Y = NULL,
- *U = NULL,
- *V = NULL;
- unsigned char *filedata = NULL;
-
- /* Conversion to Y,U,V buffer */
- yuv_width = (width + 1) >> 1;
- yuv_height = (height + 1) >> 1;
- yuv_nbytes = width * height + 2 * yuv_width * yuv_height;
-
- if ((Y = (unsigned char *)gdCalloc(yuv_nbytes, sizeof(unsigned char))) == NULL) {
- gd_error("gd-webp error: cannot allocate Y buffer");
- return;
- }
- vp8_quality = mapQualityToVP8QP(quantization);
-
- U = Y + width * height;
- V = U + yuv_width * yuv_height;
- gd_RGBAToYUV420(im, Y, U, V);
-
- /* Encode Y,U,V and write data to file */
- ret = WebPEncode(Y, U, V, width, height, width, yuv_width, yuv_height, yuv_width,
- vp8_quality, &filedata, &yuv_nbytes, NULL);
- gdFree(Y);
-
- if (ret != webp_success) {
- if (filedata) {
- free(filedata);
- }
- gd_error("gd-webp error: WebP Encoder failed");
- return;
- }
-
- gdPutBuf (filedata, yuv_nbytes, outfile);
- free(filedata);
-}
-
-#endif /* HAVE_LIBVPX */
+#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 74d839b2667..58b57203dc6 100644
--- a/Build/source/libs/gd/libgd-src/src/gd_xbm.c
+++ b/Build/source/libs/gd/libgd-src/src/gd_xbm.c
@@ -180,7 +180,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm(FILE * fd)
/* {{{ gdCtxPrintf */
static void gdCtxPrintf(gdIOCtx * out, const char *format, ...)
{
- char buf[4096];
+ char buf[1024];
int len;
va_list args;
@@ -191,7 +191,13 @@ static void gdCtxPrintf(gdIOCtx * out, const char *format, ...)
}
/* }}} */
+/* The compiler will optimize strlen(constant) to a constant number. */
+#define gdCtxPuts(out, s) out->putBuf(out, s, strlen(s))
+
/* {{{ gdImageXbmCtx */
+/*
+ Function: gdImageXbmCtx
+*/
BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOCtx * out)
{
int x, y, c, b, sx, sy, p;
@@ -215,9 +221,26 @@ BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOC
}
}
- gdCtxPrintf(out, "#define %s_width %d\n", name, gdImageSX(image));
- gdCtxPrintf(out, "#define %s_height %d\n", name, gdImageSY(image));
- gdCtxPrintf(out, "static unsigned char %s_bits[] = {\n ", name);
+ /* Since "name" comes from the user, run it through a direct puts.
+ * Trying to printf it into a local buffer means we'd need a large
+ * or dynamic buffer to hold it all. */
+
+ /* #define <name>_width 1234 */
+ gdCtxPuts(out, "#define ");
+ gdCtxPuts(out, name);
+ gdCtxPuts(out, "_width ");
+ gdCtxPrintf(out, "%d\n", gdImageSX(image));
+
+ /* #define <name>_height 1234 */
+ gdCtxPuts(out, "#define ");
+ gdCtxPuts(out, name);
+ gdCtxPuts(out, "_height ");
+ gdCtxPrintf(out, "%d\n", gdImageSY(image));
+
+ /* static unsigned char <name>_bits[] = {\n */
+ gdCtxPuts(out, "static unsigned char ");
+ gdCtxPuts(out, name);
+ gdCtxPuts(out, "_bits[] = {\n ");
free(name);
@@ -231,12 +254,12 @@ BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOC
if (gdImageGetPixel(image, x, y) == fg) {
c |= b;
}
- if ((b == 128) || (x == sx && y == sy)) {
+ if ((b == 128) || (x == sx - 1)) {
b = 1;
if (p) {
- gdCtxPrintf(out, ", ");
+ gdCtxPuts(out, ", ");
if (!(p%12)) {
- gdCtxPrintf(out, "\n ");
+ gdCtxPuts(out, "\n ");
p = 12;
}
}
@@ -248,6 +271,6 @@ BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOC
}
}
}
- gdCtxPrintf(out, "};\n");
+ gdCtxPuts(out, "};\n");
}
/* }}} */
diff --git a/Build/source/libs/gd/libgd-src/src/gdfontg.c b/Build/source/libs/gd/libgd-src/src/gdfontg.c
index 37178602695..04f3362c99b 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfontg.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfontg.c
@@ -4382,6 +4382,9 @@ gdFont gdFontGiantRep = {
BGD_EXPORT_DATA_PROT gdFontPtr gdFontGiant = &gdFontGiantRep;
+/*
+ Function: gdFontGetGiant
+*/
BGD_DECLARE(gdFontPtr) gdFontGetGiant (void)
{
return gdFontGiant;
diff --git a/Build/source/libs/gd/libgd-src/src/gdfontl.c b/Build/source/libs/gd/libgd-src/src/gdfontl.c
index a987407aeca..8501b5f7d96 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfontl.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfontl.c
@@ -4639,6 +4639,9 @@ gdFont gdFontLargeRep = {
BGD_EXPORT_DATA_PROT gdFontPtr gdFontLarge = &gdFontLargeRep;
+/*
+ Function: gdFontGetLarge
+*/
BGD_DECLARE(gdFontPtr)
gdFontGetLarge (void)
{
diff --git a/Build/source/libs/gd/libgd-src/src/gdfontmb.c b/Build/source/libs/gd/libgd-src/src/gdfontmb.c
index 349b2dbde28..566cc6dd15f 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfontmb.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfontmb.c
@@ -3869,6 +3869,9 @@ gdFont gdFontMediumBoldRep = {
BGD_EXPORT_DATA_PROT gdFontPtr gdFontMediumBold = &gdFontMediumBoldRep;
+/*
+ Function: gdFontGetMediumBold
+*/
BGD_DECLARE(gdFontPtr)
gdFontGetMediumBold (void)
{
diff --git a/Build/source/libs/gd/libgd-src/src/gdfonts.c b/Build/source/libs/gd/libgd-src/src/gdfonts.c
index f7c27250362..f84b2ee7d4e 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfonts.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfonts.c
@@ -3867,6 +3867,9 @@ gdFont gdFontSmallRep = {
BGD_EXPORT_DATA_PROT gdFontPtr gdFontSmall = &gdFontSmallRep;
+/*
+ Function: gdFontGetSmall
+*/
BGD_DECLARE(gdFontPtr)
gdFontGetSmall (void)
{
diff --git a/Build/source/libs/gd/libgd-src/src/gdfontt.c b/Build/source/libs/gd/libgd-src/src/gdfontt.c
index c9c6f4a31da..3c97c4d376d 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfontt.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfontt.c
@@ -2590,6 +2590,9 @@ gdFont gdFontTinyRep = {
BGD_EXPORT_DATA_PROT gdFontPtr gdFontTiny = &gdFontTinyRep;
+/*
+ Function: gdFontGetTiny
+*/
BGD_DECLARE(gdFontPtr)
gdFontGetTiny (void)
{
diff --git a/Build/source/libs/gd/libgd-src/src/gdft.c b/Build/source/libs/gd/libgd-src/src/gdft.c
index 03a01593660..e745c6c098d 100644
--- a/Build/source/libs/gd/libgd-src/src/gdft.c
+++ b/Build/source/libs/gd/libgd-src/src/gdft.c
@@ -92,6 +92,9 @@ static char *font_path(char **fontpath, char *name_list);
#define TRUE !FALSE
#endif
+/*
+ Function: gdImageStringTTF
+*/
BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
double ptsize, double angle, int x, int y, char *string)
{
@@ -448,12 +451,8 @@ static int useFontConfig(int flag)
#ifdef HAVE_LIBFONTCONFIG
if (fontConfigFlag) {
return (!(flag & gdFTEX_FONTPATHNAME));
- } else
-#endif
- {
- return flag & gdFTEX_FONTCONFIG;
-
}
+#endif
return flag & gdFTEX_FONTCONFIG;
}
@@ -734,8 +733,6 @@ gdft_draw_bitmap (gdCache_head_t * tc_cache, gdImage * im, int fg,
+ bitmap.num_grays / 2)
/ (bitmap.num_grays - 1);
} else if (bitmap.pixel_mode == ft_pixel_mode_mono) {
- tc_key.pixel = ((bitmap.buffer[pc / 8]
- << (pc % 8)) & 128) ? GD_NUMCOLORS : 0;
/* 2.0.5: mode_mono fix from Giuliano Pochini */
tc_key.pixel =
((bitmap.
@@ -771,11 +768,17 @@ gdft_draw_bitmap (gdCache_head_t * tc_cache, gdImage * im, int fg,
return (char *) NULL;
}
+/*
+ Function: gdFreeFontCache
+*/
BGD_DECLARE(void) gdFreeFontCache ()
{
gdFontCacheShutdown ();
}
+/*
+ Function: gdFontCacheShutdown
+*/
BGD_DECLARE(void) gdFontCacheShutdown ()
{
if (fontCache) {
@@ -789,9 +792,11 @@ BGD_DECLARE(void) gdFontCacheShutdown ()
}
}
-/********************************************************************/
-/* gdImageStringFT - render a utf8 string onto a gd image */
+/*
+ Function: gdImageStringFT
+ Render a utf8 string onto a gd image.
+*/
BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
double ptsize, double angle, int x, int y, char *string)
{
@@ -799,6 +804,9 @@ BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fon
ptsize, angle, x, y, string, 0);
}
+/*
+ Function: gdFontCacheSetup
+*/
BGD_DECLARE(int) gdFontCacheSetup (void)
{
if (fontCache) {
@@ -1639,14 +1647,14 @@ static char * font_path(char **fontpath, char *name_list)
*fontpath = NULL;
fontsearchpath = getenv ("GDFONTPATH");
#ifdef _WIN32
- if (!fontsearchpath) {
- char *ffptr = getenv ("SYSTEMROOT");
- if (ffptr) {
- fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
- strcpy(fontsearchpath, ffptr);
- strcat(fontsearchpath, "\\fonts");
- }
- }
+ if (!fontsearchpath) {
+ char *ffptr = getenv ("SYSTEMROOT");
+ if (ffptr) {
+ fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
+ strcpy(fontsearchpath, ffptr);
+ strcat(fontsearchpath, "\\fonts");
+ }
+ }
#endif
if (!fontsearchpath)
fontsearchpath = DEFAULT_FONTPATH;
@@ -1751,6 +1759,9 @@ static char * font_path(char **fontpath, char *name_list)
return NULL;
}
+/*
+ Function: gdFTUseFontConfig
+*/
BGD_DECLARE(int) gdFTUseFontConfig(int flag)
{
#ifdef 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 13b32fe1c06..f145de04802 100644
--- a/Build/source/libs/gd/libgd-src/src/gdfx.c
+++ b/Build/source/libs/gd/libgd-src/src/gdfx.c
@@ -25,6 +25,9 @@
#define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
#define MINY(x) MIN4(x[1],x[3],x[5],x[7])
+/*
+ Function: gdImageStringFTCircle
+*/
BGD_DECLARE(char *)
gdImageStringFTCircle (gdImagePtr im,
int cx,
@@ -165,9 +168,15 @@ gdImageStringFTCircle (gdImagePtr im,
fclose (out);
}
#endif /* STEP_PNGS */
+
+ gdImageDestroy (im1);
+
/* Ready to produce a circle */
im3 = gdImageSquareToCircle (im2, radius);
- gdImageDestroy (im1);
+ if (im3 == NULL) {
+ gdImageDestroy(im2);
+ return 0;
+ }
gdImageDestroy (im2);
/* Now blend im3 with the destination. Cheat a little. The
source (im3) is white-on-black, so we can use the
@@ -248,6 +257,9 @@ main (int argc, char *argv[])
#define SUPERBITS1 1
#define SUPERBITS2 2
+/*
+ Function: gdImageSquareToCircle
+*/
BGD_DECLARE(gdImagePtr)
gdImageSquareToCircle (gdImagePtr im, int radius)
{
@@ -259,6 +271,9 @@ gdImageSquareToCircle (gdImagePtr im, int radius)
return 0;
}
im2 = gdImageCreateTrueColor (radius * 2, radius * 2);
+ if (!im2) {
+ return 0;
+ }
/* Supersampling for a nicer result */
c = (im2->sx / 2) * SUPER;
for (y = 0; (y < im2->sy * SUPER); y++) {
@@ -372,16 +387,18 @@ gdImageSubSharpen (int pc, int c, int nc, float inner_coeff, float
}
/*
- * Sharpen function added on 2003-11-19
- * by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
- * Simple 3x3 convolution kernel
- * Makes use of seperability
- * Faster, but less flexible, than full-blown unsharp masking
- * pct is sharpening percentage, and can be greater than 100
- * Silently does nothing to non-truecolor images
- * Silently does nothing for pct<0, as not a useful blurring function
- * Leaves transparency/alpha-channel untouched
- */
+ Function: gdImageSharpen
+
+ Sharpen function added on 2003-11-19
+ by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
+ Simple 3x3 convolution kernel
+ Makes use of seperability
+ Faster, but less flexible, than full-blown unsharp masking
+ pct is sharpening percentage, and can be greater than 100
+ Silently does nothing to non-truecolor images
+ Silently does nothing for pct<0, as not a useful blurring function
+ Leaves transparency/alpha-channel untouched
+*/
BGD_DECLARE(void)
gdImageSharpen (gdImagePtr im, int pct)
{
diff --git a/Build/source/libs/gd/libgd-src/src/gdhelpers.c b/Build/source/libs/gd/libgd-src/src/gdhelpers.c
index 3c063d95523..c371e78fa5b 100644
--- a/Build/source/libs/gd/libgd-src/src/gdhelpers.c
+++ b/Build/source/libs/gd/libgd-src/src/gdhelpers.c
@@ -90,6 +90,9 @@ gdReallocEx (void *ptr, size_t size)
return newPtr;
}
+/*
+ Function: gdFree
+*/
BGD_DECLARE(void) gdFree (void *ptr)
{
free (ptr);
diff --git a/Build/source/libs/gd/libgd-src/src/gdkanji.c b/Build/source/libs/gd/libgd-src/src/gdkanji.c
index ab8c0df82df..f05187e4580 100644
--- a/Build/source/libs/gd/libgd-src/src/gdkanji.c
+++ b/Build/source/libs/gd/libgd-src/src/gdkanji.c
@@ -321,15 +321,18 @@ han2zen (int *p1, int *p2)
if (daku) {
if ((*p2 >= 74 && *p2 <= 103) || (*p2 >= 110 && *p2 <= 122))
(*p2)++;
- else if (*p2 == 131 && *p2 == 69)
+ else if (*p2 == 131 || *p2 == 69)
*p2 = 148;
} else if (handaku && *p2 >= 110 && *p2 <= 122)
(*p2) += 2;
}
/* Recast strcpy to handle unsigned chars used below. */
+
#define ustrcpy(A,B) (strcpy((char*)(A),(const char*)(B)))
+#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)
{
@@ -439,6 +442,7 @@ do_check_and_conv (unsigned char *to, unsigned char *from)
unsigned char *tmp_p = &tmp[0];
int p1, p2, i, j;
int kanji = TRUE;
+ int copy_string = FALSE;
switch (DetectKanjiCode (from)) {
case NEW:
@@ -456,12 +460,12 @@ do_check_and_conv (unsigned char *to, unsigned char *from)
case NEC:
gd_error_ex(GD_DEBUG, "Kanji code is NEC Kanji.");
gd_error("cannot convert NEC Kanji.");
- ustrcpy (tmp, from);
+ copy_string = TRUE;
kanji = FALSE;
break;
case EUC:
gd_error_ex(GD_DEBUG, "Kanji code is EUC.");
- ustrcpy (tmp, from);
+ copy_string = TRUE;
break;
case SJIS:
gd_error_ex(GD_DEBUG, "Kanji code is SJIS.");
@@ -469,21 +473,26 @@ do_check_and_conv (unsigned char *to, unsigned char *from)
break;
case EUCORSJIS:
gd_error_ex(GD_DEBUG, "Kanji code is EUC or SJIS.");
- ustrcpy (tmp, from);
+ copy_string = TRUE;
kanji = FALSE;
break;
case ASCII:
gd_error_ex(GD_DEBUG, "This is ASCII string.");
- ustrcpy (tmp, from);
+ copy_string = TRUE;
kanji = FALSE;
break;
default:
gd_error_ex(GD_DEBUG, "This string includes unknown code.");
- ustrcpy (tmp, from);
+ copy_string = TRUE;
kanji = FALSE;
break;
}
+ if (copy_string) {
+ ustrncpy (tmp, from, BUFSIZ);
+ tmp[BUFSIZ-1] = '\0';
+ }
+
/* Hankaku Kana ---> Zenkaku Kana */
if (kanji) {
j = 0;
diff --git a/Build/source/libs/gd/libgd-src/src/gdpp.cxx b/Build/source/libs/gd/libgd-src/src/gdpp.cxx
index 64581247b4a..a8101fca29f 100644
--- a/Build/source/libs/gd/libgd-src/src/gdpp.cxx
+++ b/Build/source/libs/gd/libgd-src/src/gdpp.cxx
@@ -1,272 +1,272 @@
-/* *****************************************************************************
-** $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
- format of a file before reading it into memory.
-*/
-#ifdef __cplusplus
-#include "gdpp.h"
-
-namespace GD
- {
- /**
- Load an image from a file, after attempting to
- determine it's image file format.
- Invoke CreateFrom with an already opened
- 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).
- You can call Width() and Height() member functions of the image to determine its size.
- */
- bool Image::CreateFrom(FILE * in)
- {
- bool rtn;
- int c = fgetc(in);
- ungetc(c, in);
- switch (c)
- {
- /* PNG
- The first eight bytes of a PNG file always contain the following (decimal) values:
- 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'.
- */
- case 0xFF: // JPEG
- rtn = CreateFromJpeg(in);
- break;
-#endif
- /* WBMP
- 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
- == GD2\0
- Starts with gd2
- */
- case 0x67: // GD2
- rtn = CreateFromGd2(in);
- break;
- /* GD
- 0xFF 0xFE
- or
- 0xFF 0xFF
- Conflicts with Jpeg
- */
- /* XBM
- #define test_width 16
- #define test_height 7
- */
- case 0x23: // XBM
- rtn = CreateFromXbm(in);
- break;
- default:
- rtn = false;
- break;
- }
- return rtn;
- }
-
- /**
- Load an image from a standard input stream, after attempting to
- determine it's image file format.
- Invoke CreateFrom with an already opened stream
- 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).
- You can call Width() and Height() member functions of the image to determine its size.
- Example usage, convert anything to gif:
- #include <fstream>
- #include <gdpp.h>
-
- std::ifstream in("image.xxx", std::ios_base::in | std::ios_base::binary );
- GD::Image im;
- im.CreateFrom(in);
- if (im.good())
- {
- std::ofstream out("image.gif", std::ios_base::out | std::ios_base::binary );
- im.Gif(out);
- }
- */
- bool Image::CreateFrom(std::istream & in)
- {
- 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
- == .PNG\r\n.\n
- */
- 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'.
- */
- case 0xFF: // JPEG
- rtn = CreateFromJpeg(in);
- break;
-#endif
-
- /* WBMP
- 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
- == GD2\0
- Starts with gd2
- */
- case 0x67: // GD2
- rtn = CreateFromGd2(in);
- break;
- /* GD
- 0xFF 0xFE
- or
- 0xFF 0xFF
- Conflicts with Jpeg
- */
- default:
- rtn = false;
- break;
- }
- return rtn;
- }
-
- /**
- Load an image from an in-RAM memory block, after attempting to
- 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).
- You can call Width() and Height() member functions of the image to determine its size.
- */
- bool Image::CreateFrom(int size, void * data)
- {
- bool rtn;
- 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
- == .PNG\r\n.\n
- */
- case 0x89: // PNG
- rtn = CreateFromPng(size, data);
- break;
-#endif
- /* GIF
- 0x47 0x49 0x46
- */
- case 0x47: // GIF
- 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'.
- */
- case 0xFF: // JPEG
- rtn = CreateFromJpeg(size, data);
- break;
-#endif
-
- /* WBMP
- 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
- == GD2\0
- Starts with gd2
- */
- case 0x67: // GD2
- rtn = CreateFromGd2(size, data);
- break;
- /* GD
- 0xFF 0xFE
- or
- 0xFF 0xFF
- Conflicts with Jpeg
- */
- default:
- rtn = false;
- break;
- }
- return rtn;
- }
- } // namespace GD
-/**
- 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>
- #include <gdpp.h>
-
- std::ifstream in("image.xxx", std::ios_base::in | std::ios_base::binary );
- GD::Image im;
- in >> im;
- if (im.good())
- {
- std::ofstream out("image.gif", std::ios_base::out | std::ios_base::binary );
- im.Gif(out);
- }
-*/
-std::istream & operator>> (std::istream & in, GD::Image & img)
- {
- img.CreateFrom(in);
- return in;
- }
-
-#endif /* __cplusplus */
+/* *****************************************************************************
+** $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
+ format of a file before reading it into memory.
+*/
+#ifdef __cplusplus
+#include "gdpp.h"
+
+namespace GD
+ {
+ /**
+ Load an image from a file, after attempting to
+ determine it's image file format.
+ Invoke CreateFrom with an already opened
+ 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).
+ You can call Width() and Height() member functions of the image to determine its size.
+ */
+ bool Image::CreateFrom(FILE * in)
+ {
+ bool rtn;
+ int c = fgetc(in);
+ ungetc(c, in);
+ switch (c)
+ {
+ /* PNG
+ The first eight bytes of a PNG file always contain the following (decimal) values:
+ 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'.
+ */
+ case 0xFF: // JPEG
+ rtn = CreateFromJpeg(in);
+ break;
+#endif
+ /* WBMP
+ 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
+ == GD2\0
+ Starts with gd2
+ */
+ case 0x67: // GD2
+ rtn = CreateFromGd2(in);
+ break;
+ /* GD
+ 0xFF 0xFE
+ or
+ 0xFF 0xFF
+ Conflicts with Jpeg
+ */
+ /* XBM
+ #define test_width 16
+ #define test_height 7
+ */
+ case 0x23: // XBM
+ rtn = CreateFromXbm(in);
+ break;
+ default:
+ rtn = false;
+ break;
+ }
+ return rtn;
+ }
+
+ /**
+ Load an image from a standard input stream, after attempting to
+ determine it's image file format.
+ Invoke CreateFrom with an already opened stream
+ 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).
+ You can call Width() and Height() member functions of the image to determine its size.
+ Example usage, convert anything to gif:
+ #include <fstream>
+ #include <gdpp.h>
+
+ std::ifstream in("image.xxx", std::ios_base::in | std::ios_base::binary );
+ GD::Image im;
+ im.CreateFrom(in);
+ if (im.good())
+ {
+ std::ofstream out("image.gif", std::ios_base::out | std::ios_base::binary );
+ im.Gif(out);
+ }
+ */
+ bool Image::CreateFrom(std::istream & in)
+ {
+ 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
+ == .PNG\r\n.\n
+ */
+ 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'.
+ */
+ case 0xFF: // JPEG
+ rtn = CreateFromJpeg(in);
+ break;
+#endif
+
+ /* WBMP
+ 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
+ == GD2\0
+ Starts with gd2
+ */
+ case 0x67: // GD2
+ rtn = CreateFromGd2(in);
+ break;
+ /* GD
+ 0xFF 0xFE
+ or
+ 0xFF 0xFF
+ Conflicts with Jpeg
+ */
+ default:
+ rtn = false;
+ break;
+ }
+ return rtn;
+ }
+
+ /**
+ Load an image from an in-RAM memory block, after attempting to
+ 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).
+ You can call Width() and Height() member functions of the image to determine its size.
+ */
+ bool Image::CreateFrom(int size, void * data)
+ {
+ bool rtn;
+ 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
+ == .PNG\r\n.\n
+ */
+ case 0x89: // PNG
+ rtn = CreateFromPng(size, data);
+ break;
+#endif
+ /* GIF
+ 0x47 0x49 0x46
+ */
+ case 0x47: // GIF
+ 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'.
+ */
+ case 0xFF: // JPEG
+ rtn = CreateFromJpeg(size, data);
+ break;
+#endif
+
+ /* WBMP
+ 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
+ == GD2\0
+ Starts with gd2
+ */
+ case 0x67: // GD2
+ rtn = CreateFromGd2(size, data);
+ break;
+ /* GD
+ 0xFF 0xFE
+ or
+ 0xFF 0xFF
+ Conflicts with Jpeg
+ */
+ default:
+ rtn = false;
+ break;
+ }
+ return rtn;
+ }
+ } // namespace GD
+/**
+ 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>
+ #include <gdpp.h>
+
+ std::ifstream in("image.xxx", std::ios_base::in | std::ios_base::binary );
+ GD::Image im;
+ in >> im;
+ if (im.good())
+ {
+ std::ofstream out("image.gif", std::ios_base::out | std::ios_base::binary );
+ im.Gif(out);
+ }
+*/
+std::istream & operator>> (std::istream & in, GD::Image & img)
+ {
+ img.CreateFrom(in);
+ return in;
+ }
+
+#endif /* __cplusplus */
diff --git a/Build/source/libs/gd/libgd-src/src/gdtest.c b/Build/source/libs/gd/libgd-src/src/gdtest.c
index 17dfc1bc521..0f8febe077a 100644
--- a/Build/source/libs/gd/libgd-src/src/gdtest.c
+++ b/Build/source/libs/gd/libgd-src/src/gdtest.c
@@ -50,6 +50,14 @@ main (int argc, char **argv)
ref = gdImageCreateFromPng (in);
fclose (in);
+ if (!im) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
+ if (!ref) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
printf ("Reference File has %d Palette entries\n", ref->colorsTotal);
@@ -65,6 +73,10 @@ main (int argc, char **argv)
sprintf (of, "%s.png", argv[1]);
#endif
out = fopen (of, "wb");
+ if (!out) {
+ fprintf(stderr, "PNG Output file does not exist!\n");
+ exit (1);
+ }
gdImagePng (im, out);
fclose (out);
@@ -75,7 +87,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);
@@ -85,6 +102,10 @@ main (int argc, char **argv)
iptr = gdImagePngPtr (im, &sz);
im2 = gdImageCreateFromPngPtr (sz, iptr);
gdFree (iptr);
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromPngPtr failed.\n");
+ exit (1);
+ }
CompareImages ("GD->PNG ptr->GD", ref, im2);
gdImageDestroy (im2);
@@ -98,6 +119,10 @@ main (int argc, char **argv)
sprintf (of, "%s.gd2", argv[1]);
#endif
out = fopen (of, "wb");
+ if (!out) {
+ fprintf(stderr, "GD2 Output file does not exist!\n");
+ exit (1);
+ }
gdImageGd2 (im, out, 128, 2);
fclose (out);
@@ -108,7 +133,10 @@ main (int argc, char **argv)
}
im2 = gdImageCreateFromGd2 (in);
fclose (in);
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromGd2 failed.\n");
+ exit (1);
+ }
CompareImages ("GD->GD2 File->GD", ref, im2);
unlink (of);
@@ -119,7 +147,10 @@ main (int argc, char **argv)
im2 = gdImageCreateFromGd2Ptr (sz, iptr);
gdFree (iptr);
/*printf("Got img2 %d\n",im2); */
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromGd2Ptr failed.\n");
+ exit (1);
+ }
CompareImages ("GD->GD2 ptr->GD", ref, im2);
gdImageDestroy (im2);
@@ -133,6 +164,10 @@ main (int argc, char **argv)
sprintf (of, "%s.gd", argv[1]);
#endif
out = fopen (of, "wb");
+ if (!out) {
+ fprintf(stderr, "GD Output file does not exist!\n");
+ exit (1);
+ }
gdImageGd (im, out);
fclose (out);
@@ -143,7 +178,10 @@ main (int argc, char **argv)
}
im2 = gdImageCreateFromGd (in);
fclose (in);
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromGd failed.\n");
+ exit (1);
+ }
CompareImages ("GD->GD File->GD", ref, im2);
unlink (of);
@@ -154,7 +192,11 @@ main (int argc, char **argv)
im2 = gdImageCreateFromGdPtr (sz, iptr);
gdFree (iptr);
/*printf("Got img2 %d\n",im2); */
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromGdPtr failed.\n");
+ exit (1);
+ }
+
CompareImages ("GD->GD ptr->GD", ref, im2);
gdImageDestroy (im2);
@@ -188,6 +230,11 @@ main (int argc, char **argv)
sprintf (of, "%s.snk", argv[1]);
#endif
out = fopen (of, "wb");
+ if (!out) {
+ fprintf (stderr,
+ "GD Sink: ERROR - GD Sink Output file does not exist!\n");
+ exit (1);
+ }
imgsnk.sink = fwriteWrapper;
imgsnk.context = out;
gdImagePngToSink (im, &imgsnk);
@@ -199,7 +246,10 @@ main (int argc, char **argv)
} else {
im2 = gdImageCreateFromPng (in);
fclose (in);
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
CompareImages ("GD Sink", ref, im2);
gdImageDestroy (im2);
};
@@ -216,7 +266,10 @@ main (int argc, char **argv)
}
im2 = gdImageCreateFromPng (in);
fclose (in);
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
in = fopen ("test/gdtest.gd2", "rb");
if (!in) {
@@ -225,7 +278,10 @@ main (int argc, char **argv)
}
im3 = gdImageCreateFromGd2Part (in, 200, 300, 150, 100);
fclose (in);
-
+ if (!im3) {
+ fprintf(stderr, "gdImageCreateFromGd2Part failed.\n");
+ exit (1);
+ }
CompareImages ("GD2Part (gdtest_200_300_150_100.png, gdtest.gd2(part))",
im2, im3);
@@ -242,8 +298,15 @@ main (int argc, char **argv)
}
im2 = gdImageCreateFromPng (in);
fclose (in);
-
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
im3 = gdImageCreate (100, 60);
+ if (!im3) {
+ fprintf(stderr, "gdImageCreate failed.\n");
+ exit (1);
+ }
colRed = gdImageColorAllocate (im3, 255, 0, 0);
colBlu = gdImageColorAllocate (im3, 0, 0, 255);
gdImageFilledRectangle (im3, 0, 0, 49, 30, colRed);
@@ -264,7 +327,10 @@ main (int argc, char **argv)
}
im3 = gdImageCreateFromPng (in);
fclose (in);
-
+ if (!im3) {
+ fprintf(stderr, "gdImageCreateFromPng failed.\n");
+ exit (1);
+ }
printf ("[Merged Image has %d colours]\n", im2->colorsTotal);
CompareImages ("Merged (gdtest.png, gdtest_merge.png)", im2, im3);
@@ -318,6 +384,11 @@ main (int argc, char **argv)
exit (1);
}
im2 = gdImageCreateFromWBMP (in);
+ fclose (in);
+ if (!im2) {
+ fprintf(stderr, "gdImageCreateFromWBMP failed.\n");
+ exit (1);
+ }
fprintf(stderr, "WBMP has %d colors\n", gdImageColorsTotal (im2));
fprintf(stderr, "WBMP colors are:\n");
for (i = 0; (i < gdImageColorsTotal (im2)); i++) {
@@ -325,11 +396,6 @@ main (int argc, char **argv)
gdImageRed (im2, i),
gdImageGreen (im2, i), gdImageBlue (im2, i));
}
- fclose (in);
- if (!im2) {
- fprintf(stderr, "gdImageCreateFromWBMP failed.\n");
- exit (1);
- }
CompareImages ("WBMP test (gdtest.png, gdtest.wbmp)", ref, im2);
out = fopen ("test/gdtest_wbmp_to_png.png", "wb");
if (!out) {
diff --git a/Build/source/libs/gd/libgd-src/src/gdtestft.c b/Build/source/libs/gd/libgd-src/src/gdtestft.c
index e72165bdb56..53945a636cf 100644
--- a/Build/source/libs/gd/libgd-src/src/gdtestft.c
+++ b/Build/source/libs/gd/libgd-src/src/gdtestft.c
@@ -44,7 +44,7 @@ main (int argc, char *argv[])
#ifdef JISX0208
char *s = "Hello. ‚±‚ñ‚É‚¿‚Í Qyjpqg,"; /* String to draw. */
#else
- char *s = "Hello. äöü Qyjpqg,"; /* String to draw. */
+ char *s = "Hello. ã“ã‚“ã«ã¡ã¯ Qyjpqg,"; /* String to draw. */
#endif
double sz = 40.;
diff --git a/Build/source/libs/gd/libgd-src/src/webpimg.c b/Build/source/libs/gd/libgd-src/src/webpimg.c
deleted file mode 100644
index cf73d642b65..00000000000
--- a/Build/source/libs/gd/libgd-src/src/webpimg.c
+++ /dev/null
@@ -1,905 +0,0 @@
-/*===========================================================================*
- - Copyright 2010 Google Inc.
- -
- - This code is licensed under the same terms as WebM:
- - Software License Agreement: http://www.webmproject.org/license/software/
- - Additional IP Rights Grant: http://www.webmproject.org/license/additional/
- *===========================================================================*/
-
-/*
- * Encoding/Decoding of WebP still image compression format.
- *
- * 1. WebPDecode: Takes an array of bytes (string) corresponding to the WebP
- * encoded image and generates output in the YUV format with
- * the color components U, V subsampled to 1/2 resolution along
- * each dimension.
- *
- * 2. YUV420toRGBA: Converts from YUV (with color subsampling) such as produced
- * by the WebPDecode routine into 32 bits per pixel RGBA data
- * array. This data array can be directly used by the Leptonica
- * Pix in-memory image format.
- *
- * 3. WebPEncode: Takes a Y, U, V data buffers (with color components U and V
- * subsampled to 1/2 resolution) and generates the WebP string
- *
- * 4. RGBAToYUV420: Generates Y, U, V data (with color subsampling) from 32 bits
- * per pixel RGBA data buffer. The resulting YUV data can be
- * directly fed into the WebPEncode routine.
- *
- * 5. AdjustColorspace:
- *
- * 6. AdjustColorspaceBack:
- */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gd.h"
-#include "gd_errors.h"
-#ifdef HAVE_LIBVPX
-#include "webpimg.h"
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include "vpx/vpx_decoder.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_encoder.h"
-#include "vpx/vp8cx.h"
-#include "gd.h"
-
-/*---------------------------------------------------------------------*
- * color conversions *
- *---------------------------------------------------------------------*/
-
-#ifndef inline
-# define inline __inline
-#endif
-static inline int clip(float v, int a, int b) {
- return (v > b) ? b : (v < 0) ? 0 : (int)(v);
-}
-enum {
- COLOR_RED = 0,
- COLOR_GREEN = 1,
- COLOR_BLUE = 2,
- ALPHA_CHANNEL = 3
-};
-
-/* endian neutral extractions of RGBA from a 32 bit pixel */
-static const uint32 RED_SHIFT =
- 8 * (sizeof(uint32) - 1 - COLOR_RED); /* 24 */
-static const uint32 GREEN_SHIFT =
- 8 * (sizeof(uint32) - 1 - COLOR_GREEN); /* 16 */
-static const uint32 BLUE_SHIFT =
- 8 * (sizeof(uint32) - 1 - COLOR_BLUE); /* 8 */
-static const uint32 ALPHA_SHIFT =
- 8 * (sizeof(uint32) - 1 - ALPHA_CHANNEL); /* 0 */
-
-static inline int GetRed(const uint32* rgba) {
- return gdTrueColorGetRed(*rgba);
-}
-
-static inline int GetGreen(const uint32* rgba) {
- return gdTrueColorGetGreen(*rgba);
-}
-
-static inline int GetBlue(const uint32* rgba) {
- return gdTrueColorGetBlue(*rgba);
-}
-
-enum { YUV_FRAC = 16 };
-
-static inline int clip_uv(int v) {
- v = (v + (257 << (YUV_FRAC + 2 - 1))) >> (YUV_FRAC + 2);
- return ((v & ~0xff) == 0) ? v : v < 0 ? 0u : 255u;
-}
-
-
-/* YUV <-----> RGB conversions */
-/* The exact naming is Y'CbCr, following the ITU-R BT.601 standard.
- * More information at: http://en.wikipedia.org/wiki/YCbCr
- */
-static inline int GetLumaY(int r, int g, int b) {
- const int kRound = (1 << (YUV_FRAC - 1)) + (16 << YUV_FRAC);
- // Y = 0.2569 * R + 0.5044 * G + 0.0979 * B + 16
- const int luma = 16839 * r + 33059 * g + 6420 * b;
- return (luma + kRound) >> YUV_FRAC;
-}
-
-static inline int GetLumaYfromPtr(uint32* rgba) {
- const int r = GetRed(rgba);
- const int g = GetGreen(rgba);
- const int b = GetBlue(rgba);
- return GetLumaY(r, g, b);
-}
-
-static inline int GetChromaU(int r, int g, int b) {
- // U = -0.1483 * R - 0.2911 * G + 0.4394 * B + 128
- return clip_uv(-9719 * r - 19081 * g + 28800 * b);
-}
-
-static inline int GetChromaV(int r, int g, int b) {
- // V = 0.4394 * R - 0.3679 * G - 0.0715 * B + 128
- return clip_uv(+28800 * r - 24116 * g - 4684 * b);
-}
-
-/* Converts YUV to RGB and writes into a 32 bit pixel in endian
- * neutral fashion
- */
-enum { RGB_FRAC = 16, RGB_HALF = (1 << RGB_FRAC) / 2,
- RGB_RANGE_MIN = -227, RGB_RANGE_MAX = 256 + 226 };
-
-static int init_done = 0;
-static int16_t kVToR[256], kUToB[256];
-static int32_t kVToG[256], kUToG[256];
-static uint8_t kClip[RGB_RANGE_MAX - RGB_RANGE_MIN];
-
-static void InitTables() {
- int i;
- for (i = 0; i < 256; ++i) {
- kVToR[i] = (89858 * (i - 128) + RGB_HALF) >> RGB_FRAC;
- kUToG[i] = -22014 * (i - 128) + RGB_HALF;
- kVToG[i] = -45773 * (i - 128);
- kUToB[i] = (113618 * (i - 128) + RGB_HALF) >> RGB_FRAC;
- }
- for (i = RGB_RANGE_MIN; i < RGB_RANGE_MAX; ++i) {
- const int j = ((i - 16) * 76283 + RGB_HALF) >> RGB_FRAC;
- kClip[i - RGB_RANGE_MIN] = (j < 0) ? 0 : (j > 255) ? 255 : j;
- }
-
- init_done = 1;
-}
-
-static void ToRGB(int y, int u, int v, uint32* const dst) {
- const int r_off = kVToR[v];
- const int g_off = (kVToG[v] + kUToG[u]) >> RGB_FRAC;
- const int b_off = kUToB[u];
- const int r = kClip[y + r_off - RGB_RANGE_MIN];
- const int g = kClip[y + g_off - RGB_RANGE_MIN];
- const int b = kClip[y + b_off - RGB_RANGE_MIN];
- *dst = (r << RED_SHIFT) | (g << GREEN_SHIFT) | (b << BLUE_SHIFT);
-}
-
-static inline uint32 get_le32(const uint8* const data) {
- return data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
-}
-
-/* Returns the difference (in dB) between two images represented in YUV format
- *
- * Input:
- * Y1/U1/V1: The Y/U/V data of the first image
- * Y2/U2/V2: The Y/U/V data of the second image
- *
- * Returns the PSNR (http://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio)
- * value computed bewteen the two images
- */
-double GetPSNRYuv(const uint8* Y1,
- const uint8* U1,
- const uint8* V1,
- const uint8* Y2,
- const uint8* U2,
- const uint8* V2,
- int y_width,
- int y_height) {
- int x, y, row_idx;
- const int uv_width = ((y_width + 1) >> 1);
- const int uv_height = ((y_height + 1) >> 1);
- double sse = 0., count = 0.;
- for (y = 0; y < y_height; ++y) {
- count += y_width;
- row_idx = y * y_width;
- for (x = 0; x < y_width; ++x) {
- double diff = Y1[row_idx + x] - Y2[row_idx + x];
- sse += diff * diff;
- }
- }
- for (y = 0; y < uv_height; ++y) {
- count += 2 * uv_width;
- row_idx = y * uv_width;
- for (x = 0; x < uv_width; ++x) {
- const double diff_U = U1[row_idx + x] - U2[row_idx + x];
- const double diff_V = V1[row_idx + x] - V2[row_idx + x];
- sse += diff_U * diff_U + diff_V * diff_V;
- }
- }
- return -4.3429448 * log(sse / (255. * 255. * count));
-}
-
-/* Returns the difference (in dB) between two images. One represented
- * using Y,U,V vectors and the other is webp image data.
- * Input:
- * Y1/U1/V1: The Y/U/V data of the first image
- * imgdata: data buffer containing webp image
- * imgdata_size: size of the imgdata buffer
- *
- * Returns the PSNR value computed bewteen the two images
- */
-double WebPGetPSNR(const uint8* Y1,
- const uint8* U1,
- const uint8* V1,
- uint8* imgdata,
- int imgdata_size) {
- uint8* Y2 = NULL;
- uint8* U2 = NULL;
- uint8* V2 = NULL;
- int w = 0, h = 0;
- double psnr = 0;
-
- WebPDecode(imgdata,
- imgdata_size,
- &Y2,
- &U2,
- &V2,
- &w,
- &h);
-
- psnr = GetPSNRYuv(Y1, U1, V1, Y2, U2, V2, w, h);
- free(Y2);
-
- return psnr;
-}
-
-/*---------------------------------------------------------------------*
- * Reading WebP *
- *---------------------------------------------------------------------*/
-
-/* RIFF layout is:
- * 0ffset tag
- * 0...3 "RIFF" 4-byte tag
- * 4...7 size of image data (including metadata) starting at offset 8
- * 8...11 "WEBP" our form-type signature
- * 12..15 "VP8 " 4-byte tags, describing the raw video format used
- * 16..19 size of the raw WebP image data, starting at offset 20
- * 20.... the WebP bytes
- * There can be extra chunks after the "VP8 " chunk (ICMT, ICOP, ...)
- * All 32-bits sizes are in little-endian order.
- * Note: chunk data must be padded to multiple of 2 in size
- */
-
-int SkipRiffHeader(const uint8** data_ptr, int *data_size_ptr) {
- /* 20 bytes RIFF header 10 bytes VP8 header */
- const int kHeaderSize = (20 + 10);
- uint32 chunk_size = 0xffffffffu;
-
- if (*data_size_ptr >= kHeaderSize && !memcmp(*data_ptr, "RIFF", 4)) {
- if (memcmp(*data_ptr + 8, "WEBP", 4)) {
- return 0; /* wrong image file signature */
- } else {
- const uint32 riff_size = get_le32(*data_ptr + 4);
- if (memcmp(*data_ptr + 12, "VP8 ", 4)) {
- return 0; /* invalid compression format */
- }
- chunk_size = get_le32(*data_ptr + 16);
- if ((chunk_size > riff_size + 8) || (chunk_size & 1)) {
- return 0; /* inconsistent size information. */
- }
- /* We have a RIFF container. Skip it. */
- *data_ptr += 20;
- *data_size_ptr -= 20;
- }
- }
- return chunk_size;
-}
-
-/* Generate RGBA row from an YUV row (with width upsampling of chrome data)
- * Input:
- * 1, 2, 3. y_src, u_src, v_src - Pointers to input Y, U, V row data
- * respectively. We reuse these variables, they iterate over all pixels in
- * the row.
- * 4. y_width: width of the Y image plane (aka image width)
- * Output:
- * 5. rgb_dst: pointer to the output rgb row. We reuse this variable, it
- * iterates over all pixels in the row.
- */
-static void YUV420toRGBLine(uint8* y_src,
- uint8* u_src,
- uint8* v_src,
- int y_width,
- uint32* rgb_dst) {
- int x;
- for (x = 0; x < (y_width >> 1); ++x) {
- const int U = u_src[0];
- const int V = v_src[0];
- ToRGB(y_src[0], U, V, rgb_dst);
- ToRGB(y_src[1], U, V, rgb_dst + 1);
- ++u_src;
- ++v_src;
- y_src += 2;
- rgb_dst += 2;
- }
- if (y_width & 1) { /* Rightmost pixel */
- ToRGB(y_src[0], (*u_src), (*v_src), rgb_dst);
- }
-}
-
-/* Converts from YUV (with color subsampling) such as produced by the WebPDecode
- * routine into 32 bits per pixel RGBA data array. This data array can be
- * directly used by the Leptonica Pix in-memory image format.
- * Input:
- * 1, 2, 3. Y, U, V: the input data buffers
- * 4. pixwpl: the desired words per line corresponding to the supplied
- * output pixdata.
- * 5. width, height: the dimensions of the image whose data resides in Y,
- * U, V.
- * Output:
- * 6. pixdata: the output data buffer. Caller should allocate
- * height * pixwpl bytes of memory before calling this routine.
- */
-void YUV420toRGBA(uint8* Y,
- uint8* U,
- uint8* V,
- int words_per_line,
- int width,
- int height,
- uint32* pixdata) {
- int y_width = width;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_stride = uv_width;
- int y;
-
- if (!init_done)
- InitTables();
-
- /* note that the U, V upsampling in height is happening here as the U, V
- * buffers sent to successive odd-even pair of lines is same.
- */
- for (y = 0; y < height; ++y) {
- YUV420toRGBLine(Y + y * y_stride,
- U + (y >> 1) * uv_stride,
- V + (y >> 1) * uv_stride,
- width,
- pixdata + y * words_per_line);
- }
-}
-
-void gd_YUV420toRGBA(uint8* Y,
- uint8* U,
- uint8* V,
- gdImagePtr im) {
- int width = im->sx;
- int height = im->sy;
- int y_width = width;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_stride = uv_width;
- int y;
-
- /* output im must be truecolor */
- if (!im->trueColor) {
- return;
- }
-
- if (!init_done)
- InitTables();
-
- /* note that the U, V upsampling in height is happening here as the U, V
- * buffers sent to successive odd-even pair of lines is same.
- */
- for (y = 0; y < height; ++y) {
- YUV420toRGBLine(Y + y * y_stride,
- U + (y >> 1) * uv_stride,
- V + (y >> 1) * uv_stride,
- width,
- (uint32 *)im->tpixels[y]);
- }
-}
-
-static WebPResult VPXDecode(const uint8* data,
- int data_size,
- uint8** p_Y,
- uint8** p_U,
- uint8** p_V,
- int* p_width,
- int* p_height) {
- vpx_codec_ctx_t dec;
- vp8_postproc_cfg_t ppcfg;
- WebPResult result = webp_failure;
-
- if (!data || data_size <= 10 || !p_Y || !p_U || !p_V
- || *p_Y != NULL || *p_U != NULL || *p_V != NULL) {
- return webp_failure;
- }
-
- if (vpx_codec_dec_init(&dec,
- &vpx_codec_vp8_dx_algo, NULL, 0) != VPX_CODEC_OK) {
- return webp_failure;
- }
-
- ppcfg.post_proc_flag = VP8_NOFILTERING;
- vpx_codec_control(&dec, VP8_SET_POSTPROC, &ppcfg);
-
-
- if (vpx_codec_decode(&dec, data, data_size, NULL, 0) == VPX_CODEC_OK) {
- vpx_codec_iter_t iter = NULL;
- vpx_image_t* const img = vpx_codec_get_frame(&dec, &iter);
- if (img) {
- int y_width = img->d_w;
- int y_height = img->d_h;
- int y_stride = y_width;
- int uv_width = (y_width + 1) >> 1;
- int uv_stride = uv_width;
- int uv_height = ((y_height + 1) >> 1);
- int y;
-
- *p_width = y_width;
- *p_height = y_height;
- if ((*p_Y = (uint8 *)(calloc(y_stride * y_height
- + 2 * uv_stride * uv_height,
- sizeof(uint8)))) != NULL) {
- *p_U = *p_Y + y_height * y_stride;
- *p_V = *p_U + uv_height * uv_stride;
- for (y = 0; y < y_height; ++y) {
- memcpy(*p_Y + y * y_stride,
- img->planes[0] + y * img->stride[0],
- y_width);
- }
- for (y = 0; y < uv_height; ++y) {
- memcpy(*p_U + y * uv_stride,
- img->planes[1] + y * img->stride[1],
- uv_width);
- memcpy(*p_V + y * uv_stride,
- img->planes[2] + y * img->stride[2],
- uv_width);
- }
- result = webp_success;
- }
- }
- }
- vpx_codec_destroy(&dec);
-
- return result;
-}
-
-WebPResult WebPDecode(const uint8* data,
- int data_size,
- uint8** p_Y,
- uint8** p_U,
- uint8** p_V,
- int* p_width,
- int* p_height) {
-
- const uint32 chunk_size = SkipRiffHeader(&data, &data_size);
- if (!chunk_size) {
- return webp_failure; /* unsupported RIFF header */
- }
-
- return VPXDecode(data, data_size, p_Y, p_U, p_V, p_width, p_height);
-}
-
-/*---------------------------------------------------------------------*
- * Writing WebP *
- *---------------------------------------------------------------------*/
-
-/* Takes a pair of RGBA row data as input and generates 2 rows of Y data and one
- * row of subsampled U, V data as output
- * Input:
- * 1, 2. rgb_line1, rgb_line2 - input rgba rows
- * 3. width - image width
- * Outout:
- * 4, 5, 6: Output Y, U, V row
- */
-static void RGBALinepairToYUV420(uint32* rgb_line1,
- uint32* rgb_line2,
- int width,
- uint8* Y_dst1,
- uint8* Y_dst2,
- uint8* u_dst,
- uint8* v_dst) {
- int x;
- for (x = (width >> 1); x > 0; --x) {
- const int sum_r =
- GetRed(rgb_line1 + 0) + GetRed(rgb_line1 + 1) +
- GetRed(rgb_line2 + 0) + GetRed(rgb_line2 + 1);
- const int sum_g =
- GetGreen(rgb_line1 + 0) + GetGreen(rgb_line1 + 1) +
- GetGreen(rgb_line2 + 0) + GetGreen(rgb_line2 + 1);
- const int sum_b =
- GetBlue(rgb_line1 + 0) + GetBlue(rgb_line1 + 1) +
- GetBlue(rgb_line2 + 0) + GetBlue(rgb_line2 + 1);
-
- Y_dst1[0] = GetLumaYfromPtr(rgb_line1 + 0);
- Y_dst1[1] = GetLumaYfromPtr(rgb_line1 + 1);
- Y_dst2[0] = GetLumaYfromPtr(rgb_line2 + 0);
- Y_dst2[1] = GetLumaYfromPtr(rgb_line2 + 1);
-
- *u_dst++ = GetChromaU(sum_r, sum_g, sum_b);
- *v_dst++ = GetChromaV(sum_r, sum_g, sum_b);
-
- rgb_line1 += 2;
- rgb_line2 += 2;
- Y_dst1 += 2;
- Y_dst2 += 2;
- }
-
- if (width & 1) { /* rightmost pixel. */
- const int sum_r = GetRed(rgb_line1) + GetRed(rgb_line2);
- const int sum_g = GetGreen(rgb_line1) + GetGreen(rgb_line2);
- const int sum_b = GetBlue(rgb_line1) + GetBlue(rgb_line2);
-
- Y_dst1[0] = GetLumaYfromPtr(rgb_line1);
- Y_dst2[0] = GetLumaYfromPtr(rgb_line2);
- *u_dst = GetChromaU(2 * sum_r, 2 * sum_g, 2 * sum_b);
- *v_dst = GetChromaV(2 * sum_r, 2 * sum_g, 2 * sum_b);
- }
-}
-
-/* Generates Y, U, V data (with color subsampling) from 32 bits
- * per pixel RGBA data buffer. The resulting YUV data can be directly fed into
- * the WebPEncode routine.
- * Input:
- * 1. pixdatainput rgba data buffer
- * 2. words per line corresponding to pixdata
- * 3, 4. image width and height respectively
- * Output:
- * 5, 6, 7. Output YUV data buffers
- */
-void gd_RGBAToYUV420(gdImagePtr im2,
- uint8* Y,
- uint8* U,
- uint8* V) {
- int y_width = im2->sx;
- int y_height = im2->sy;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_stride = uv_width;
- int y;
- gdImagePtr im = NULL;
- int free_im = 0;
-
- if (!im2->trueColor) {
- /* Todo: Replace the color/YUV functions with our own and simplify
- that should boost the conversion a bit as well, not only for
- palette image. */
- im = gdImageCreateTrueColor(im2->sx, im2->sy);
- if (!im) {
- gd_error("gd-webp error: cannot convert palette input to truecolor");
- return;
- }
- gdImageCopy(im, im2, 0, 0, 0, 0, im->sx, im->sy);
- free_im = 1;
- } else {
- im = im2;
- }
- for (y = 0; y < (y_height >> 1); ++y) {
- RGBALinepairToYUV420((uint32 *)im->tpixels[2 * y],
- (uint32 *)im->tpixels[2 * y + 1],
- y_width,
- Y + 2 * y * y_stride,
- Y + (2 * y + 1) * y_stride,
- U + y * uv_stride,
- V + y * uv_stride);
- }
- if (y_height & 1) {
- RGBALinepairToYUV420((uint32 *)im->tpixels[y_height - 1],
- (uint32 *)im->tpixels[y_height - 1],
- y_width,
- Y + (y_height - 1) * y_stride,
- Y + (y_height - 1) * y_stride,
- U + (y_height >> 1) * uv_stride,
- V + (y_height >> 1) * uv_stride);
- }
- if (free_im) {
- gdImageDestroy(im);
- }
-}
-
-/* Generates Y, U, V data (with color subsampling) from 32 bits
- * per pixel RGBA data buffer. The resulting YUV data can be directly fed into
- * the WebPEncode routine.
- * Input:
- * 1. pixdatainput rgba data buffer
- * 2. words per line corresponding to pixdata
- * 3, 4. image width and height respectively
- * Output:
- * 5, 6, 7. Output YUV data buffers
- */
-void RGBAToYUV420(uint32* pixdata,
- int words_per_line,
- int width,
- int height,
- uint8* Y,
- uint8* U,
- uint8* V) {
- int y_width = width;
- int y_height = height;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_stride = uv_width;
- int y;
-
- for (y = 0; y < (y_height >> 1); ++y) {
- RGBALinepairToYUV420(pixdata + 2 * y * words_per_line,
- pixdata + (2 * y + 1) * words_per_line,
- y_width,
- Y + 2 * y * y_stride,
- Y + (2 * y + 1) * y_stride,
- U + y * uv_stride,
- V + y * uv_stride);
- }
- if (y_height & 1) {
- RGBALinepairToYUV420(pixdata + (y_height - 1) * words_per_line,
- pixdata + (y_height - 1) * words_per_line,
- y_width,
- Y + (y_height - 1) * y_stride,
- Y + (y_height - 1) * y_stride,
- U + (y_height >> 1) * uv_stride,
- V + (y_height >> 1) * uv_stride);
- }
-}
-
-static int codec_ctl(vpx_codec_ctx_t *enc,
- enum vp8e_enc_control_id id,
- int value) {
- const vpx_codec_err_t res = vpx_codec_control_(enc, id, value);
- if (res != VPX_CODEC_OK) {
- return webp_failure;
- }
- return webp_success;
-}
-
-static void SetupParams(vpx_codec_enc_cfg_t* cfg,
- int QP) {
- cfg->g_threads = 2;
- cfg->rc_min_quantizer = QP;
- cfg->rc_max_quantizer = QP;
- cfg->kf_mode = VPX_KF_FIXED;
-}
-
-/* VPXEncode: Takes a Y, U, V data buffers (with color components U and V
- * subsampled to 1/2 resolution) and generates the VPX string.
- * Output VPX string is placed in the *p_out buffer. container_size
- * indicates number of bytes to be left blank at the beginning of
- * *p_out buffer to accommodate for a container header.
- *
- * Return: success/failure
- */
-static WebPResult VPXEncode(const uint8* Y,
- const uint8* U,
- const uint8* V,
- int y_width,
- int y_height,
- int y_stride,
- int uv_width,
- int uv_height,
- int uv_stride,
- int QP,
- int container_size,
- unsigned char** p_out,
- int* p_out_size_bytes) {
- vpx_codec_iface_t* iface = &vpx_codec_vp8_cx_algo;
- vpx_codec_err_t res;
- vpx_codec_enc_cfg_t cfg;
- vpx_codec_ctx_t enc;
- WebPResult result = webp_failure;
- vpx_image_t img;
-
- *p_out = NULL;
- *p_out_size_bytes = 0;
-
-
- /* validate input parameters. */
- if (!p_out || !Y || !U || !V
- || y_width <= 0 || y_height <= 0 || uv_width <= 0 || uv_height <= 0
- || y_stride < y_width || uv_stride < uv_width
- || QP < 0 || QP > 63) {
- return webp_failure;
- }
-
- res = vpx_codec_enc_config_default(iface, &cfg, 0);
- if (res != VPX_CODEC_OK) {
- return webp_failure;
- }
-
- SetupParams(&cfg, QP);
- cfg.g_w = y_width;
- cfg.g_h = y_height;
-
- res = vpx_codec_enc_init(&enc, iface, &cfg, 0);
-
- if (res == VPX_CODEC_OK) {
- codec_ctl(&enc, VP8E_SET_CPUUSED, 3);
- codec_ctl(&enc, VP8E_SET_NOISE_SENSITIVITY, 0);
- codec_ctl(&enc, VP8E_SET_SHARPNESS, 0);
- codec_ctl(&enc, VP8E_SET_ENABLEAUTOALTREF, 0);
- codec_ctl(&enc, VP8E_SET_ARNR_MAXFRAMES, 0);
- codec_ctl(&enc, VP8E_SET_ARNR_TYPE, 0);
- codec_ctl(&enc, VP8E_SET_ARNR_STRENGTH, 0);
- codec_ctl(&enc, VP8E_SET_STATIC_THRESHOLD, 0);
- codec_ctl(&enc, VP8E_SET_TOKEN_PARTITIONS, 2);
-
- vpx_img_wrap(&img, IMG_FMT_I420,
- y_width, y_height, 16, (uint8*)(Y));
- img.planes[PLANE_Y] = (uint8*)(Y);
- img.planes[PLANE_U] = (uint8*)(U);
- img.planes[PLANE_V] = (uint8*)(V);
- img.stride[PLANE_Y] = y_stride;
- img.stride[PLANE_U] = uv_stride;
- img.stride[PLANE_V] = uv_stride;
-
- res = vpx_codec_encode(&enc, &img, 0, 1, 0, VPX_DL_BEST_QUALITY);
-
- if (res == VPX_CODEC_OK) {
- vpx_codec_iter_t iter = NULL;
- const vpx_codec_cx_pkt_t* pkt = vpx_codec_get_cx_data(&enc, &iter);
- if (pkt != NULL) {
- *p_out = (unsigned char*)(calloc(container_size + pkt->data.frame.sz,
- 1));
-
- memcpy(*p_out + container_size,
- (const void*)(pkt->data.frame.buf),
- pkt->data.frame.sz);
- *p_out_size_bytes = container_size + pkt->data.frame.sz;
-
- result = webp_success;
- }
- }
- }
-
- vpx_codec_destroy(&enc);
-
- return result;
-}
-
-WebPResult WebPEncode(const uint8* Y,
- const uint8* U,
- const uint8* V,
- int y_width,
- int y_height,
- int y_stride,
- int uv_width,
- int uv_height,
- int uv_stride,
- int QP,
- unsigned char** p_out,
- int* p_out_size_bytes,
- double *psnr) {
-
- const int kRiffHeaderSize = 20;
-
- if (VPXEncode(Y, U, V,
- y_width, y_height, y_stride,
- uv_width, uv_height, uv_stride,
- QP, kRiffHeaderSize,
- p_out, p_out_size_bytes) != webp_success) {
- return webp_failure;
- } else {
- /* Write RIFF header */
- const int img_size_bytes = *p_out_size_bytes - kRiffHeaderSize;
- const int chunk_size = (img_size_bytes + 1) & ~1; /* make size even */
- const int riff_size = chunk_size + 12;
- const uint8_t kRiffHeader[20] = { 'R', 'I', 'F', 'F',
- (riff_size >> 0) & 255,
- (riff_size >> 8) & 255,
- (riff_size >> 16) & 255,
- (riff_size >> 24) & 255,
- 'W', 'E', 'B', 'P',
- 'V', 'P', '8', ' ',
- (chunk_size >> 0) & 255,
- (chunk_size >> 8) & 255,
- (chunk_size >> 16) & 255,
- (chunk_size >> 24) & 255 };
- memcpy(*p_out, kRiffHeader, kRiffHeaderSize);
-
- if (psnr) {
- *psnr = WebPGetPSNR(Y, U, V, *p_out, *p_out_size_bytes);
- }
-
- return webp_success;
- }
-}
-
-void AdjustColorspace(uint8* Y, uint8* U, uint8* V, int width, int height) {
- int y_width = width;
- int y_height = height;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_height = ((y_height + 1) >> 1);
- int uv_stride = uv_width;
- int x, y;
- /* convert luma */
- for (y = 0; y < y_height; ++y) {
- uint8* const Yrow = Y + y * y_stride;
- for (x = 0; x < y_width; ++x) {
- /* maps [0..255] to [16..235] */
- Yrow[x] = ((Yrow[x] * 55 + 32) >> 6) + 16;
- }
- }
- /* convert chroma */
- for (y = 0; y < uv_height; ++y) {
- uint8* const Urow = U + y * uv_stride;
- uint8* const Vrow = V + y * uv_stride;
- for (x = 0; x < uv_width; ++x) {
- /* maps [0..255] to [16..240] */
- Urow[x] = (((Urow[x] - 127) * 7) >> 3) + 128;
- Vrow[x] = (((Vrow[x] - 127) * 7) >> 3) + 128;
- }
- }
-}
-
-void AdjustColorspaceBack(uint8* Y, uint8* U, uint8* V, int width, int height) {
- int y_width = width;
- int y_height = height;
- int y_stride = y_width;
- int uv_width = ((y_width + 1) >> 1);
- int uv_height = ((y_height + 1) >> 1);
- int uv_stride = uv_width;
- int x, y;
- /* convert luma */
- for (y = 0; y < y_height; ++y) {
- uint8* const Yrow = Y + y * y_stride;
- for (x = 0; x < y_width; ++x) {
- /* maps [16..235] to [0..255] */
- const int v = ((Yrow[x] - 16) * 149 + 64) >> 7;
- Yrow[x] = (v < 0) ? 0 : (v > 255) ? 255u : v;
- }
- }
- /* convert chroma */
- for (y = 0; y < uv_height; ++y) {
- uint8* const Urow = U + y * uv_stride;
- uint8* const Vrow = V + y * uv_stride;
- for (x = 0; x < uv_width; ++x) {
- /* maps [0..255] to [16..240] */
- const int ru = (((Urow[x] - 128) * 73) >> 6) + 128;
- const int rv = (((Vrow[x] - 128) * 73) >> 6) + 128;
- Urow[x] = (ru < 0) ? 0 : (ru > 255) ? 255u : ru;
- Vrow[x] = (rv < 0) ? 0 : (rv > 255) ? 255u : rv;
- }
- }
-}
-
-WebPResult WebPGetInfo(const uint8* data,
- int data_size,
- int *width,
- int *height) {
- const uint32 chunk_size = SkipRiffHeader(&data, &data_size);
-
- if (width) *width = 0;
- if (height) *height = 0;
-
- if (!chunk_size) {
- return webp_failure; /* unsupported RIFF header */
- }
-
- /* Validate raw video data */
- if (data_size < 10) {
- return webp_failure; /* not enough data */
- }
-
- /* check signature */
- if (data[3] != 0x9d || data[4] != 0x01 || data[5] != 0x2a) {
- return webp_failure; /* Wrong signature. */
- } else {
- const uint32 bits = data[0] | (data[1] << 8) | (data[2] << 16);
-
- if ((bits & 1)) { /* Not a keyframe. */
- return webp_failure;
- } else {
- const int profile = (bits >> 1) & 7;
- const int show_frame = (bits >> 4) & 1;
- const uint32 partition_length = (bits >> 5);
-
- if (profile > 3) {
- return webp_failure; /* unknown profile */
- }
- if (!show_frame) {
- return webp_failure; /* first frame is invisible! */
- }
- if (partition_length >= chunk_size) {
- return webp_failure; /* inconsistent size information. */
- } else {
- const int w = ((data[7] << 8) | data[6]) & 0x3fff;
- const int h = ((data[9] << 8) | data[8]) & 0x3fff;
- if (width) *width = w;
- if (height) *height = h;
-
- return webp_success;
- }
- }
- }
- return webp_failure;
-}
-#endif /* HAVE_LIBVPX */
diff --git a/Build/source/libs/gd/libgd-src/src/webpimg.h b/Build/source/libs/gd/libgd-src/src/webpimg.h
deleted file mode 100644
index 8a05429a73c..00000000000
--- a/Build/source/libs/gd/libgd-src/src/webpimg.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*===========================================================================*
- - Copyright 2010 Google Inc.
- -
- - This code is licensed under the same terms as WebM:
- - Software License Agreement: http://www.webmproject.org/license/software/
- - Additional IP Rights Grant: http://www.webmproject.org/license/additional/
- *===========================================================================*/
-
-/*
- * Encoding/Decoding of WebP still image compression format.
- *
- * 1. WebPDecode: Takes an array of bytes (string) corresponding to the WebP
- * encoded image and generates output in the YUV format with
- * the color components U, V subsampled to 1/2 resolution along
- * each dimension.
- *
- * 2. YUV420toRGBA: Converts from YUV (with color subsampling) such as produced
- * by the WebPDecode routine into 32 bits per pixel RGBA data
- * array. This data array can be directly used by the Leptonica
- * Pix in-memory image format.
- *
- * 3. WebPEncode: Takes a Y, U, V data buffers (with color components U and V
- * subsampled to 1/2 resolution) and generates the WebP string
- *
- * 4. RGBAToYUV420: Generates Y, U, V data (with color subsampling) from 32 bits
- * per pixel RGBA data buffer. The resulting YUV data can be
- * directly fed into the WebPEncode routine.
- *
- * 5. AdjustColorspace:
- *
- * 6. AdjustColorspaceBack:
- */
-
-#ifndef THIRD_PARTY_VP8_VP8IMG_H_
-#define THIRD_PARTY_VP8_VP8IMG_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef unsigned char uint8;
-typedef unsigned int uint32;
-typedef enum WebPResultType {
- webp_success = 0,
- webp_failure = -1
-} WebPResult;
-
-/* Takes an array of bytes (string) corresponding to the WebP
- * encoded image and generates output in the YUV format with
- * the color components U, V subsampled to 1/2 resolution along
- * each dimension.
- * Input:
- * 1. data: the WebP data stream (array of bytes)
- * 2. data_size: count of bytes in the WebP data stream
- *
- * Output:
- * 3. p_Y/p_U/p_V : pointer to the Y/U/V data buffer (this routine will
- * allocate memory for the buffer, fill the buffer with
- * appropriate data and transfer owner ship of the buffer
- * to caller. Caller is reponsible for freeing the memory).
- * Note that the memory for Y, U, V buffers is alloacted
- * in one chunk, hence one should call free(*p_Y) only.
- * Do not try to free the U and V buffers.
- *
- * 6. p_width: this routine returns the width of the decoded image here
- * 7. p_height: this routine returns the width of the decoded image here
- * Return: success/failure
- */
-WebPResult WebPDecode(const uint8* data,
- int data_size,
- uint8** p_Y,
- uint8** p_U,
- uint8** p_V,
- int* p_width,
- int* p_height);
-
-/* WebPEncode: Takes a Y, U, V data buffers (with color components U and V
- * subsampled to 1/2 resolution) and generates the WebP string.
- * Input:
- * 1, 2, 3. Y, U, V: The input YUV data buffers
- * 4, 5. y_width, y_height: The width and height of the image whose data
- * is in Y, U, V. This matches the Y plane. The U
- * and V planes typically have 1/2 width and
- * height.
- * 6. y_stride: The width (in bytes) of one row of Y data. This may not
- * match width if there is end of row padding (e.g., for 32
- * bit row aligment).
- * 7. QP: the quantization parameter. This parameter controls the
- * compression vs quality tradeoff. Use smaller numbers for better
- * quality (compression will be lesser) and vice versa. 20 is a
- * good optimal value.
- * Output:
- * 8. p_out: the output array of bytes corresponding to the encoded WebP
- * image. This routine allocates memory for the buffer, fills it
- * with appropriate values and transfers ownership to caller.
- * Caller responsible for freeing of memory.
- * Return: success/failure
- */
-WebPResult WebPEncode(const uint8* Y,
- const uint8* U,
- const uint8* V,
- int y_width,
- int y_height,
- int y_stride,
- int uv_width,
- int uv_height,
- int uv_stride,
- int QP,
- unsigned char** p_out,
- int* p_out_size_bytes,
- double* psnr);
-
-/* Converts from YUV (with color subsampling) such as produced by the WebPDecode
- * routine into 32 bits per pixel RGBA data array. This data array can be
- * directly used by the Leptonica Pix in-memory image format.
- * Input:
- * 1, 2, 3. Y, U, V: the input data buffers
- * 4. pixwpl: the desired words per line corresponding to the supplied
- * output pixdata.
- * 5. width, height: the dimensions of the image whose data resides in Y,
- * U, V.
- * Output:
- * 6. pixdata: the output data buffer. Caller should allocate
- * height * pixwpl bytes of memory before calling this routine.
- */
-void YUV420toRGBA(uint8* Y,
- uint8* U,
- uint8* V,
- int words_per_line,
- int width,
- int height,
- uint32* pixdata);
-
-/* Generates Y, U, V data (with color subsampling) from 32 bits
- * per pixel RGBA data buffer. The resulting YUV data can be directly fed into
- * the WebPEncode routine.
- * Input:
- * 1. pix data input rgba data buffer
- * 2. words per line corresponding to pixdata
- * 3, 4. image width and height respectively
- * Output:
- * 5, 6, 7. Output YUV data buffers
- */
-void RGBAToYUV420(uint32* pixdata,
- int words_per_line,
- int width,
- int height,
- uint8* Y,
- uint8* U,
- uint8* V);
-
-/* This function adjust from YUV420J (jpeg decoding) to YUV420 (webp input)
- * Hints: http://en.wikipedia.org/wiki/YCbCr
- */
-void AdjustColorspace(uint8* Y, uint8* U, uint8* V, int width, int height);
-
-/* Inverse function: convert from YUV420 to YUV420J */
-void AdjustColorspaceBack(uint8* Y, uint8* U, uint8* V, int width, int height);
-
-/* Checks WebP image header and outputs height and width information of
- * the image
- *
- * Input:
- * 1. data: the WebP data stream (array of bytes)
- * 2. data_size: count of bytes in the WebP data stream
- *
- * Outut:
- * width/height: width and height of the image
- *
- * Return: success/failure
- */
-WebPResult WebPGetInfo(const uint8* data,
- int data_size,
- int *width,
- int *height);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* THIRD_PARTY_VP8_VP8IMG_H_ */
diff --git a/Build/source/libs/gd/libgd-src/src/webpng.c b/Build/source/libs/gd/libgd-src/src/webpng.c
index 74231795d10..6faa9097674 100644
--- a/Build/source/libs/gd/libgd-src/src/webpng.c
+++ b/Build/source/libs/gd/libgd-src/src/webpng.c
@@ -2,242 +2,296 @@
#include "config.h"
#endif
-/* Bring in the gd library functions */
-#include "gd.h"
-
/* Bring in standard I/O and string manipulation functions */
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
#include <stdio.h>
-#include <stdlib.h> /* for atoi() */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
-#ifdef _WIN32
-#include <process.h>
-int
-getpid ()
+#ifdef __clang__
+/* Workaround broken clang behavior: https://llvm.org/bugs/show_bug.cgi?id=20144 */
+#undef strcmp
+#endif
+
+/* Bring in the gd library functions */
+#include "gd.h"
+
+static const char argv0[] = "webpng";
+
+static void usage(const char *msg)
{
- return _getpid ();
+ /* If the command failed, output an explanation. */
+ fprintf(msg == NULL ? stdout : stderr,
+ "Usage: %s [-i y|n] [-l] [-t index|none] [-d] [-a] pngname.png\n"
+ " -i <y|n> Turns on/off interlace\n"
+ " -l Prints the table of color indexes\n"
+ " -t <index> Set the transparent color to the specified index (0-255 or \"none\")\n"
+ " -d Reports the dimensions and other characteristics of the image\n"
+ " -a Prints all alpha channels that are not 100%% opaque\n"
+ "\n"
+ "If you specify '-' as the input file, stdin/stdout will be used as input/output.\n",
+ argv0);
+ if (msg)
+ fprintf(stderr, "\nError: %s\n", msg);
+ exit(msg == NULL ? 0 : 1);
}
-#else
-#include <unistd.h> /* for getpid(), unlink() */
-#endif
+
+static void err(const char *fmt, ...)
+{
+ va_list ap;
+ int e = errno;
+
+ fprintf(stderr, "%s: error: ", argv0);
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ if (e)
+ fprintf(stderr, ": %s", strerror(e));
+ fputs("\n", stderr);
+
+ exit(1);
+}
+
int
-main (int argc, char **argv)
+main(int argc, char **argv)
{
FILE *in;
FILE *out;
- char outFn[20];
- int useStdinStdout = 0;
+ const char *infile;
+ char *tmpfile;
+ int i;
+ int use_stdin_stdout = 0;
+
+ int interlace = -100;
+ int list_color_table = 0;
+ int trans_col = -1;
+ int report_details = 0;
+ int print_alpha = 0;
/* Declare our image pointer */
gdImagePtr im = 0;
- int i;
- /* We'll clear 'no' once we know the user has made a
- reasonable request. */
- int no = 1;
/* We'll set 'write' once we know the user's request
requires that the image be written back to disk. */
int write = 0;
- /* C programs always get at least one argument; we want at
- least one more (the image), more in practice. */
- if (argc < 2 || !strcmp (argv[1], "--help")) {
- no = 1;
- goto usage;
- }
+ int got_a_flag = 0;
- /* The last argument should be the image. Open the file. */
- if (strcmp ("-", argv[argc - 1]) == 0) {
- /* - is synonymous with STDIN */
- useStdinStdout = 1;
- in = stdin;
- } else {
- in = fopen (argv[argc - 1], "rb");
- }
- if (!in) {
- fprintf(stderr, "can't open file %s.\n", argv[argc - 1]);
- exit (1);
- }
- /* Now load the image. */
-#ifdef HAVE_LIBPNG
- im = gdImageCreateFromPng (in);
-#else
- fprintf(stderr, "No PNG library support.\n");
-#endif
- fclose (in);
- /* If the load failed, it must not be a PNG file. */
- if (!im) {
- fprintf (stderr,
- "Error: %s is not a valid PNG file.\n", argv[argc - 1]);
- exit (1);
- }
/* Consider each argument in turn. */
- for (i = 1; (i < (argc - 1)); i++) {
- /* -i turns on and off interlacing. */
- if (!strcmp (argv[i], "--help")) {
- /* Every program should use this for help! :) */
- no = 1;
- goto usage;
- } else if (!strcmp (argv[i], "-i")) {
- if (i == (argc - 2)) {
- fprintf(stderr, "-i specified without y or n.\n");
- no = 1;
- goto usage;
- }
- if (!strcmp (argv[i + 1], "y")) {
- /* Set interlace. */
- gdImageInterlace (im, 1);
- } else if (!strcmp (argv[i + 1], "n")) {
- /* Clear interlace. */
- gdImageInterlace (im, 0);
- } else {
- fprintf(stderr, "Error: -i specified without y or n.\n");
- no = 1;
- goto usage;
- }
- i++;
- no = 0;
+ opterr = 0;
+ while ((i = getopt(argc, argv, "i:lt:da")) != -1) {
+ got_a_flag = 1;
+ switch (i) {
+ case 'i':
+ /* -i turns on and off interlacing. */
+ if (strcmp(optarg, "y") == 0)
+ interlace = 1;
+ else if (strcmp(optarg, "n") == 0)
+ interlace = 0;
+ else
+ usage("-i specified without y or n");
write = 1;
- } else if (!strcmp (argv[i], "-t")) {
+ break;
+
+ case 'l':
+ /* List the colors in the color table. */
+ list_color_table = 1;
+ break;
+
+ case 't':
/* Set transparent index (or none). */
- int index;
- if (i == (argc - 2)) {
- fprintf (stderr,
- "Error: -t specified without a color table index.\n");
- no = 1;
- goto usage;
- }
- if (!strcmp (argv[i + 1], "none")) {
+ if (strcmp(optarg, "none") == 0) {
/* -1 means not transparent. */
- gdImageColorTransparent (im, -1);
+ trans_col = -1;
} else {
- /* OK, get an integer and set the index. */
- index = atoi (argv[i + 1]);
- gdImageColorTransparent (im, index);
+ /* XXX: Should check for errors. */
+ trans_col = atoi(optarg);
+ if (trans_col < 0 || trans_col > 255)
+ err("-t has to be in the range of 0 and 255 (inclusive)");
}
- i++;
write = 1;
- no = 0;
- } else if (!strcmp (argv[i], "-l")) {
- /* List the colors in the color table. */
- int j;
- if (!im->trueColor) {
- /* Tabs used below. */
- printf ("Index Red Green Blue Alpha\n");
- for (j = 0; (j < gdImageColorsTotal (im)); j++) {
- /* Use access macros to learn colors. */
- printf ("%d %d %d %d %d\n",
- j,
- gdImageRed (im, j),
- gdImageGreen (im, j),
- gdImageBlue (im, j), gdImageAlpha (im, j));
- }
- } else {
- printf ("Truecolor image, no palette entries to list.\n");
- }
- no = 0;
- } else if (!strcmp (argv[i], "-d")) {
+ break;
+
+ case 'd':
/* Output dimensions, etc. */
- int t;
- printf ("Width: %d Height: %d Colors: %d\n",
- gdImageSX (im), gdImageSY (im), gdImageColorsTotal (im));
- t = gdImageGetTransparent (im);
- if (t != (-1)) {
- printf ("First 100%% transparent index: %d\n", t);
- } else {
- /* -1 means the image is not transparent. */
- printf ("First 100%% transparent index: none\n");
- }
- if (gdImageGetInterlaced (im)) {
- printf ("Interlaced: yes\n");
- } else {
- printf ("Interlaced: no\n");
- }
- no = 0;
- } else if (!strcmp (argv[i], "-a")) {
+ report_details = 1;
+ break;
+
+ case 'a':
/* Alpha channel info -- thanks to Wez Furlong */
- int maxx, maxy, x, y, alpha, pix, nalpha = 0;
+ print_alpha = 1;
+ break;
+
+ case 'h':
+ usage(NULL);
+ break;
+ default:
+ case '?':
+ if (optind < argc && strcmp(argv[optind], "--help") == 0)
+ usage(NULL);
+ usage("unknown option");
+ break;
+ }
+ }
+
+ if (got_a_flag == 0)
+ usage("missing operation flag");
+
+ if (argc == optind)
+ usage("missing filename");
+ else if (argc != optind + 1)
+ usage("can only specify one file");
+
+ infile = argv[optind];
+ if (strcmp(infile, "-") == 0) {
+ /* - is synonymous with STDIN */
+ use_stdin_stdout = 1;
+ in = stdin;
+ } else
+ in = fopen(infile, "rb");
+
+ if (!in)
+ err("can't open file %s", infile);
+
+ /* Now load the image. */
+ im = gdImageCreateFromPng(in);
+ fclose(in);
+ /* If the load failed, it must not be a PNG file. */
+ if (!im)
+ err("%s is not a valid PNG file", infile);
+
+ if (list_color_table) {
+ /* List the colors in the color table. */
+ if (!im->trueColor) {
+ int j;
+ /* Tabs used below. */
+ printf("Index Red Green Blue Alpha\n");
+ for (j = 0; j < gdImageColorsTotal(im); ++j) {
+ /* Use access macros to learn colors. */
+ printf("%d %d %d %d %d\n", j,
+ gdImageRed(im, j),
+ gdImageGreen(im, j),
+ gdImageBlue(im, j),
+ gdImageAlpha(im, j));
+ }
+ } else
+ printf("Truecolor image, no palette entries to list.\n");
+ }
+
+ if (report_details) {
+ /* Output dimensions, etc. */
+ int t;
+ printf("Width: %d Height: %d Colors: %d\n",
+ gdImageSX(im),
+ gdImageSY(im),
+ gdImageColorsTotal(im));
- maxx = gdImageSX (im);
- maxy = gdImageSY (im);
+ /* -1 means the image is not transparent. */
+ t = gdImageGetTransparent(im);
+ if (t != -1)
+ printf("First 100%% transparent index: %d\n", t);
+ else
+ printf("First 100%% transparent index: none\n");
- printf ("alpha channel information:\n");
+ if (gdImageGetInterlaced(im))
+ printf("Interlaced: yes\n");
+ else
+ printf("Interlaced: no\n");
+ }
+
+ if (print_alpha) {
+ /* Alpha channel info -- thanks to Wez Furlong */
+ int maxx, maxy, x, y, alpha, pix, nalpha = 0;
- if (im->trueColor) {
- for (y = 0; y < maxy; y++) {
- for (x = 0; x < maxx; x++) {
- pix = gdImageGetPixel (im, x, y);
- alpha = gdTrueColorGetAlpha (pix);
+ maxx = gdImageSX(im);
+ maxy = gdImageSY(im);
- if (alpha > gdAlphaOpaque) {
- /* Use access macros to learn colors. */
- printf ("%d %d %d %d\n",
- gdTrueColorGetRed (pix),
- gdTrueColorGetGreen (pix),
- gdTrueColorGetBlue (pix), alpha);
- nalpha++;
- }
+ printf("alpha channel information:\n");
+ if (im->trueColor) {
+ for (y = 0; y < maxy; y++) {
+ for (x = 0; x < maxx; x++) {
+ pix = gdImageGetPixel(im, x, y);
+ alpha = gdTrueColorGetAlpha(pix);
+
+ if (alpha > gdAlphaOpaque) {
+ /* Use access macros to learn colors. */
+ printf("%d %d %d %d\n",
+ gdTrueColorGetRed(pix),
+ gdTrueColorGetGreen(pix),
+ gdTrueColorGetBlue(pix),
+ alpha);
+ nalpha++;
}
+
}
- } else
- printf ("NOT a true color image\n");
- no = 0;
- printf ("%d alpha channels\n", nalpha);
+ }
+ } else
+ printf("NOT a true color image\n");
- } else {
- fprintf(stderr, "Unknown argument: %s\n", argv[i]);
- break;
- }
+ printf("%d alpha channels\n", nalpha);
}
-usage:
- if (no) {
- /* If the command failed, output an explanation. */
- fprintf (stderr,
- "Usage: webpng [-i y|n ] [-l] [-t index|none ] [-d] pngname.png\n"
- " -i [y|n] Turns on/off interlace\n"
- " -l Prints the table of color indexes\n"
- " -t [index] Set the transparent color to the specified index (0-255 or \"none\")\n"
- " -d Reports the dimensions and other characteristics of the image.\n"
- " -a Prints all alpha channels that are not 100%% opaque.\n"
- "\n"
- "If you specify '-' as the input file, stdin/stdout will be used input/output.\n");
+
+ /* If no modifications requested, break out. */
+ if (write == 0) {
+ gdImageDestroy(im);
+ return 0;
}
- if (write) {
- if (useStdinStdout) {
- out = stdout;
- } else {
- /* Open a temporary file. */
-
- /* "temp.tmp" is not good temporary filename. */
- sprintf (outFn, "webpng.tmp%d", getpid ());
- out = fopen (outFn, "wb");
-
- if (!out) {
- fprintf(stderr, "Unable to write to %s -- exiting\n", outFn);
- exit (1);
- }
- }
- /* Write the new PNG. */
-#ifdef HAVE_LIBPNG
- gdImagePng (im, out);
-#else
- fprintf(stderr, "No PNG library support.\n");
-#endif
- if (!useStdinStdout) {
- fclose (out);
- /* Erase the old PNG. */
- unlink (argv[argc - 1]);
- /* Rename the new to the old. */
- if (rename (outFn, argv[argc - 1]) != 0) {
- perror ("rename");
- exit (1);
- }
- }
+ if (interlace == 1)
+ gdImageInterlace(im, 1);
+ else if (interlace == 0)
+ gdImageInterlace(im, 0);
+
+ if (trans_col != -100)
+ gdImageColorTransparent(im, trans_col);
+
+ if (use_stdin_stdout) {
+ out = stdout;
+ } else {
+ /* Open a temporary file. */
+ size_t filelen = strlen(infile);
+ size_t len = filelen + 8;
+ int outfd;
+
+ tmpfile = malloc(len);
+ if (tmpfile == NULL)
+ err("could not create a tempfile");
+ memcpy(tmpfile, infile, filelen);
+ strcpy(tmpfile + filelen, ".XXXXXX");
+
+ outfd = mkstemp(tmpfile);
+ if (outfd == -1)
+ err("could not open %s", tmpfile);
+
+ out = fdopen(outfd, "wb");
+ if (!out)
+ err("could not open %s", tmpfile);
}
- /* Delete the image from memory. */
- if (im) {
- gdImageDestroy (im);
+
+ /* Write the new PNG. */
+ gdImagePng(im, out);
+
+ if (!use_stdin_stdout) {
+ fclose(out);
+ /* Erase the old PNG. */
+ unlink(infile);
+ /* Rename the new to the old. */
+ if (rename(tmpfile, infile) != 0)
+ err("unable to rename %s to %s", infile, tmpfile);
}
+
+ /* Delete the image from memory. */
+ gdImageDestroy(im);
+
/* All's well that ends well. */
return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
index 5f8706fdb02..3c1402c57dc 100644
--- a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
@@ -18,8 +18,8 @@ if (BUILD_TEST)
include_directories (BEFORE ${GD_INCLUDE_DIR} "${GDTEST_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/tests/gdtest")
SET(TESTS_DIRS
- gdtest
bmp
+ freetype
gd
gd2
gdimagearc
@@ -30,47 +30,45 @@ if (BUILD_TEST)
gdimagecolorresolve
gdimagecolortransparent
gdimagecopy
+ gdimagecopyresampled
gdimagecopyrotated
+ gdimagecrop
+ gdimagefile
gdimagefill
+ gdimagefilledarc
gdimagefilledellipse
gdimagefilledpolygon
gdimagefilledrectangle
gdimagefilltoborder
+ gdimagefilter
gdimageline
gdimageopenpolygon
gdimagepixelate
gdimagepolygon
gdimagerectangle
gdimagerotate
+ gdimagescale
gdimagescatterex
gdimagesetpixel
+ gdimagestringft
+ gdimagestringftex
+ gdimagetruecolortopalette
+ gdinterpolatedscale
gdnewfilectx
+ gdtest
gdtiled
+ gdtransformaffineboundingbox
gif
+ jpeg
+ png
tga
+ tiff
wbmp
+ webp
+ xbm
+ xpm
)
- IF(FREETYPE_FOUND)
- LIST(APPEND TESTS_DIRS freetype gdimagestringft gdimagestringftex)
- ENDIF(FREETYPE_FOUND)
-
- IF(JPEG_FOUND)
- LIST(APPEND TESTS_DIRS jpeg)
- ENDIF(JPEG_FOUND)
-
- IF(PNG_FOUND)
- LIST(APPEND TESTS_DIRS png)
- ENDIF(PNG_FOUND)
-
- IF(TIFF_FOUND)
- LIST(APPEND TESTS_DIRS tiff)
- ENDIF(TIFF_FOUND)
-
- IF(XPM_FOUND)
- LIST(APPEND TESTS_DIRS xpm)
- ENDIF(XPM_FOUND)
-
FOREACH(test_dir ${TESTS_DIRS})
add_subdirectory (${test_dir})
ENDFOREACH(test_dir)
diff --git a/Build/source/libs/gd/libgd-src/tests/Makefile.am b/Build/source/libs/gd/libgd-src/tests/Makefile.am
index 346bcd4c265..afdcd5d6a0a 100644
--- a/Build/source/libs/gd/libgd-src/tests/Makefile.am
+++ b/Build/source/libs/gd/libgd-src/tests/Makefile.am
@@ -1,368 +1,89 @@
-noinst_LIBRARIES = libgdtest.a
-
-libgdtest_a_SOURCES = \
- gdtest/gdtest.c \
- gdtest/gdtest.h \
- ../src/gdhelpers.c
-
-check_PROGRAMS = \
- gd2/gd2_empty_file \
- gdimagesetpixel/bug00186 \
- gdimagestringftex/gdimagestringftex_returnfontpathname \
- gdimageline/gdimageline_aa_outofrange \
- gdimagerectangle/bug00003 \
- gdimagerectangle/bug00106_gdimagerectangle \
- gd/gd_null \
- gd/gd_num_colors \
- tga/tga_null \
- gdimagepixelate/gdimagepixelate \
- gdimagecopy/bug00007 \
- gdnewfilectx/gdnewfilectx_null \
- gdimagefilledrectangle/bug00078 \
- gdimagefilledrectangle/bug00004 \
- gdimagefilledrectangle/bug00106_gdimagefilledrectangle \
- gdimagecolordeallocate/gdimagecolordeallocate \
- wbmp/wbmp_null \
- gdimagecolortransparent/gdimagecolortransparent \
- gif/bug00005_2 \
- gif/gif_null \
- gif/bug00181 \
- gif/bug00227 \
- bmp/bmp_null \
- gdinterpolatedscale/gdTrivialResize \
- gdinterpolatedscale/gdModesAndPalettes \
- gd/gd_versiontest \
- gdimagefilter/gdCopyBlurred \
- gdimagefile/gdnametest
-
-EXTRA_PROGRAMS = \
- gdimagestringft/gdimagestringft_bbox \
- gdtiled/bug00032 \
- gd2/gd2_im2im \
- gd2/gd2_null \
- gd2/gd2_read \
- gdimagearc/bug00079 \
- gdimageline/gdimageline_aa \
- gdimageline/bug00072 \
- gdimageline/bug00077 \
- gdimageline/bug00111 \
- gdimageline/gdimageline_bug5 \
- gdimageline/gdImageAALine_thickness \
- gdimageopenpolygon/gdimageopenpolygon2 \
- gdimageopenpolygon/gdimageopenpolygon1 \
- gdimageopenpolygon/gdimageopenpolygon0 \
- gdimageopenpolygon/gdimageopenpolygon3 \
- gd/gd_im2im \
- gdimagecopy/bug00081 \
- gdimagecopyrotated/bug00020 \
- gdimagepolygon/gdimagepolygon0 \
- gdimagepolygon/gdimagepolygon3 \
- gdimagepolygon/gdimagepolygon1 \
- gdimagepolygon/gdimagepolygon2 \
- gdimagecolorresolve/gdimagecolorresolve \
- gdimagefilledpolygon/gdimagefilledpolygon0 \
- gdimagefilledpolygon/gdimagefilledpolygon3 \
- gdimagefilledpolygon/gdimagefilledpolygon2 \
- gdimagefilledpolygon/gdimagefilledpolygon1 \
- gdimagefilledpolygon/bug00100 \
- gdimagecolorreplace/gdimagecolorreplace \
- gdimagefill/bug00002_2 \
- gdimagefill/bug00002_1 \
- gdimagefill/bug00002_4 \
- gdimagefill/bug00002_3 \
- gdimagecolorclosest/gdimagecolorclosest \
- gif/bug00005 \
- gif/gif_im2im \
- gif/bug00066 \
- gif/bug00006 \
- gif/bug00060 \
- gdimagecolorexact/gdimagecolorexact \
- gdimagefilledellipse/bug00191 \
- gdimagefilledellipse/bug00010 \
- xpm/bug00185 \
- xpm/color_name \
- xpm/bug00166 \
- jpeg/jpeg_empty_file \
- jpeg/jpeg_resolution \
- jpeg/jpeg_im2im \
- jpeg/jpeg_null \
- jpeg/jpeg_read \
- png/png_null \
- png/bug00033 \
- png/bug00193 \
- png/bug00011 \
- png/bug00088 \
- png/png_resolution \
- png/bug00086 \
- png/png_im2im \
- wbmp/wbmp_im2im \
- tiff/tiff_null \
- tiff/tiff_im2im \
- freetype/bug00132 \
- bmp/bmp_im2im \
- gdimagescatterex/bug00208_1 \
- gdimagescatterex/bug00208_2 \
- gdimagefilltoborder/bug00037 \
- gdimagerotate/php_bug_64898 \
- gdimagerotate/bug00067
-
-if HAVE_LIBXPM
-check_PROGRAMS += \
- xpm/bug00185 \
- xpm/color_name \
- xpm/bug00166
-endif
-
-if HAVE_LIBJPEG
-check_PROGRAMS += \
- jpeg/jpeg_empty_file \
- jpeg/jpeg_im2im \
- jpeg/jpeg_null
-if HAVE_LIBPNG
-check_PROGRAMS += \
- jpeg/jpeg_resolution \
- jpeg/jpeg_read
-endif
-endif
-
-if HAVE_LIBZ
-check_PROGRAMS += \
- gd2/gd2_null
-endif
-
-if HAVE_LIBPNG
-if HAVE_LIBZ
-check_PROGRAMS += \
- gd2/gd2_read \
- gd2/gd2_im2im \
- gdtiled/bug00032
-endif
-check_PROGRAMS += \
- gdimagestringft/gdimagestringft_bbox \
- gdimagearc/bug00079 \
- gdimageline/gdimageline_aa \
- gdimageline/bug00072 \
- gdimageline/bug00077 \
- gdimageline/bug00111 \
- gdimageline/gdimageline_bug5 \
- gdimageline/gdImageAALine_thickness \
- gdimageopenpolygon/gdimageopenpolygon2 \
- gdimageopenpolygon/gdimageopenpolygon1 \
- gdimageopenpolygon/gdimageopenpolygon0 \
- gdimageopenpolygon/gdimageopenpolygon3 \
- gd/gd_im2im \
- gdimagecopy/bug00081 \
- gdimagecopyrotated/bug00020 \
- gdimagepolygon/gdimagepolygon0 \
- gdimagepolygon/gdimagepolygon3 \
- gdimagepolygon/gdimagepolygon1 \
- gdimagepolygon/gdimagepolygon2 \
- gdimagecolorresolve/gdimagecolorresolve \
- gdimagefilledpolygon/gdimagefilledpolygon0 \
- gdimagefilledpolygon/gdimagefilledpolygon3 \
- gdimagefilledpolygon/gdimagefilledpolygon2 \
- gdimagefilledpolygon/gdimagefilledpolygon1 \
- gdimagefilledpolygon/bug00100 \
- gdimagecolorreplace/gdimagecolorreplace \
- gdimagefill/bug00002_2 \
- gdimagefill/bug00002_1 \
- gdimagefill/bug00002_4 \
- gdimagefill/bug00002_3 \
- gdimagecolorclosest/gdimagecolorclosest \
- gif/bug00005 \
- gif/gif_im2im \
- gif/bug00066 \
- gif/bug00006 \
- gif/bug00060 \
- gdimagecolorexact/gdimagecolorexact \
- gdimagefilledellipse/bug00191 \
- gdimagefilledellipse/bug00010 \
- png/png_null \
- png/bug00033 \
- png/bug00193 \
- png/bug00011 \
- png/bug00088 \
- png/png_resolution \
- png/bug00086 \
- png/png_im2im \
- wbmp/wbmp_im2im \
- bmp/bmp_im2im \
- gdimagescatterex/bug00208_1 \
- gdimagescatterex/bug00208_2 \
- gdimagefilltoborder/bug00037 \
- gdimagerotate/php_bug_64898 \
- gdimagerotate/bug00067
-endif
-
-if HAVE_LIBTIFF
-check_PROGRAMS += \
- tiff/tiff_null \
- tiff/tiff_im2im
-endif
-
-if HAVE_LIBFREETYPE
-check_PROGRAMS +=
- freetype/bug00132
-endif
-
-LDADD = libgdtest.a ../src/libgd.la
-AM_CPPFLAGS = -I$(top_srcdir)/src -I $(top_srcdir)/tests/gdtest
-
-TESTS = $(check_PROGRAMS)
-
-EXTRA_DIST = \
- gdtest/test_config.h.cmake \
- xpm/bug00166.xpm \
- xpm/bug00185.xpm \
- xpm/bug00185_damaged.xpm \
- xpm/color_name.xpm \
- gdtiled/bug00032_exp.png \
- jpeg/conv_test.jpeg \
- jpeg/conv_test_exp.png \
- jpeg/empty.jpeg \
- gd2/conv_test.gd2 \
- gd2/conv_gd2_exp.gd2 \
- gd2/empty.gd2 \
- gd2/conv_test_exp.png \
- gdimagearc/bug00079_exp.png \
- png/bug00088_2.png \
- png/bug00088_1_exp.png \
- png/bug00033.png \
- png/bug00088_2_exp.png \
- png/bug00088_1.png \
- png/emptyfile \
- gdimageline/gdimageline_aa_b_0_exp.png \
- gdimageline/gdimageline_aa_c_0_exp.png \
- gdimageline/gdimageline_aa_d_1_exp.png \
- gdimageline/gdimageline_aa_a_1_exp.png \
- gdimageline/gdimageline_aa_d_0_exp.png \
- gdimageline/bug00111_exp.png \
- gdimageline/gdimageline_aa_c_1_exp.png \
- gdimageline/gdimageline_aa_a_0_exp.png \
- gdimageline/gdimageline_aa_b_1_exp.png \
- gdimageline/bug00072_exp.png \
- gdimageline/bug00077_exp.png \
- gdimageopenpolygon/gdimageopenpolygon0.png \
- gdimageopenpolygon/gdimageopenpolygon1.png \
- gdimageopenpolygon/gdimageopenpolygon2.png \
- gdimageopenpolygon/gdimageopenpolygon3.png \
- gd/crafted_num_colors.gd \
- gdimagecopy/bug00081_exp.png \
- gdimagecopyrotated/bug00020_exp.png \
- gdimagepolygon/gdimagepolygon1.png \
- gdimagepolygon/gdimagepolygon3.png \
- gdimagepolygon/gdimagepolygon0.png \
- gdimagepolygon/gdimagepolygon2.png \
- gdimagefilledpolygon/gdimagefilledpolygon0.png \
- gdimagefilledpolygon/gdimagefilledpolygon1.png \
- gdimagefilledpolygon/gdimagefilledpolygon3.png \
- gdimagefilledpolygon/gdimagefilledpolygon2.png \
- gdimagefilledpolygon/bug00100.png \
- gdimagefill/bug00002_3_exp.png \
- gdimagefill/bug00002_2_exp.png \
- gdimagefill/bug00002_1_exp.png \
- gdimagefill/bug00002_4_exp.png \
- gif/bug00005_0.gif \
- gif/bug00005_1.gif \
- gif/bug00005_3.gif \
- gif/bug00005_2.gif \
- gif/bug00060.gif \
- gif/bug00066_exp.png \
- gif/bug00005_2_exp.png \
- gif/bug00066.gif \
- gdimagefilledellipse/bug00191.png \
- gdimagefilledellipse/bug00010_exp.png \
- gdimagescatterex/bug00208_2.png \
- gdimagescatterex/bug00208.png \
- gdimagescatterex/bug00208_1.png \
- freetype/bug00132_exp.png \
- freetype/DejaVuSans.ttf \
- gdimagestringft/CMakeLists.txt \
- gdtest/CMakeLists.txt \
- xpm/CMakeLists.txt \
- gdtiled/CMakeLists.txt \
- jpeg/CMakeLists.txt \
- gd2/CMakeLists.txt \
- gdimagesetpixel/CMakeLists.txt \
- gdimagearc/CMakeLists.txt \
- png/CMakeLists.txt \
- gdimagestringftex/CMakeLists.txt \
- gdimageline/CMakeLists.txt \
- gdimageopenpolygon/CMakeLists.txt \
- gdimagerectangle/CMakeLists.txt \
- gd/CMakeLists.txt \
- tga/CMakeLists.txt \
- gdimagepixelate/CMakeLists.txt \
- tiff/CMakeLists.txt \
- gdimagecopy/CMakeLists.txt \
- CMakeLists.txt \
- gdnewfilectx/CMakeLists.txt \
- gdimagefilledrectangle/CMakeLists.txt \
- gdimagecopyrotated/CMakeLists.txt \
- gdimagepolygon/CMakeLists.txt \
- gdimagecolordeallocate/CMakeLists.txt \
- wbmp/CMakeLists.txt \
- gdimagecolorresolve/CMakeLists.txt \
- gdimagefilledpolygon/CMakeLists.txt \
- gdimagecolorreplace/CMakeLists.txt \
- gdimagefill/CMakeLists.txt \
- gdimagecolorclosest/CMakeLists.txt \
- gdimagecolortransparent/CMakeLists.txt \
- gif/CMakeLists.txt \
- gdimagecolorexact/CMakeLists.txt \
- gdimagefilledellipse/CMakeLists.txt \
- bmp/CMakeLists.txt \
- gdimagescatterex/CMakeLists.txt \
- gdimagefilltoborder/CMakeLists.txt \
- freetype/CMakeLists.txt \
- gdimagerotate/php_bug_64898.png \
- gdimagerotate/php_bug_64898_exp.png \
- gdimagerotate/remirh128.jpg \
- gdimagerotate/bug00067_000_exp.png \
- gdimagerotate/bug00067_015_exp.png \
- gdimagerotate/bug00067_030_exp.png \
- gdimagerotate/bug00067_045_exp.png \
- gdimagerotate/bug00067_060_exp.png \
- gdimagerotate/bug00067_075_exp.png \
- gdimagerotate/bug00067_090_exp.png \
- gdimagerotate/bug00067_105_exp.png \
- gdimagerotate/bug00067_120_exp.png \
- gdimagerotate/bug00067_135_exp.png \
- gdimagerotate/bug00067_150_exp.png \
- gdimagerotate/bug00067_165_exp.png \
- gdimagerotate/bug00067_180_exp.png \
- gdimagefile/img-ref.tga \
- gdimagefile/img-ref.xbm \
- gdimagefile/img-ref.xpm \
- gdimageline/gdImageAALine_thickness_exp.png
-
-CLEANFILES = \
- a.png \
- bmp_im2im_dst.bmp \
- bmp_im2im_src.bmp \
- bug00132.c_35_diff.png \
- bug00132.c_35_out.png \
- bug00181.gif \
- bug00181a.gif \
- bug00227.gif \
- gd2_im2im_dst.gd2 \
- gd2_im2im_src.gd2 \
- gd_im2im_dst.gd \
- gd_im2im_src.gd \
- gdimageline_aa.c_38_diff.png \
- gdimageline_aa.c_38_out.png \
- gdimagestringft_bbox.png \
- gif_im2im_dst.gif \
- gif_im2im_src.gif \
- jpeg_im2im_dst.jpeg \
- jpeg_im2im_src.jpeg \
- jpeg_read.c_25_diff.png \
- jpeg_read.c_25_out.png \
- png_im2im_dst.png \
- png_im2im_src.png \
- tiff_im2im_dst.tiff \
- tiff_im2im_src.tiff \
- wbmp/wbmp_im2im_dst.wbmp \
- wbmp/wbmp_im2im_src.wbmp \
- wbmp_im2im_dst.wbmp \
- wbmp_im2im_src.wbmp
+check_LIBRARIES = libgdtest.a
+
+libgdtest_a_SOURCES = \
+ gdtest/gdtest.c \
+ gdtest/gdtest.h \
+ gdhelpers.c
+
+# Setup vars that subdirs will increment.
+libgd_test_programs =
+libgd_helper_programs =
+CLEANFILES =
+EXTRA_DIST =
+TESTS =
+
+include bmp/Makemodule.am
+include freetype/Makemodule.am
+include gd/Makemodule.am
+include gd2/Makemodule.am
+include gdimagearc/Makemodule.am
+include gdimagecolorclosest/Makemodule.am
+include gdimagecolordeallocate/Makemodule.am
+include gdimagecolorexact/Makemodule.am
+include gdimagecolorreplace/Makemodule.am
+include gdimagecolorresolve/Makemodule.am
+include gdimagecolortransparent/Makemodule.am
+include gdimagecopy/Makemodule.am
+include gdimagecopyresampled/Makemodule.am
+include gdimagecopyrotated/Makemodule.am
+include gdimagecrop/Makemodule.am
+include gdimagefile/Makemodule.am
+include gdimagefill/Makemodule.am
+include gdimagefilledarc/Makemodule.am
+include gdimagefilledellipse/Makemodule.am
+include gdimagefilledpolygon/Makemodule.am
+include gdimagefilledrectangle/Makemodule.am
+include gdimagefilltoborder/Makemodule.am
+include gdimagefilter/Makemodule.am
+include gdimageline/Makemodule.am
+include gdimageopenpolygon/Makemodule.am
+include gdimagepixelate/Makemodule.am
+include gdimagepolygon/Makemodule.am
+include gdimagerectangle/Makemodule.am
+include gdimagerotate/Makemodule.am
+include gdimagescale/Makemodule.am
+include gdimagescatterex/Makemodule.am
+include gdimagesetpixel/Makemodule.am
+include gdimagestringft/Makemodule.am
+include gdimagestringftex/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 gif/Makemodule.am
+include jpeg/Makemodule.am
+include png/Makemodule.am
+include tga/Makemodule.am
+include tiff/Makemodule.am
+include wbmp/Makemodule.am
+include webp/Makemodule.am
+include xbm/Makemodule.am
+include xpm/Makemodule.am
+
+LDADD = libgdtest.a ../src/libgd.la
+AM_CPPFLAGS = -I$(top_srcdir)/src -I $(top_srcdir)/tests/gdtest
+
+check_PROGRAMS = $(libgd_test_programs) $(libgd_helper_programs)
+TESTS += $(libgd_test_programs)
+
+EXTRA_DIST += \
+ CMakeLists.txt
+
+# We don't keep any media files in the top dir ... just generated outputs.
+CLEANFILES += \
+ *.bmp \
+ *.gd \
+ *.gd2 \
+ *.gif \
+ *.jpeg \
+ *.jpg \
+ *.png \
+ *.tga \
+ *.tiff \
+ *.ttf \
+ *.wbmp \
+ *.webp \
+ *.xbm \
+ *.xpm
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 751c303a756..9c7800e9a67 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
@@ -1,11 +1,6 @@
-
SET(TESTS_FILES
bmp_im2im
bmp_null
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest ${GD_LIB})
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..73be361bede
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
@@ -0,0 +1,10 @@
+libgd_test_programs += \
+ bmp/bmp_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ bmp/bmp_im2im
+endif
+
+EXTRA_DIST += \
+ bmp/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c b/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c
index 2beb2db4206..692588c3ee4 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -23,39 +23,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_BMP(name) do { \
- FILE *fp; \
- \
- fp = fopen("bmp_im2im_" #name ".bmp", "wb"); \
- if (fp) { \
- gdImageBmp(name, fp, 1); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageBmp(name, fp, 1); \
+ fclose(fp); \
} while (0)
OUTPUT_BMP(src);
p = gdImageBmpPtr(src, &size, 1);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromBmpPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_BMP(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
index 201d19a5575..83bb18d754d 100644
--- a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
@@ -1,9 +1,7 @@
+IF(FREETYPE_FOUND)
SET(TESTS_FILES
# bug00132
)
+ENDIF(FREETYPE_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
new file mode 100644
index 00000000000..d2524931193
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
@@ -0,0 +1,9 @@
+if HAVE_LIBFREETYPE
+libgd_test_programs += \
+ freetype/bug00132
+endif
+
+EXTRA_DIST += \
+ freetype/CMakeLists.txt \
+ freetype/bug00132_exp.png \
+ freetype/DejaVuSans.ttf
diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
index 88cdfc695a3..2c3d6bc8103 100644
--- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
+++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
@@ -1,5 +1,3 @@
-/* $Id$ */
-
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -10,31 +8,29 @@ int main()
{
gdImagePtr im;
int error = 0;
- char path[2048];
- const char *file_exp = "bug00132_exp.png";
+ char *path;
char *ret = NULL;
im = gdImageCreateTrueColor(50, 30);
if (!im) {
- printf("can't get truecolor image\n");
+ gdTestErrorMsg("can't get truecolor image\n");
return 1;
}
gdImageAlphaBlending(im, 0);
gdImageFilledRectangle(im, 0, 0, 200, 200, gdTrueColorAlpha(0, 0, 0, 127));
- sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR);
-
+ path = gdTestFilePath("freetype/DejaVuSans.ttf");
ret = gdImageStringFT(im, NULL, - 0xFFFFFF, path, 14.0, 0.0, 10, 20, "&thetasym; &theta;");
+ free(path);
if (ret) {
error = 1;
- printf("%s\n", ret);
+ gdTestErrorMsg("%s\n", ret);
} else {
- sprintf(path, "%s/freetype/%s", GDTEST_TOP_DIR, file_exp);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("freetype/bug00132_exp.png", im)) {
error = 1;
- printf("Reference image and destination differ\n");
+ gdTestErrorMsg("Reference image and destination differ\n");
}
}
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png
index c45495e618f..b2c32e02875 100644
--- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png
Binary files differ
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 c5327171ba0..1fc57932e6c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
@@ -1,4 +1,3 @@
-
SET(TESTS_FILES
gd_im2im
gd_null
@@ -6,8 +5,4 @@ SET(TESTS_FILES
gd_versiontest
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..e4a741fb9dd
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
@@ -0,0 +1,13 @@
+libgd_test_programs += \
+ gd/gd_null \
+ gd/gd_num_colors \
+ gd/gd_versiontest
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gd/gd_im2im
+endif
+
+EXTRA_DIST += \
+ gd/crafted_num_colors.gd \
+ gd/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c b/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c
index a7a2226e719..385e5030cf2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -23,39 +23,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GD(x) do { \
- FILE *fp; \
- \
- fp = fopen("gd_im2im_" #x ".gd", "wb"); \
- if (fp) { \
- gdImageGd(x, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGd(x, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_GD(src);
p = gdImageGdPtr(src, &size);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromGdPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_GD(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c b/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c
index 7d919361925..db4b4846568 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c
@@ -5,15 +5,7 @@
int main()
{
gdImagePtr im;
- char path[1024];
- FILE* fp;
-
- sprintf(path, "%s/gd/crafted_num_colors.gd", GDTEST_TOP_DIR);
-
- fp = fopen(path, "rb");
- if (!fp) {
- return 1;
- }
+ FILE *fp = gdTestFileOpen("gd/crafted_num_colors.gd");
im = gdImageCreateFromGd(fp);
fclose(fp);
if (im) {
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 68a064c0fbd..8aecacc7fd5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
@@ -1,13 +1,8 @@
-
SET(TESTS_FILES
- gd2_read
gd2_empty_file
gd2_im2im
gd2_null
+ php_bug_72339
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..4c0199039eb
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
@@ -0,0 +1,25 @@
+libgd_test_programs += \
+ gd2/gd2_empty_file \
+ gd2/php_bug_72339 \
+ gd2/gd2_read_corrupt
+
+if HAVE_LIBZ
+libgd_test_programs += \
+ gd2/gd2_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gd2/gd2_im2im \
+ gd2/gd2_read
+endif
+endif
+
+EXTRA_DIST += \
+ gd2/CMakeLists.txt \
+ gd2/conv_gd2_exp.gd2 \
+ gd2/conv_test.gd2 \
+ gd2/conv_test_exp.png \
+ gd2/empty.gd2 \
+ gd2/invalid_header.gd2 \
+ gd2/invalid_neg_size.gd2 \
+ gd2/php_bug_72339_exp.gd2
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c
index 289debc541e..9b1c5b2e1b5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -7,17 +6,7 @@
int main()
{
gdImagePtr im;
- FILE *fp;
- char path[1024];
-
- sprintf(path, "%s/gd2/empty.gd2", GDTEST_TOP_DIR);
-
- fp = fopen(path, "rb");
- if (!fp) {
- printf("failed, cannot open file (%s)\n", path);
- return 1;
- }
-
+ FILE *fp = gdTestFileOpen("gd2/empty.gd2");
im = gdImageCreateFromGd2(fp);
fclose(fp);
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c
index 7745fa5973e..02a44206554 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -23,39 +23,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GD2(x) do { \
- FILE *fp; \
- \
- fp = fopen("gd2_im2im_" #x ".gd2", "wb"); \
- if (fp) { \
- gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \
+ fclose(fp); \
} while (0)
OUTPUT_GD2(src);
p = gdImageGd2Ptr(src, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED, &size);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromGd2Ptr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_GD2(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
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 2e78e9a6d23..94fe069f6c6 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
@@ -1,38 +1,62 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
#include "gdtest.h"
-int main()
+int main(int argc, char *argv[])
{
- int error;
- gdImagePtr im;
+ int error, i = 0;
+ gdImagePtr im, exp;
FILE *fp;
- char path[1024];
-
- sprintf(path, "%s/gd2/conv_test.gd2", GDTEST_TOP_DIR);
-
- fp = fopen(path, "rb");
- if (!fp) {
- printf("failed, cannot open file\n");
- return 1;
- }
-
- im = gdImageCreateFromGd2(fp);
- fclose(fp);
+ char *path[] = {
+ "conv_test.gd2",
+ "invalid_neg_size.gd2",
+ "invalid_header.gd2",
+ NULL
+ };
+ char *path_exp[] = {
+ "conv_test_exp.png",
+ NULL,
+ NULL,
+ NULL
+ };
+ while (path[i] != NULL) {
+ fp = gdTestFileOpen2("gd2", path[i]);
+ if (!fp) {
+ gdTestErrorMsg("failed, cannot open file: %s\n", path[0]);
+ return 1;
+ }
+ im = gdImageCreateFromGd2(fp);
+ fclose(fp);
- sprintf(path, "%s/gd2/conv_test_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
- error = 1;
- gdImageDestroy(im);
- } else {
- if (im) {
- gdImageDestroy(im);
- error = 0;
+ if (path_exp[i] != NULL) {
+ fp = gdTestFileOpen2("gd2", path_exp[i]);
+ if (!fp) {
+ gdTestErrorMsg("failed, cannot open file: %s\n", path_exp[i]);
+ return 1;
+ }
+ exp = gdImageCreateFromPng(fp);
+ if (!gdAssertImageEquals(exp, im)) {
+ gdTestErrorMsg("image %s differs from expected result\n", path[i]);
+ gdImageDestroy(im);
+ error = 1;
+ } else {
+ error = 0;
+ }
+ if (exp) {
+ gdImageDestroy(exp);
+ }
} else {
- error = 1;
+ /* expected to fail */
+ if (im) {
+ gdTestErrorMsg("image %s should have failed to be loaded\n", path[i]);
+ gdImageDestroy(im);
+ error = 1;
+ } else {
+ error = 0;
+ }
}
+ i++;
}
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c
new file mode 100644
index 00000000000..7afc30393f2
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c
@@ -0,0 +1,28 @@
+/* Just try to read the invalid gd2 image & not crash. */
+#include "gd.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "gdtest.h"
+
+int main(int argc, char *argv[])
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gd2", "invalid_header.gd2");
+
+ if (!fp) {
+ gdTestErrorMsg("failed, cannot open file: %s\n", "invalid_header.gd2");
+ return 1;
+ }
+ im = gdImageCreateFromGd2(fp);
+ fclose(fp);
+
+ if (im != NULL) {
+ gdTestErrorMsg("image should have failed to be loaded\n");
+ gdImageDestroy(im);
+ return 1;
+ } else {
+ return 0;
+ }
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2
new file mode 100644
index 00000000000..45323da7f82
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2
new file mode 100644
index 00000000000..3075f15a81a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2
Binary files differ
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
new file mode 100644
index 00000000000..e15383e8c75
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gd.h"
+
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gd2", "php_bug_72339_exp.gd2");
+ im = gdImageCreateFromGd2(fp);
+ if (im == NULL) {
+ return 0;
+ } else {
+ gdTestErrorMsg("Image should have failed to be loaded");
+ return 1;
+ }
+
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2
new file mode 100644
index 00000000000..39ed2270390
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdhelpers.c b/Build/source/libs/gd/libgd-src/tests/gdhelpers.c
new file mode 100644
index 00000000000..9b06b681f10
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdhelpers.c
@@ -0,0 +1,6 @@
+/*
+ * Dummy file to workaround an automake limitation: if we try to list the
+ * file directly, automake will clean up its internal state in both the src/
+ * and tests/ subdirs, but only one will succeed.
+ */
+#include "../src/gdhelpers.c"
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
index 4725daea2cc..dcfdc54ca5e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
bug00079
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am
new file mode 100644
index 00000000000..7a109950a77
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagearc/bug00079
+endif
+
+EXTRA_DIST += \
+ gdimagearc/CMakeLists.txt \
+ gdimagearc/bug00079_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c b/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c
index b2843a74873..b442d1121e6 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c
@@ -5,8 +5,6 @@ int main()
{
gdImagePtr im;
int error = 0;
- char path[1024];
-
im = gdImageCreateTrueColor(300, 300);
gdImageFilledRectangle(im, 0,0, 299,299, 0xFFFFFF);
@@ -14,9 +12,7 @@ int main()
gdImageSetAntiAliased(im, 0x000000);
gdImageArc(im, 300, 300, 600,600, 0, 360, gdAntiAliased);
- sprintf(path, "%s/gdimagearc/bug00079_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
- printf("%s failed\n", path);
+ if (!gdAssertImageEqualsToFile("gdimagearc/bug00079_exp.png", im)) {
error = 1;
}
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 30a47c0b800..4f846c0b228 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolorclosest
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..f4da8beca66
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecolorclosest/gdimagecolorclosest
+endif
+
+EXTRA_DIST += \
+ gdimagecolorclosest/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
index 7958cd6cce4..383a30277b7 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolordeallocate
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am
new file mode 100644
index 00000000000..2114c98b1b2
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagecolordeallocate/gdimagecolordeallocate
+
+EXTRA_DIST += \
+ gdimagecolordeallocate/CMakeLists.txt
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 f62bc26bbe3..b627fa5682a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolorexact
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..835b25ed62c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecolorexact/gdimagecolorexact
+endif
+
+EXTRA_DIST += \
+ gdimagecolorexact/CMakeLists.txt
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 915d9d49873..4f7af18ecea 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolorreplace
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..a8badb05c99
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
@@ -0,0 +1,7 @@
+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 9694bd4ae5a..dd3c17ee49d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
@@ -46,16 +46,18 @@ static void run_tests(gdImagePtr im, int *error)
#define CHECK_VALUE(n, expected) do { \
if (gdTestAssert((n) == (expected)) != 1) { \
- printf("%d is expected, but %d\n", expected, n); \
+ gdTestErrorMsg("%d is expected, but %d\n", expected, n);\
*error = -1; \
} \
} while (0)
-#define CHECK_PIXEL(x, y, expected) do { \
+#define CHECK_PIXEL(x, y, expected) \
+ do { \
+ int pix; \
gdImageSetClip(im, 0, 0, 4, 4); \
- c = gdImageGetPixel(im, (x), (y)); \
- if (gdTestAssert(c == (expected)) != 1) { \
- printf("%d is expected, but %d\n", expected, c); \
+ pix = gdImageGetPixel(im, (x), (y)); \
+ if (gdTestAssert(pix == (expected)) != 1) { \
+ gdTestErrorMsg("%d is expected, but %d\n", expected, pix); \
*error = -1; \
} \
} while (0)
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 4b918251655..a3e7bc21658 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolorresolve
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..316484c2068
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecolorresolve/gdimagecolorresolve
+endif
+
+EXTRA_DIST += \
+ gdimagecolorresolve/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
index 5f580f7f174..ce838725a61 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagecolortransparent
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am
new file mode 100644
index 00000000000..ffefc96096c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagecolortransparent/gdimagecolortransparent
+
+EXTRA_DIST += \
+ gdimagecolortransparent/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
index 0b0ccdd77b5..024ad5a744a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
@@ -3,8 +3,4 @@ SET(TESTS_FILES
bug00081
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am
new file mode 100644
index 00000000000..c4b28da47a7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am
@@ -0,0 +1,11 @@
+libgd_test_programs += \
+ gdimagecopy/bug00007
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopy/bug00081
+endif
+
+EXTRA_DIST += \
+ gdimagecopy/CMakeLists.txt \
+ gdimagecopy/bug00081_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c
index 0e28f4ca409..747e5a260c2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c
@@ -1,5 +1,3 @@
-/* $Id$ */
-
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -9,12 +7,10 @@ int main()
{
gdImagePtr im, im2;
int error = 0;
- char path[2048];
- const char *file_exp = "bug00081_exp.png";
im = gdImageCreateTrueColor(5, 5);
if (!im) {
- printf("can't create the src truecolor image\n");
+ gdTestErrorMsg("can't create the src truecolor image\n");
return 1;
}
@@ -24,17 +20,16 @@ int main()
im2 = gdImageCreateTrueColor(20, 20);
if (!im2) {
- printf("can't create the dst truecolor image\n");
+ gdTestErrorMsg("can't create the dst truecolor image\n");
gdImageDestroy(im);
return 1;
}
gdImageCopy(im2, im, 2, 2 , 0, 0, gdImageSX(im), gdImageSY(im));
- sprintf(path, "%s/gdimagecopy/%s", GDTEST_TOP_DIR, file_exp);
- if (!gdAssertImageEqualsToFile(path, im2)) {
+ if (!gdAssertImageEqualsToFile("gdimagecopy/bug00081_exp.png", im2)) {
error = 1;
- printf("Reference image and destination differ\n");
+ gdTestErrorMsg("Reference image and destination differ\n");
}
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
new file mode 100644
index 00000000000..636c81184ba
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
@@ -0,0 +1,8 @@
+LIST(APPEND TESTS_FILES
+ basic
+ basic_alpha
+ exact_alpha
+ bug00201
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
new file mode 100644
index 00000000000..5d0d714e8bb
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
@@ -0,0 +1,14 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopyresampled/basic \
+ gdimagecopyresampled/basic_alpha \
+ gdimagecopyresampled/exact_alpha \
+ gdimagecopyresampled/bug00201
+endif
+
+EXTRA_DIST += \
+ gdimagecopyresampled/CMakeLists.txt \
+ gdimagecopyresampled/basic_exp.png \
+ gdimagecopyresampled/basic_alpha_exp.png \
+ gdimagecopyresampled/bug00201_src.png \
+ gdimagecopyresampled/bug00201_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c
new file mode 100644
index 00000000000..2847947e55b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c
@@ -0,0 +1,37 @@
+/* Testing basic gdImageCopyResampled() functionality */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im, copy;
+ int white, yellow, magenta, cyan;
+
+ im = gdImageCreateTrueColor(400, 300);
+
+ /* allocate some colors */
+ white = gdImageColorAllocate(im, 255, 255, 255);
+ yellow = gdImageColorAllocate(im, 128, 0, 128);
+ magenta = gdImageColorAllocate(im, 128, 128, 0);
+ cyan = gdImageColorAllocate(im, 0, 128, 128);
+
+ /* draw background */
+ gdImageFilledRectangle(im, 0,0, 399,299, white);
+
+ /* draw some basic shapes */
+ gdImageFilledEllipse(im, 100,100, 150,100, yellow);
+ gdImageSetThickness(im, 5);
+ gdImageLine(im, 50,250, 350,50, magenta);
+ gdImageRectangle(im, 200,100, 350,250, cyan);
+
+ /* create a diminished, resampled copy of the original image */
+ copy = gdImageCreateTrueColor(200, 200);
+ gdImageCopyResampled(copy, im, 0,0, 0,0, 200,200, 400,300);
+ gdImageDestroy(im);
+
+ gdAssertImageEqualsToFile("gdimagecopyresampled/basic_exp.png", copy);
+
+ gdImageDestroy(copy);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c
new file mode 100644
index 00000000000..4daee685b6a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c
@@ -0,0 +1,40 @@
+/* Testing basic gdImageCopyResampled() functionality with alpha channel */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im, copy;
+ int white, yellow, magenta, cyan;
+
+ im = gdImageCreateTrueColor(400, 300);
+ gdImageAlphaBlending(im, 0);
+
+ /* allocate some alpha colors */
+ white = gdImageColorAllocateAlpha(im, 255, 255, 255, 31);
+ yellow = gdImageColorAllocateAlpha(im, 128, 0, 128, 63);
+ magenta = gdImageColorAllocateAlpha(im, 128, 128, 0, 95);
+ cyan = gdImageColorAllocateAlpha(im, 0, 128, 128, 127);
+
+ /* draw background */
+ gdImageFilledRectangle(im, 0,0, 399,299, white);
+
+ /* draw some basic shapes */
+ gdImageFilledEllipse(im, 100,100, 150,100, yellow);
+ gdImageSetThickness(im, 5);
+ gdImageLine(im, 50,250, 350,50, magenta);
+ gdImageRectangle(im, 200,100, 350,250, cyan);
+
+ /* create a diminished, resampled copy of the original image */
+ copy = gdImageCreateTrueColor(200, 200);
+ gdImageAlphaBlending(copy, 0);
+ gdImageSaveAlpha(copy, 1);
+ gdImageCopyResampled(copy, im, 0,0, 0,0, 200,200, 400,300);
+ gdImageDestroy(im);
+
+ gdAssertImageEqualsToFile("gdimagecopyresampled/basic_alpha_exp.png", copy);
+
+ gdImageDestroy(copy);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png
new file mode 100644
index 00000000000..29dfc2713bf
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png
new file mode 100644
index 00000000000..dccc2f981a2
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
new file mode 100644
index 00000000000..053b6db3b72
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
@@ -0,0 +1,71 @@
+#include "gd.h"
+#include "gdtest.h"
+
+
+#define SRC_WIDTH 80
+#define SRC_HEIGHT 42
+#define DEST_WIDTH 200
+#define DEST_HEIGHT 200
+
+
+/* Create an image and fill it with true transparency */
+gdImagePtr blank_image(int width, int height)
+{
+ gdImagePtr img;
+ int c;
+
+ img = gdImageCreateTrueColor(width, height);
+ gdImageAlphaBlending(img, 0);
+ c = gdImageColorAllocateAlpha(img, 255, 0, 255, 127);
+ gdImageFilledRectangle(img, 0, 0, width-1, height-1, c);
+ return img;
+}
+
+
+/* Merge layers on top of each other */
+gdImagePtr flatten(gdImagePtr *layers, int layer_count, int width, int height)
+{
+ gdImagePtr img;
+ int i;
+
+ img = blank_image(width,height);
+ gdImageAlphaBlending(img, 1);
+ for (i = 0; i < layer_count; i++) {
+ gdImageCopy(img, layers[i], 0,0, 0,0, width,height);
+ }
+ gdImageSaveAlpha(img, 1);
+ return img;
+}
+
+
+int main()
+{
+ gdImagePtr layers[2], background, logo_source, logo, scaled_logo, img;
+ FILE *fp;
+
+ background = blank_image(DEST_WIDTH,DEST_HEIGHT);
+
+ 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/gdimagecopyresampled/bug00201_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.png
new file mode 100644
index 00000000000..9ffe1551743
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png
new file mode 100644
index 00000000000..86c0eaced32
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c
new file mode 100644
index 00000000000..581ad017534
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c
@@ -0,0 +1,67 @@
+/* Test for exact colors of gdImageCopyResampled */
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+#define EXP_RED 66
+#define EXP_GREEN 66
+#define EXP_BLUE 133
+#define EXP_ALPHA 32
+
+
+int main()
+{
+ gdImagePtr im, copy;
+ int solid, transparent, color;
+ int red, green, blue, alpha;
+ int i, j;
+
+ /* create the source image */
+ im = gdImageCreateTrueColor(10, 10);
+ gdImageAlphaBlending(im, 0);
+ solid = gdImageColorAllocate(im, 0, 100, 150);
+ transparent = gdImageColorAllocateAlpha(im, 200, 0, 100, 64);
+
+ /* draw a checker pattern */
+ for (i = 0; i < gdImageSX(im); i++) {
+ for (j = 0; j < gdImageSY(im); j++) {
+ gdImageSetPixel(im, i, j, (i%2 != j%2 ? solid : transparent));
+ }
+ }
+
+ /* create the destination image */
+ copy = gdImageCreateTrueColor(5, 5);
+ gdImageAlphaBlending(copy, 0);
+ gdImageSaveAlpha(copy, 1);
+ gdImageCopyResampled(copy, im, 0,0, 0,0, 5,5, 10, 10);
+
+ /* assert all pixels have the same color */
+ color = gdImageTrueColorPixel(copy, 3, 3);
+ for (i = 0; i < gdImageSX(copy); i++) {
+ for (j = 0; j < gdImageSY(copy); j++) {
+ gdTestAssert(gdImageTrueColorPixel(copy, i, j) == color);
+ }
+ }
+
+ /* assign actual component values */
+ red = gdTrueColorGetRed(color);
+ green = gdTrueColorGetGreen(color);
+ blue = gdTrueColorGetBlue(color);
+ alpha = gdTrueColorGetAlpha(color);
+
+ /* test for expected component values */
+ gdTestAssertMsg(red >= EXP_RED - 1 && red <= EXP_RED + 1,
+ "red: expected roughly %d, got %d\n", EXP_RED, red);
+ gdTestAssertMsg(green >= EXP_GREEN - 1 && green <= EXP_GREEN + 1,
+ "green: expected roughly %d, got %d\n", EXP_GREEN, green);
+ gdTestAssertMsg(blue >= EXP_BLUE - 1 && blue <= EXP_BLUE + 1,
+ "blue: expected roughly %d, got %d\n", EXP_BLUE, blue);
+ gdTestAssertMsg(alpha >= EXP_ALPHA - 1 && alpha <= EXP_ALPHA + 1,
+ "alpha: expected roughly %d, got %d\n", EXP_ALPHA, alpha);
+
+ gdImageDestroy(copy);
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
index 7f75aa7c572..e2d8249f91d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
@@ -1,10 +1,5 @@
-
SET(TESTS_FILES
bug00020
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am
new file mode 100644
index 00000000000..5ed232c5237
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopyrotated/bug00020
+endif
+
+EXTRA_DIST += \
+ gdimagecopyrotated/CMakeLists.txt \
+ gdimagecopyrotated/bug00020_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c
index f1c2467fc47..fe8dfdf451d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include "gdtest.h"
@@ -8,9 +7,7 @@ int main()
{
gdImagePtr im, im2;
int error = 0;
- char path[1024];
-
- sprintf(path, "%s/gdimagecopyrotated/bug00020_exp.png", GDTEST_TOP_DIR);
+ char *path;
im = gdImageCreateTrueColor(width, width);
gdImageFilledRectangle(im, 0,0, width, width, 0xFF0000);
@@ -21,12 +18,13 @@ int main()
im2 = gdImageCreateTrueColor(width, width);
gdImageCopyRotated(im2, im, width / 2, width / 2, 0,0, width, width, 60);
-
+ path = gdTestFilePath2("gdimagecopyrotated", "bug00020_exp.png");
if (!gdAssertImageEqualsToFile(path, im2)) {
error = 1;
}
gdImageDestroy(im2);
gdImageDestroy(im);
+ free(path);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
new file mode 100644
index 00000000000..f7e4c7ef475
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+ php_bug_72494
+)
+
+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
new file mode 100644
index 00000000000..210888b5a70
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagecrop/php_bug_72494
+
+EXTRA_DIST += \
+ gdimagecrop/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c
new file mode 100644
index 00000000000..3bd19be788b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gd.h"
+
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+
+ im = gdImageCreate(50, 50);
+
+ if (!im) {
+ gdTestErrorMsg("gdImageCreate failed.\n");
+ return 1;
+ }
+
+ gdImageCropThreshold(im, 1337, 0);
+ gdImageDestroy(im);
+ /* this bug tests a crash, it never reaches this point if the bug exists*/
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt
new file mode 100644
index 00000000000..4fee5c33f6b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+ gdnametest
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
new file mode 100644
index 00000000000..b537cbc0a3f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
@@ -0,0 +1,8 @@
+libgd_test_programs += \
+ gdimagefile/gdnametest
+
+EXTRA_DIST += \
+ gdimagefile/CMakeLists.txt \
+ gdimagefile/img-ref.tga \
+ gdimagefile/img-ref.xbm \
+ gdimagefile/img-ref.xpm
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 dd8f0196a59..40dbc30b9e3 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
@@ -1,9 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "gd.h"
#include "gdtest.h"
-#include "../test_config.h"
+#include "test_config.h"
#define WIDTH 60
#define HEIGHT 50
@@ -83,7 +84,7 @@ do_test() {
for (n = 0; names[n].nm; n++) {
gdImagePtr orig, copy;
int status;
- char full_filename[255];
+ char *full_filename = NULL;
/* Some image readers are buggy and crash the program so we
* skip them. Bug fixers should remove these from the list of
@@ -103,33 +104,23 @@ do_test() {
orig = mkcross();
-
- #ifdef GDTEST_TOP_DIR
-
- snprintf(full_filename, sizeof(full_filename), GDTEST_TOP_DIR"/gdimagefile/%s",
- names[n].nm);
-
- #else
- /* Prepend the test directory; this is expected to be run in
- * the parent dir. */
- snprintf(full_filename, sizeof(full_filename), "gdimagefile/%s",
- names[n].nm);
- #endif
-
-
/* 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;
- /* Debug printf. */
- //printf("%s -> %d\n", full_filename, gdMaxPixelDiff(orig, copy));
-
gdTestAssertMsg(gdMaxPixelDiff(orig, copy) <= names[n].maxdiff,"Pixels different on %s\n", full_filename, full_filename);
if (!names[n].readonly) {
@@ -137,6 +128,7 @@ do_test() {
gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
}/* if */
+ free(full_filename);
gdImageDestroy(orig);
gdImageDestroy(copy);
}/* for */
@@ -159,7 +151,7 @@ do_errortest() {
}/* do_errortest*/
-int main(int argc, char **argv)
+int main()
{
do_test();
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
index ef85f1cf7ef..6b09c1bf5cc 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
@@ -1,12 +1,9 @@
-
SET(TESTS_FILES
bug00002_1
bug00002_2
bug00002_3
bug00002_4
+ bug00104_1
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am
new file mode 100644
index 00000000000..6a12c0684ee
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am
@@ -0,0 +1,16 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagefill/bug00002_1 \
+ gdimagefill/bug00002_2 \
+ gdimagefill/bug00002_3 \
+ gdimagefill/bug00002_4 \
+ gdimagefill/bug00104_1
+endif
+
+EXTRA_DIST += \
+ gdimagefill/CMakeLists.txt \
+ gdimagefill/bug00002_1_exp.png \
+ gdimagefill/bug00002_2_exp.png \
+ gdimagefill/bug00002_3_exp.png \
+ gdimagefill/bug00002_4_exp.png \
+ gdimagefill/bug00104_1_exp.png
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 2a440f20ede..752178a4805 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
@@ -2,13 +2,12 @@
#include <stdio.h>
#include "gdtest.h"
-#define TMP_FN "bug00002_1.png"
-
int main()
{
gdImagePtr im;
FILE *fp;
- char path[1024];
+ char *file;
+ int error = 0;
im = gdImageCreateTrueColor(100, 100);
@@ -20,9 +19,10 @@ int main()
gdImageFill(im, 0, 0, 0xffffff);
gdImageFill(im, 0, 0, 0xffffff);
- fp = fopen(TMP_FN, "wb");
+ file = gdTestTempFile("bug00002_1.png");
+ fp = fopen(file, "wb");
if (fp == NULL) {
- gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN);
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
gdImageDestroy(im);
return 1;
}
@@ -30,19 +30,11 @@ int main()
gdImagePng(im,fp);
fclose(fp);
- sprintf(path, "%s/gdimagefill/bug00002_1_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
- gdImageDestroy(im);
- return 1;
- }
+ if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_1_exp.png", im))
+ error = 1;
gdImageDestroy(im);
- if (remove(TMP_FN) == -1) {
- gdTestErrorMsg("Cannot remove temporary file: <%s>\n", TMP_FN);
- return 1;
- }
-
- return 0;
+ 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 06cf8311195..982ae8f64d4 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
@@ -7,7 +7,6 @@ int main()
gdImagePtr im, tile;
int im_black, tile_black;
int x,y, error = 0;
- char path[1024];
/* fputs("flag 0\n", stdout); */
im = gdImageCreate(150, 150);
@@ -38,13 +37,13 @@ int main()
/* fputs("flag 2\n", stdout); */
- sprintf(path, "%s/gdimagefill/bug00002_2_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_2_exp.png", im)) {
error = 1;
}
/* Destroy it */
gdImageDestroy(im);
+ 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 454d5be3612..b11fbc91ccb 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
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include "gdtest.h"
@@ -8,7 +7,6 @@ int main()
gdImagePtr im, tile;
int im_black, tile_white, tile_black;
int x,y, error = 0;
- char path[1024];
/* fputs("flag 0\n", stdout); */
im = gdImageCreate(150, 150);
@@ -44,13 +42,13 @@ int main()
gdImageFill(im, 0, 0, 0xffffff);
/* fputs("flag 3\n", stdout); */
- sprintf(path, "%s/gdimagefill/bug00002_3_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_3_exp.png", im)) {
error = 1;
}
/* Destroy it */
gdImageDestroy(im);
+ gdImageDestroy(tile);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c
index 4b11d84bdc9..e12cb90e094 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c
@@ -7,7 +7,6 @@ int main()
{
gdImagePtr im;
int red, blue, white, black, error = 0;
- char path[1024];
im = gdImageCreate(50,100);
red = gdImageColorAllocate(im, 255, 0, 0);
@@ -29,8 +28,7 @@ int main()
gdImageFill(im, 100,69, red);
gdImageFill(im, 100,21, white);
- sprintf(path, "%s/gdimagefill/bug00002_4_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_4_exp.png", im)) {
error = 1;
}
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
new file mode 100644
index 00000000000..13247cab4e0
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
@@ -0,0 +1,34 @@
+/* test case for outside of buffer reads/write bug in _gdImageFillTiled */
+#include "gd.h"
+#include <stdio.h>
+#include "gdtest.h"
+
+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/gdimagefill/bug00104_1_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.png
new file mode 100644
index 00000000000..7b10a4f0cd0
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
new file mode 100644
index 00000000000..1a0a2042e2d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+ php_bug43828
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
new file mode 100644
index 00000000000..4af6963f86c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagefilledarc/php_bug43828
+endif
+
+EXTRA_DIST += \
+ gdimagefilledarc/CMakeLists.txt \
+ gdimagefilledarc/php_bug43828_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c
new file mode 100644
index 00000000000..eb690c8e0f8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c
@@ -0,0 +1,21 @@
+/* See <https://bugs.php.net/bug.php?id=43828>. */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int transparent, color;
+
+ im = gdImageCreateTrueColor(100, 100);
+ transparent = gdImageColorAllocateAlpha(im, 255, 255, 255, 80);
+ gdImageFilledRectangle(im, 0,0, 99,99, transparent);
+ color = gdImageColorAllocateAlpha(im, 0, 255, 0, 100);
+ gdImageFilledArc(im, 49,49, 99,99, 0,360, color, gdPie);
+
+ gdAssertImageEqualsToFile("gdimagefilledarc/php_bug43828_exp.png", im);
+
+ gdImageDestroy(im);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png
new file mode 100644
index 00000000000..4f8ff6855c5
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png
Binary files 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 fb1ed6ca1ac..bafe7dd5ac1 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
@@ -1,11 +1,7 @@
-
SET(TESTS_FILES
bug00010
bug00191
+ github_bug_00238
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
new file mode 100644
index 00000000000..6a5185a10c1
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
@@ -0,0 +1,12 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagefilledellipse/bug00010 \
+ gdimagefilledellipse/bug00191 \
+ gdimagefilledellipse/github_bug_00238
+endif
+
+EXTRA_DIST += \
+ gdimagefilledellipse/CMakeLists.txt \
+ gdimagefilledellipse/bug00010_exp.png \
+ gdimagefilledellipse/bug00191.png \
+ gdimagefilledellipse/github_bug_00238_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c
index df0c66dbc64..65c744491ae 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include "gdtest.h"
@@ -6,13 +5,11 @@ int main()
{
gdImagePtr im;
int error = 0;
- char path[1024];
im = gdImageCreateTrueColor(100,100);
gdImageFilledEllipse(im, 50,50, 70, 90, 0x50FFFFFF);
- sprintf(path, "%s/gdimagefilledellipse/bug00010_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimagefilledellipse/bug00010_exp.png", im)) {
error = 1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c
index 7db64151726..28e3d6cc50e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include "gdtest.h"
@@ -6,14 +5,12 @@ int main()
{
gdImagePtr im;
int error = 0;
- char path[1024];
im = gdImageCreate(100, 100);
(void)gdImageColorAllocate(im, 255, 255, 255);
gdImageSetThickness(im, 20);
gdImageFilledEllipse(im, 30, 50, 20, 20, gdImageColorAllocate(im, 0, 0, 0));
- sprintf(path, "%s/gdimagefilledellipse/bug00191.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimagefilledellipse/bug00191.png", im)) {
error = 1;
}
gdImageDestroy(im);
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
new file mode 100644
index 00000000000..499923fedd3
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
@@ -0,0 +1,33 @@
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int error = 0;
+
+ im = gdImageCreateTrueColor(141,200);
+ if (im == NULL) {
+ gdTestErrorMsg("image creation failed.\n");
+ goto exit;
+ }
+
+ gdImageAlphaBlending(im, gdEffectNormal);
+ gdImageFilledRectangle(im, 0, 0, 140, 199, gdTrueColorAlpha(0,0,0,127));
+
+ gdImageAlphaBlending(im, gdEffectAlphaBlend);
+ gdImageFilledEllipse(im, 70, 70, 45, 60, gdTrueColorAlpha(255,0,0,40));
+ gdImageFilledEllipse(im, 90, 90, 60, 30, gdTrueColorAlpha(255,0,0,40));
+ gdImageSaveAlpha(im, 1);
+
+ if (!gdAssertImageEqualsToFile("gdimagefilledellipse/github_bug_00238_exp.png", im)) {
+ error = 1;
+ }
+
+ if (im != NULL) {
+ gdImageDestroy(im);
+ }
+
+exit:
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png
new file mode 100644
index 00000000000..4f78540305f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
index 2ca4bf51f99..1a2d3305f5e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
@@ -4,10 +4,7 @@ SET(TESTS_FILES
gdimagefilledpolygon2
gdimagefilledpolygon3
bug00100
+ php_bug_64641
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am
new file mode 100644
index 00000000000..7a2f6812bbf
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am
@@ -0,0 +1,18 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagefilledpolygon/bug00100 \
+ gdimagefilledpolygon/gdimagefilledpolygon0 \
+ gdimagefilledpolygon/gdimagefilledpolygon1 \
+ gdimagefilledpolygon/gdimagefilledpolygon2 \
+ gdimagefilledpolygon/gdimagefilledpolygon3 \
+ gdimagefilledpolygon/php_bug_64641
+endif
+
+EXTRA_DIST += \
+ gdimagefilledpolygon/CMakeLists.txt \
+ gdimagefilledpolygon/bug00100.png \
+ gdimagefilledpolygon/gdimagefilledpolygon0.png \
+ gdimagefilledpolygon/gdimagefilledpolygon1.png \
+ gdimagefilledpolygon/gdimagefilledpolygon2.png \
+ gdimagefilledpolygon/gdimagefilledpolygon3.png \
+ gdimagefilledpolygon/php_bug_64641.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
index ae2e084fe41..d020749e55f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
@@ -150,7 +150,7 @@ main(void)
pointy[4].y = bot;
gdImageFilledPolygon(im, pointy, 5, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/bug00100.png", im);
+ r = gdAssertImageEqualsToFile("gdimagefilledpolygon/bug00100.png", im);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
return EXIT_SUCCESS;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c
index 5ca877c630c..b7e9299209e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c
@@ -15,7 +15,7 @@ main(void)
gdImageFilledRectangle(im, 0, 0, 99, 99, white);
gdImageFilledPolygon(im, NULL, 0, black); /* no effect */
gdImageFilledPolygon(im, NULL, -1, black); /* no effect */
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon0.png", im);
+ r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon0.png", im);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
return EXIT_SUCCESS;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c
index 950035e2b4b..58052a0af2a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c
@@ -23,7 +23,7 @@ main(void)
points[0].x = 10;
points[0].y = 10;
gdImageFilledPolygon(im, points, 1, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon1.png", im);
+ r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon1.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c
index 628665a1919..95d85566ca1 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c
@@ -25,7 +25,7 @@ main(void)
points[1].x = 50;
points[1].y = 70;
gdImageFilledPolygon(im, points, 2, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon2.png", im);
+ r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon2.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c
index 0db5c8519e1..0c9ed3e65a3 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c
@@ -27,7 +27,7 @@ main(void)
points[2].x = 90;
points[2].y = 30;
gdImageFilledPolygon(im, points, 3, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon3.png", im);
+ r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon3.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c
new file mode 100644
index 00000000000..baf89134340
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c
@@ -0,0 +1,47 @@
+/*
+ Test drawing of 1-dimensional filled polygons
+
+ We're drawing a vertical and a horizontal 1-dimensional filled polygon,
+ which is supposed to result in a vertical and a horizontal line.
+
+ See also <https://bugs.php.net/64641>.
+*/
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ gdPointPtr points;
+
+ im = gdImageCreateTrueColor(640, 480);
+
+ points = (gdPointPtr)calloc(3, sizeof(gdPoint));
+ gdTestAssert(points != NULL);
+
+ /* vertical line */
+ points[0].x = 100;
+ points[0].y = 100;
+ points[1].x = 100;
+ points[1].y = 200;
+ points[2].x = 100;
+ points[2].y = 300;
+ gdImageFilledPolygon(im, points, 3, 0xFFFF00);
+
+ /* horizontal line */
+ points[0].x = 300;
+ points[0].y = 200;
+ points[1].x = 400;
+ points[1].y = 200;
+ points[2].x = 500;
+ points[2].y = 200;
+ gdImageFilledPolygon(im, points, 3, 0xFFFF00);
+
+ gdAssertImageEqualsToFile("gdimagefilledpolygon/php_bug_64641.png", im);
+
+ free(points);
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png
new file mode 100644
index 00000000000..62fb6212981
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
index 73920709bb5..2b26022ca70 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
@@ -4,8 +4,4 @@ SET(TESTS_FILES
bug00106_gdimagefilledrectangle
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am
new file mode 100644
index 00000000000..2a06d59a56c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am
@@ -0,0 +1,7 @@
+libgd_test_programs += \
+ gdimagefilledrectangle/bug00004 \
+ gdimagefilledrectangle/bug00078 \
+ gdimagefilledrectangle/bug00106_gdimagefilledrectangle
+
+EXTRA_DIST += \
+ gdimagefilledrectangle/CMakeLists.txt
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 e24a69a1452..f03529a6082 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
@@ -1,9 +1,6 @@
-
SET(TESTS_FILES
bug00037
+ github_bug_215
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+
+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
new file mode 100644
index 00000000000..fc7ed3d05d6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
@@ -0,0 +1,8 @@
+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 646adbd0f79..ab7e1b805bf 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
@@ -22,7 +22,7 @@ int main()
if (gdTestAssert(color==0x1000000)) {
return 0;
} else {
- printf("c: %X, expected %X\n", color, 0x1000000);
+ gdTestErrorMsg("c: %X, expected %X\n", color, 0x1000000);
return -1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c
new file mode 100644
index 00000000000..bf0900c970c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include "gd.h"
+#include "gdtest.h"
+
+int main() {
+ gdImagePtr im;
+ int color, border;
+ im = gdImageCreate(50, 50);
+ gdImageColorAllocate(im, 255, 0, 0);
+ color = gdImageColorAllocate(im, 255, 0, 0);
+ border = gdImageColorAllocate(im, 255, 0, 0);
+ gdImageFillToBorder(im, 0, 0, border + 10, color);
+ gdImageFillToBorder(im, 0, 0, -border, color);
+ gdImageFillToBorder(im, 0, 0, border, color + 10);
+ gdImageFillToBorder(im, 0, 0, border, -color);
+ gdImageFillToBorder(im, 0, 0, border + 10, color + 10);
+ gdImageDestroy(im);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt
new file mode 100644
index 00000000000..a1b6642984e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+ gdCopyBlurred
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am
new file mode 100644
index 00000000000..3af66b45d64
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagefilter/gdCopyBlurred
+
+EXTRA_DIST += \
+ gdimagefilter/CMakeLists.txt
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 69ca06133bc..dee2f1f8d52 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
@@ -23,7 +23,7 @@ save(gdImagePtr im, const char *filename) {
gdImagePng(im, out);
fclose(out);
#else
- im, filename;
+ (void)im, (void)filename;
#endif
}/* save*/
@@ -87,8 +87,7 @@ void blurblank(gdImagePtr im, int radius, double sigma) {
void do_test()
{
- gdImagePtr im, imref, tmp;
- gdImagePtr same, same2;
+ gdImagePtr im, imref;
im = mkwhite(WIDTH, HEIGHT);
imref = mkwhite(WIDTH, HEIGHT);
@@ -110,6 +109,9 @@ void do_test()
blurblank(im, 4, 0.0);
blurblank(im, 8, 0.0);
blurblank(im, 16, 0.0);
+
+ gdImageDestroy(im);
+ gdImageDestroy(imref);
}/* do_test*/
/* Ensure that RGB values are equal, then return r (which is therefore
@@ -185,10 +187,11 @@ void do_crosstest()
gdTestAssert(getwhite(blurred, 1, LY + 1) < getwhite(blurred, 1, LY + 3));
gdTestAssert(getwhite(blurred, 1, LY + 3) < getwhite(blurred, 1, HEIGHT-1));
gdImageDestroy(blurred);
+ gdImageDestroy(im);
}/* do_crosstest*/
-int main(int argc, char **argv)
+int main()
{
do_test();
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 78f11d424fb..61982517ede 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
@@ -6,8 +6,4 @@ SET(TESTS_FILES
bug00111
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS(m)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
new file mode 100644
index 00000000000..3b541a16a9a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
@@ -0,0 +1,29 @@
+libgd_test_programs += \
+ gdimageline/gdimageline_aa_outofrange
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimageline/bug00072 \
+ gdimageline/bug00077 \
+ gdimageline/bug00111 \
+ gdimageline/gdimageline_aa \
+ gdimageline/gdimageline_bug5 \
+ gdimageline/gdImageAALine_thickness \
+ gdimageline/github_bug_167
+endif
+
+EXTRA_DIST += \
+ gdimageline/CMakeLists.txt \
+ gdimageline/bug00072_exp.png \
+ gdimageline/bug00077_exp.png \
+ gdimageline/bug00111_exp.png \
+ gdimageline/gdimageline_aa_a_1_exp.png \
+ gdimageline/gdimageline_aa_b_0_exp.png \
+ gdimageline/gdimageline_aa_c_0_exp.png \
+ gdimageline/gdimageline_aa_d_0_exp.png \
+ gdimageline/gdimageline_aa_d_1_exp.png \
+ gdimageline/gdimageline_aa_c_1_exp.png \
+ gdimageline/gdimageline_aa_a_0_exp.png \
+ gdimageline/gdimageline_aa_b_1_exp.png \
+ gdimageline/gdImageAALine_thickness_exp.png \
+ gdimageline/github_bug_167_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c
index c3a3137e539..72e9fca5020 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c
@@ -4,12 +4,8 @@
int main()
{
gdImagePtr im;
- const char *exp = "bug00072_exp.png";
int error = 0;
- char path[1024];
-
-
im = gdImageCreateTrueColor(11, 11);
gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF);
gdImageSetThickness(im, 3);
@@ -24,8 +20,7 @@ int main()
gdImageLine(im, 0, 5, 11, 5, 0xFF0000);
gdImageLine(im, 0, 0, 11, 11, 0xFF0000);
- sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimageline/bug00072_exp.png", im)) {
error = 1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c
index d69e88177f2..7c52bbe1a01 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c
@@ -4,12 +4,8 @@
int main()
{
gdImagePtr im;
- const char *exp = "bug00077_exp.png";
int error = 0;
- char path[1024];
-
-
im = gdImageCreateTrueColor(11, 11);
gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF);
gdImageSetThickness(im, 1);
@@ -19,9 +15,7 @@ int main()
gdImageLine(im, 10, 5, 0, 5, 0x0);
gdImageLine(im, 10, 10, 0, 10, 0x0);
- sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp);
-
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimageline/bug00077_exp.png", im)) {
error = 1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c
index 4277534874d..9b24113535a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c
@@ -1,5 +1,3 @@
-/* $Id$ */
-
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -9,12 +7,10 @@ int main()
{
gdImagePtr im;
int error = 0;
- char path[2048];
- const char *file_exp = "bug00111_exp.png";
im = gdImageCreateTrueColor(10, 10);
if (!im) {
- printf("can't get truecolor image\n");
+ gdTestErrorMsg("can't get truecolor image\n");
return 1;
}
@@ -23,10 +19,9 @@ int main()
gdImageLine(im, 0, 0, 0, 0, 0xFFFFFF);
- sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, file_exp);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdimageline/bug00111_exp.png", im)) {
error = 1;
- printf("Reference image and destination differ\n");
+ gdTestErrorMsg("Reference image and destination differ\n");
}
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c
index 954e055b6fb..1d3a564ed0b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c
@@ -2,11 +2,10 @@
#include "gd.h"
#include "gdtest.h"
-int main(int argc, char **argv)
+int main()
{
gdImagePtr im;
- char path[2048];
- const char *file_exp = "gdimageline/gdImageAALine_thickness_exp.png";
+ int error = 0;
im = gdImageCreateTrueColor(100, 100);
gdImageFilledRectangle(im, 0, 0, 99, 99,
@@ -16,15 +15,10 @@ int main(int argc, char **argv)
gdImageSetAntiAliased(im, gdImageColorExactAlpha(im, 0, 0, 0, 0));
gdImageLine(im, 0,0, 99, 99, gdAntiAliased);
- sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_exp);
-
- if (!gdAssertImageEqualsToFile(path, im)) {
- printf("comparing rotated image to %s failed.\n", path);
- gdImageDestroy(im);
- return 1;
- }
+ if (!gdAssertImageEqualsToFile("gdimageline/gdImageAALine_thickness_exp.png", im))
+ error = 1;
gdImageDestroy(im);
- return 0;
+ return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c
index b0bea3a4d5c..f16bfb9ccbb 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c
@@ -3,10 +3,6 @@
#include "gd.h"
#include "gdtest.h"
-#ifdef _MSC_VER
-# define snprintf _snprintf
-#endif
-
int gen_image(const char* filename, int idx, int reverse_x, int width, int height, int bgd)
{
double gradient = height / (width*2.0);
@@ -49,28 +45,19 @@ int gen_image(const char* filename, int idx, int reverse_x, int width, int heigh
int main()
{
int error = 0;
- char path[1024];
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_0_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,0,1,10,100, 1);
+ error |= gen_image("gdimageline/gdimageline_aa_a_0_exp.png", 0, 1, 10, 100, 1);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_1_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,1,1,10,100, 2);
+ error |= gen_image("gdimageline/gdimageline_aa_a_1_exp.png", 1, 1, 10, 100, 2);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_0_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,2,-1,10,100, 1);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_1_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,1,-1,10,100, 2);
+ error |= gen_image("gdimageline/gdimageline_aa_b_0_exp.png", 2, -1, 10, 100, 1);
+ error |= gen_image("gdimageline/gdimageline_aa_b_1_exp.png", 1, -1, 10, 100, 2);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_0_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,0,1,100,10, 1);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_1_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,1,1,100,10, 2);
+ error |= gen_image("gdimageline/gdimageline_aa_c_0_exp.png", 0, 1, 100, 10, 1);
+ error |= gen_image("gdimageline/gdimageline_aa_c_1_exp.png", 1, 1, 100, 10, 2);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_0_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,2,-1,100,10, 1);
- snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_1_exp.png", GDTEST_TOP_DIR);
- error |= gen_image(path,1,-1,100,10, 2);
+ error |= gen_image("gdimageline/gdimageline_aa_d_0_exp.png", 2, -1, 100, 10, 1);
+ error |= gen_image("gdimageline/gdimageline_aa_d_1_exp.png", 1, -1, 100, 10, 2);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c
index 5c1ed05ab03..35f5f5f6cfe 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c
@@ -15,5 +15,6 @@ int main()
gdImageLine(im, 1,1, 50, 50, gdAntiAliased);
/* Test for segfaults, if we reach this point, the test worked */
+ gdImageDestroy(im);
return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c
new file mode 100644
index 00000000000..e0657a81613
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c
@@ -0,0 +1,75 @@
+/*
+ Testing thick styled horizontal, vertical and diagonal lines.
+
+ We're drawing four triangles with basically the same pattern style. Each
+ triangle has exactly the same shape (right isosceles, with the hypotenuse
+ being diagonal) and size. The triangles are arranged from lower left to
+ upper right with increasing line thickness.
+
+ To have the same pattern style, it has to be adapted according to the
+ thickness (i.e. the pixels have to be repeated thickness times), which
+ happens in setStyleAndThickness().
+
+ See also <https://github.com/libgd/libgd/issues/167>.
+*/
+
+#include "gd.h"
+#include "gdtest.h"
+
+static void setStyleAndThickness(gdImagePtr im, int color, int thickness)
+{
+ int style[192], i = 0;
+
+ while (i < 16 * thickness) {
+ style[i++] = color;
+ }
+ while (i < 20 * thickness) {
+ style[i++] = gdTransparent;
+ }
+ while (i < 28 * thickness) {
+ style[i++] = color;
+ }
+ while (i < 32 * thickness) {
+ style[i++] = gdTransparent;
+ }
+ gdImageSetStyle(im, style, 32 * thickness);
+ gdImageSetThickness(im, thickness);
+}
+
+int main()
+{
+ gdImagePtr im;
+ int error = 0, black;
+
+ im = gdImageCreate(800, 800);
+ gdImageColorAllocate(im, 255, 255, 255);
+ black = gdImageColorAllocate(im, 0, 0, 0);
+
+ setStyleAndThickness(im, black, 1);
+ gdImageLine(im, 50, 250, 550, 250, gdStyled);
+ gdImageLine(im, 550, 250, 550, 750, gdStyled);
+ gdImageLine(im, 550, 750, 50, 250, gdStyled);
+
+ setStyleAndThickness(im, black, 2);
+ gdImageLine(im, 100, 200, 600, 200, gdStyled);
+ gdImageLine(im, 600, 200, 600, 700, gdStyled);
+ gdImageLine(im, 600, 700, 100, 200, gdStyled);
+
+ setStyleAndThickness(im, black, 4);
+ gdImageLine(im, 150, 150, 650, 150, gdStyled);
+ gdImageLine(im, 650, 150, 650, 650, gdStyled);
+ gdImageLine(im, 650, 650, 150, 150, gdStyled);
+
+ setStyleAndThickness(im, black, 6);
+ gdImageLine(im, 200, 100, 700, 100, gdStyled);
+ gdImageLine(im, 700, 100, 700, 600, gdStyled);
+ gdImageLine(im, 700, 600, 200, 100, gdStyled);
+
+ if (!gdAssertImageEqualsToFile("gdimageline/github_bug_167_exp.png", im)) {
+ error = 1;
+ }
+
+ gdImageDestroy(im);
+
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png
new file mode 100644
index 00000000000..774270f63db
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
index 4e54fffb143..6ec1a0f15f4 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
@@ -5,8 +5,4 @@ SET(TESTS_FILES
gdimageopenpolygon3
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am
new file mode 100644
index 00000000000..1941af510e7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am
@@ -0,0 +1,14 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimageopenpolygon/gdimageopenpolygon0 \
+ gdimageopenpolygon/gdimageopenpolygon1 \
+ gdimageopenpolygon/gdimageopenpolygon2 \
+ gdimageopenpolygon/gdimageopenpolygon3
+endif
+
+EXTRA_DIST += \
+ gdimageopenpolygon/CMakeLists.txt \
+ gdimageopenpolygon/gdimageopenpolygon0.png \
+ gdimageopenpolygon/gdimageopenpolygon1.png \
+ gdimageopenpolygon/gdimageopenpolygon2.png \
+ gdimageopenpolygon/gdimageopenpolygon3.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c
index d9bf1bd962a..7243222b9b8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c
@@ -15,7 +15,7 @@ main(void)
gdImageFilledRectangle(im, 0, 0, 99, 99, white);
gdImageOpenPolygon(im, NULL, 0, black); /* no effect */
gdImageOpenPolygon(im, NULL, -1, black); /* no effect */
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon0.png", im);
+ r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon0.png", im);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
return EXIT_SUCCESS;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c
index 07ee29dff49..616c34e92e9 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c
@@ -23,7 +23,7 @@ main(void)
points[0].x = 10;
points[0].y = 10;
gdImageOpenPolygon(im, points, 1, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon1.png", im);
+ r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon1.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c
index ab097d83cad..07d1f01d82a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c
@@ -25,7 +25,7 @@ main(void)
points[1].x = 50;
points[1].y = 70;
gdImageOpenPolygon(im, points, 2, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon2.png", im);
+ r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon2.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c
index 027bfacd20b..52166604a4f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c
@@ -27,7 +27,7 @@ main(void)
points[2].x = 90;
points[2].y = 30;
gdImageOpenPolygon(im, points, 3, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon3.png", im);
+ r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon3.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
index 2d10b21ed94..eadd82a4670 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdimagepixelate
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am
new file mode 100644
index 00000000000..d04c2992724
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagepixelate/gdimagepixelate
+
+EXTRA_DIST += \
+ gdimagepixelate/CMakeLists.txt
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 2a0a4692269..047ac8f446e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
@@ -36,15 +36,15 @@ static const int expected_average[][3] = {
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)) { \
- printf("Red %x is expected, but %x\n", r, gdImageRed(im, p)); \
+ gdTestErrorMsg("Red %x is expected, but %x\n", r, gdImageRed(im, p)); \
return 0; \
} \
if (g != gdImageGreen(im, p)) { \
- printf("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \
+ gdTestErrorMsg("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \
return 0; \
} \
if (b != gdImageBlue(im, p)) { \
- printf("Blue %x is expected, but %x\n", b, gdImageBlue(im, p)); \
+ gdTestErrorMsg("Blue %x is expected, but %x\n", b, gdImageBlue(im, p)); \
return 0; \
} \
} \
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
index 679e93986be..e965b73fdd2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
@@ -5,8 +5,4 @@ SET(TESTS_FILES
gdimagepolygon3
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am
new file mode 100644
index 00000000000..ed465fc8bfa
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am
@@ -0,0 +1,14 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagepolygon/gdimagepolygon0 \
+ gdimagepolygon/gdimagepolygon1 \
+ gdimagepolygon/gdimagepolygon2 \
+ gdimagepolygon/gdimagepolygon3
+endif
+
+EXTRA_DIST += \
+ gdimagepolygon/CMakeLists.txt \
+ gdimagepolygon/gdimagepolygon0.png \
+ gdimagepolygon/gdimagepolygon1.png \
+ gdimagepolygon/gdimagepolygon2.png \
+ gdimagepolygon/gdimagepolygon3.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c
index 20fa423c056..fbc893014a7 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c
@@ -15,7 +15,7 @@ main(void)
gdImageFilledRectangle(im, 0, 0, 99, 99, white);
gdImagePolygon(im, NULL, 0, black); /* no effect */
gdImagePolygon(im, NULL, -1, black); /* no effect */
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon0.png", im);
+ r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon0.png", im);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
return EXIT_SUCCESS;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c
index 6f2ad57dfcc..3b8dde540e6 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c
@@ -23,7 +23,7 @@ main(void)
points[0].x = 10;
points[0].y = 10;
gdImagePolygon(im, points, 1, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon1.png", im);
+ r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon1.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c
index 8142c3ba873..90b824d97b4 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c
@@ -25,7 +25,7 @@ main(void)
points[1].x = 50;
points[1].y = 70;
gdImagePolygon(im, points, 2, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon2.png", im);
+ r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon2.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c
index 55d71f27a9c..b53d7c956fd 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c
@@ -27,7 +27,7 @@ main(void)
points[2].x = 90;
points[2].y = 30;
gdImagePolygon(im, points, 3, black);
- r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon3.png", im);
+ r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon3.png", im);
free(points);
gdImageDestroy(im);
if (!r) exit(EXIT_FAILURE);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
index 2c73ef9b77a..517864ed2ba 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
@@ -1,10 +1,7 @@
SET(TESTS_FILES
bug00003
bug00106_gdimagerectangle
+ github_bug_00172
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
new file mode 100644
index 00000000000..4175ca59873
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
@@ -0,0 +1,7 @@
+libgd_test_programs += \
+ gdimagerectangle/bug00003 \
+ gdimagerectangle/bug00106_gdimagerectangle \
+ gdimagerectangle/github_bug_00172
+
+EXTRA_DIST += \
+ gdimagerectangle/CMakeLists.txt
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
new file mode 100644
index 00000000000..6519342041f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include "gd.h"
+
+#include "gdtest.h"
+
+int main() {
+ gdImagePtr im;
+ int black, white;
+ int error = 0;
+ int xs = 300, xe = 350, i;
+ im = gdImageCreateTrueColor(400, 200);
+
+ if (im == NULL) {
+ gdTestErrorMsg("gdImageCreate failed.\n");
+ return 1;
+ }
+
+ white = gdImageColorAllocate(im, 255,255,255);
+ black = gdImageColorAllocate(im, 0,0,0);
+
+ gdImageFilledRectangle(im, 0, 0, 400,200, white);
+
+ gdImageRectangle(im, xs, 95, xe, 95, black);
+
+ for (i = xs; i <= xe; i++) {
+ int c = gdImageGetPixel(im, i, 94);
+ if (c != white) {
+ error |=1;
+ }
+ }
+ for (i = xs; i <= xe; i++) {
+ int c = gdImageGetPixel(im, i, 95);
+ if (c != black) {
+ error |=1;
+ }
+ }
+ for (i = xs; i <= xe; i++) {
+ int c = gdImageGetPixel(im, i, 96);
+ if (c != white) {
+ 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/gdimagerotate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
new file mode 100644
index 00000000000..fd8b4fa7b1b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
@@ -0,0 +1,6 @@
+SET(TESTS_FILES
+ bug00067
+ php_bug_64898
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
new file mode 100644
index 00000000000..696344bafb5
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
@@ -0,0 +1,28 @@
+if HAVE_LIBJPEG
+libgd_test_programs += \
+ gdimagerotate/bug00067
+endif
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagerotate/php_bug_64898
+endif
+
+EXTRA_DIST += \
+ gdimagerotate/CMakeLists.txt \
+ gdimagerotate/bug00067_000_exp.png \
+ gdimagerotate/bug00067_015_exp.png \
+ gdimagerotate/bug00067_030_exp.png \
+ gdimagerotate/bug00067_045_exp.png \
+ gdimagerotate/bug00067_060_exp.png \
+ gdimagerotate/bug00067_075_exp.png \
+ gdimagerotate/bug00067_090_exp.png \
+ gdimagerotate/bug00067_105_exp.png \
+ gdimagerotate/bug00067_120_exp.png \
+ gdimagerotate/bug00067_135_exp.png \
+ gdimagerotate/bug00067_150_exp.png \
+ gdimagerotate/bug00067_165_exp.png \
+ gdimagerotate/bug00067_180_exp.png \
+ gdimagerotate/php_bug_64898.png \
+ gdimagerotate/php_bug_64898_exp.png \
+ gdimagerotate/remirh128.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c
index 4a6595988b9..add483d2d02 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c
@@ -7,33 +7,23 @@
int main()
{
gdImagePtr im, exp;
- char path[2048];
- const char *file_im = "gdimagerotate/remirh128.jpg";
- const char *file_exp = "gdimagerotate/bug00067";
+ char *path, filename[2048];
+ const char *file_im = "gdimagerotate/remirh128.png";
FILE *fp;
int color;
int error = 0;
int angle;
- sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_im);
-
- fp = fopen(path, "rb");
-
- if (!fp) {
- gdTestErrorMsg("opening Jpeg %s for reading failed.\n", path);
- return 1;
- }
-
- im = gdImageCreateFromJpeg(fp);
-
+ fp = gdTestFileOpen(file_im);
+ im = gdImageCreateFromPng(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("loading %s failed.\n", path);
+ gdTestErrorMsg("loading %s failed.\n", file_im);
return 1;
}
- color = gdImageColorAllocate(im, 0, 0, 0);
+ color = gdImageColorAllocateAlpha(im, 255, 255, 255, 127);
if (color < 0) {
gdTestErrorMsg("allocation color from image failed.\n");
@@ -51,12 +41,13 @@ int main()
return 1;
}
- sprintf(path, "%s/%s_%03d_exp.png", GDTEST_TOP_DIR, file_exp, angle);
-
+ sprintf(filename, "bug00067_%03d_exp.png", angle);
+ path = gdTestFilePath2("gdimagerotate", filename);
if (!gdAssertImageEqualsToFile(path, exp)) {
gdTestErrorMsg("comparing rotated image to %s failed.\n", path);
error += 1;
}
+ free(path);
gdImageDestroy(exp);
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png
index d06b5fe58fb..2db78821ab8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png
index a0f8ce2efae..48bd53ab5d8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png
index aad7f4ccb67..b56e1f1a159 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png
index 75916a51649..69385ed7114 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png
index f24364a062f..3dc07e54b6f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png
index f8dcf449086..c38fdf478bf 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png
index a971447c7b2..3a85c2d4fe2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png
index 2cf641d85a8..9a64cb71584 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png
index 1890f92545c..b8097ce8d32 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png
index 34ccb0aa054..e085e02bb8a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png
index 330d030a7fa..b61bed7454b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png
index df5b6400bc2..592bdea3b23 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png
index d4f65983615..65840b7b049 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c
index 9bbd98b5313..67f62a77cd7 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c
@@ -7,25 +7,15 @@
int main()
{
gdImagePtr im, exp;
- char path[2048];
- const char *file_im = "gdimagerotate/php_bug_64898.png";
- const char *file_exp = "gdimagerotate/php_bug_64898_exp.png";
FILE *fp;
- int color;
-
- sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_im);
-
- fp = fopen(path, "rb");
-
- if (!fp) {
- gdTestErrorMsg("opening PNG %s for reading failed.\n", path);
- return 1;
- }
+ int error = 0;
+ fp = gdTestFileOpen("gdimagerotate/php_bug_64898.png");
+(void)fp;
im = gdImageCreateTrueColor(141, 200);
if (!im) {
- gdTestErrorMsg("loading %s failed.\n", path);
+ gdTestErrorMsg("loading failed.\n");
return 1;
}
@@ -42,17 +32,13 @@ int main()
return 1;
}
- sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_exp);
-
- if (!gdAssertImageEqualsToFile(path, exp)) {
- printf("comparing rotated image to %s failed.\n", path);
- gdImageDestroy(im);
- gdImageDestroy(exp);
- return 1;
+ if (!gdAssertImageEqualsToFile("gdimagerotate/php_bug_64898_exp.png", exp)) {
+ gdTestErrorMsg("comparing rotated image failed.\n");
+ error = 1;
}
gdImageDestroy(exp);
gdImageDestroy(im);
- return 0;
+ return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png
index a03bdb8e9d6..7ecaeb076b8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg
deleted file mode 100644
index bd5e3c77e3c..00000000000
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg
+++ /dev/null
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png
new file mode 100644
index 00000000000..2db78821ab8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
new file mode 100644
index 00000000000..91bd0150176
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
@@ -0,0 +1,6 @@
+SET(TESTS_FILES
+ github_bug_00218
+ bug_overflow_large_new_size
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
new file mode 100644
index 00000000000..23b89241883
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
@@ -0,0 +1,7 @@
+
+libgd_test_programs += \
+ gdimagescale/github_bug_00218 \
+ gdimagescale/bug_overflow_large_new_size
+
+EXTRA_DIST += \
+ gdimagescale/CMakeLists.txt
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
new file mode 100644
index 00000000000..0a8503b745f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gd.h"
+#include <math.h>
+
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im, im2;
+
+ im = gdImageCreate(1,1);
+ if (im == NULL) {
+ printf("gdImageCreate failed\n");
+ 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");
+ return 0;
+ }
+ gdImageDestroy(im);
+ gdImageDestroy(im2);
+
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c
new file mode 100644
index 00000000000..a25793ccdde
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c
@@ -0,0 +1,20 @@
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im, dest;
+ int status;
+
+ im = gdImageCreate(5,5);
+ dest = gdImageScale(im, 0, 1);
+ if (dest != NULL) {
+ gdTestErrorMsg("expecting NULL result\n");
+ status = 1;
+ } else {
+ status = 0;
+ }
+ gdImageDestroy(im);
+
+ return status;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
index 13de90a4ff6..0a9e2167c4c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
@@ -3,8 +3,4 @@ SET(TESTS_FILES
bug00208_2
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am
new file mode 100644
index 00000000000..ca13839522b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am
@@ -0,0 +1,11 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagescatterex/bug00208_1 \
+ gdimagescatterex/bug00208_2
+endif
+
+EXTRA_DIST += \
+ gdimagescatterex/CMakeLists.txt \
+ gdimagescatterex/bug00208.png \
+ gdimagescatterex/bug00208_1.png \
+ gdimagescatterex/bug00208_2.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c
index 4dc8b63e737..3d02b2cf869 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c
@@ -8,15 +8,11 @@ int main()
gdScatter s;
CuTestImageResult r;
- fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208.png", "rb");
- if (!fp) {
- fprintf(stderr, "could not open file\n");
- return 1;
- }
+ fp = gdTestFileOpen("gdimagescatterex/bug00208.png");
im = gdImageCreateFromPng(fp);
fclose(fp);
if (!im) {
- fprintf(stderr, "could not create image\n");
+ gdTestErrorMsg("could not create image\n");
return 1;
}
@@ -26,20 +22,15 @@ int main()
s.num_colors = 0;
if (!gdImageScatterEx(im, &s)) {
gdImageDestroy(im);
- fprintf(stderr, "could not scatter\n");
+ gdTestErrorMsg("could not scatter\n");
return 1;
}
- fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208_1.png", "rb");
- if (!fp) {
- fprintf(stderr, "could not open file\n");
- gdImageDestroy(im);
- return 1;
- }
+ fp = gdTestFileOpen("gdimagescatterex/bug00208_1.png");
ex = gdImageCreateFromPng(fp);
fclose(fp);
if (!ex) {
- fprintf(stderr, "could not create image\n");
+ gdTestErrorMsg("could not create image\n");
gdImageDestroy(im);
return 1;
}
@@ -48,7 +39,7 @@ int main()
gdImageDestroy(ex);
gdImageDestroy(im);
if (r.pixels_changed > 10000) {
- fprintf(stderr, "too much diff: %d\n", r.pixels_changed);
+ gdTestErrorMsg("too much diff: %d\n", r.pixels_changed);
return 1;
}
return 0;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c
index 90361569df2..58c1382bafd 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c
@@ -9,15 +9,11 @@ int main()
int colors[] = {0xFF0000, 0x00FF00};
CuTestImageResult r;
- fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208.png", "rb");
- if (!fp) {
- fprintf(stderr, "could not open file\n");
- return 1;
- }
+ fp = gdTestFileOpen("gdimagescatterex/bug00208.png");
im = gdImageCreateFromPng(fp);
fclose(fp);
if (!im) {
- fprintf(stderr, "could not create image\n");
+ gdTestErrorMsg("could not create image\n");
return 1;
}
@@ -28,20 +24,15 @@ int main()
s.colors = colors;
if (!gdImageScatterEx(im, &s)) {
gdImageDestroy(im);
- fprintf(stderr, "could not scatter\n");
+ gdTestErrorMsg("could not scatter\n");
return 1;
}
- fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208_2.png", "rb");
- if (!fp) {
- fprintf(stderr, "could not open file\n");
- gdImageDestroy(im);
- return 1;
- }
+ fp = gdTestFileOpen("gdimagescatterex/bug00208_2.png");
ex = gdImageCreateFromPng(fp);
fclose(fp);
if (!ex) {
- fprintf(stderr, "could not create image\n");
+ gdTestErrorMsg("could not create image\n");
gdImageDestroy(im);
return 1;
}
@@ -50,7 +41,7 @@ int main()
gdImageDestroy(ex);
gdImageDestroy(im);
if (r.pixels_changed > 10000) {
- fprintf(stderr, "too much diff: %d\n", r.pixels_changed);
+ gdTestErrorMsg("too much diff: %d\n", r.pixels_changed);
return 1;
}
return 0;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
index 1fb1f38bb36..31ba4e418b9 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
@@ -4,8 +4,4 @@ SET(TESTS_FILES
gdeffectmultiply
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
new file mode 100644
index 00000000000..8722e9afdf0
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
@@ -0,0 +1,7 @@
+libgd_test_programs += \
+ gdimagesetpixel/bug00186 \
+ gdimagesetpixel/gdeffectmultiply \
+ gdimagesetpixel/gdeffectoverlay
+
+EXTRA_DIST += \
+ gdimagesetpixel/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c
new file mode 100644
index 00000000000..3d8da7bfe29
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c
@@ -0,0 +1,33 @@
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int x, y, c;
+ int r=0;
+
+
+ im = gdImageCreateTrueColor(256, 256);
+ gdImageAlphaBlending( im, gdEffectReplace );
+ for (x=0; x<256; x++) {
+ for (y=0; y<256; y++) {
+ c = (y/2 << 24) + (x << 16) + (x << 8) + x;
+ gdImageSetPixel(im, x, y, c );
+ }
+ }
+ gdImageAlphaBlending( im, gdEffectMultiply );
+ gdImageFilledRectangle(im, 0, 0, 255, 255, 0xff7f00);
+
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 0, 128)) != 0x40) {
+ r = 1;
+ }
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 128, 128)) != 0x5f) {
+ r = 1;
+ }
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 255, 128)) != 0x7f) {
+ r = 1;
+ }
+ gdImageDestroy(im);
+ return r;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c
new file mode 100644
index 00000000000..7f63e17d301
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c
@@ -0,0 +1,33 @@
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int x, y, c;
+ int r=0;
+
+
+ im = gdImageCreateTrueColor(256, 256);
+ gdImageAlphaBlending( im, gdEffectReplace );
+ for (x=0; x<256; x++) {
+ for (y=0; y<256; y++) {
+ c = (y/2 << 24) + (x << 16) + (x << 8) + x;
+ gdImageSetPixel(im, x, y, c );
+ }
+ }
+ gdImageAlphaBlending( im, gdEffectOverlay );
+ gdImageFilledRectangle(im, 0, 0, 255, 255, 0xff7f00);
+
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 0, 128)) != 0x00) {
+ r = 1;
+ }
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 128, 128)) != 0x80) {
+ r = 1;
+ }
+ if (gdTrueColorGetGreen(gdImageGetPixel(im, 255, 128)) != 0xff) {
+ r = 1;
+ }
+ gdImageDestroy(im);
+ return r;
+}
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 c3338c0dc92..a38613f9a81 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)
SET(TESTS_FILES
gdimagestringft_bbox
)
+ENDIF(FREETYPE_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..0dfe26fb13c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBFREETYPE
+libgd_test_programs += \
+ gdimagestringft/gdimagestringft_bbox
+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 01fd73a33c1..bc2bdd0b791 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
@@ -28,7 +28,7 @@ static int EXPECT[16][8] = {
int main()
{
- char path[2048];
+ char *path;
gdImagePtr im;
int black;
double cos_t, sin_t;
@@ -38,7 +38,7 @@ int main()
int error = 0;
FILE *fp;
- sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR);
+ path = gdTestFilePath("freetype/DejaVuSans.ttf");
im = gdImageCreate(800, 800);
gdImageColorAllocate(im, 0xFF, 0xFF, 0xFF); /* allocate white for background color */
black = gdImageColorAllocate(im, 0, 0, 0);
@@ -53,7 +53,7 @@ int main()
}
for (j = 0; j < 8; j++) {
if (brect[j] != EXPECT[i][j]) {
- printf("(%d, %d) (%d, %d) (%d, %d) (%d, %d) expected, but (%d, %d) (%d, %d) (%d, %d) (%d, %d)\n",
+ gdTestErrorMsg("(%d, %d) (%d, %d) (%d, %d) (%d, %d) expected, but (%d, %d) (%d, %d) (%d, %d) (%d, %d)\n",
EXPECT[i][0], EXPECT[i][1], EXPECT[i][2], EXPECT[i][3],
EXPECT[i][4], EXPECT[i][5], EXPECT[i][6], EXPECT[i][7],
brect[0], brect[1], brect[2], brect[3],
@@ -68,14 +68,11 @@ int main()
y = (int)(cos_t * y - sin_t * x);
x = temp;
}
- fp = fopen("gdimagestringft_bbox.png", "wb");
- if (!fp) {
- error = 1;
- goto done;
- }
+ fp = gdTestTempFp();
gdImagePng(im, fp);
fclose(fp);
done:
gdImageDestroy(im);
+ free(path);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
index 5d2666883d8..db08ac13a8e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
@@ -1,9 +1,7 @@
+IF(FREETYPE_FOUND)
SET(TESTS_FILES
gdimagestringftex_returnfontpathname
)
+ENDIF(FREETYPE_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am
new file mode 100644
index 00000000000..e72c4375a46
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBFREETYPE
+libgd_test_programs += \
+ gdimagestringftex/gdimagestringftex_returnfontpathname
+endif
+
+EXTRA_DIST += \
+ gdimagestringftex/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c
index f91485b7717..fc135cd263f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c
@@ -5,9 +5,9 @@
int main()
{
gdFTStringExtra strex;
- char path[2048];
+ char *path;
- sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR);
+ path = gdTestFilePath("freetype/DejaVuSans.ttf");
strex.flags = gdFTEX_RETURNFONTPATHNAME;
strex.fontpath = NULL;
gdImageStringFTEx(NULL, NULL, 0, path, 72, 0, 0, 0, "hello, gd", &strex);
@@ -18,5 +18,6 @@ int main()
return 2;
}
gdFree(strex.fontpath);
+ free(path);
return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
new file mode 100644
index 00000000000..606eb537270
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+ php_bug_72512
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
new file mode 100644
index 00000000000..cd73f092b9b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
@@ -0,0 +1,6 @@
+
+libgd_test_programs += \
+ gdimagetruecolortopalette/php_bug_72512
+
+EXTRA_DIST += \
+ gdimagetruecolortopalette/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c
new file mode 100644
index 00000000000..d022a94e5e7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gd.h"
+
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im, im2;
+ int error = 0;
+
+ im = gdImageCreateTrueColor(100, 100);
+
+ if (im == NULL) {
+ gdTestErrorMsg("gdImageCreateTruecolor failed");
+ error = 1;
+ goto exit;
+ }
+ gdImageColorTransparent(im, -1);
+ gdImageTrueColorToPalette(im, 1, 3);
+ gdImageColorTransparent(im, 9);
+ im2 = gdImageScale(im, 1, 65535);
+ if (im2 == NULL) {
+ error = 1;
+ goto freeim;
+ } else {
+ gdImageDestroy(im2);
+ }
+
+freeim:
+ gdImageDestroy(im);
+exit:
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
new file mode 100644
index 00000000000..296e3f1ca77
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
@@ -0,0 +1,6 @@
+SET(TESTS_FILES
+ gdModesAndPalettes
+ gdTrivialResize
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am
new file mode 100644
index 00000000000..f13f4abbcde
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am
@@ -0,0 +1,6 @@
+libgd_test_programs += \
+ gdinterpolatedscale/gdModesAndPalettes \
+ gdinterpolatedscale/gdTrivialResize
+
+EXTRA_DIST += \
+ gdinterpolatedscale/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c
index a6ed14d92f3..a0a95595544 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c
@@ -36,6 +36,10 @@ int main() {
result = gdImageScale(im[i], NX, NY);
gdTestAssert(result != NULL);
gdTestAssert(result != im[i]);
+ if (result == NULL) {
+ gdTestErrorMsg("gdImageScale failed (method: %i, im:%i).\n", method, i);
+ break;
+ }
gdTestAssert(result->sx == NX && result->sy == NY);
gdImageDestroy(result);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c
index f11b5059fbf..2b7baf1f8d5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c
@@ -8,25 +8,25 @@
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_BILINEAR_FIXED); // FP interp'n
- return im;
+ return im;
}/* mkwhite*/
/* Fill with almost-black. */
void mkblack(gdImagePtr ptr)
{
- gdImageFilledRectangle(ptr, 0, 0, ptr->sx - 1, ptr->sy - 1,
- gdImageColorExactAlpha(ptr, 2, 2, 2, 0));
+ gdImageFilledRectangle(ptr, 0, 0, ptr->sx - 1, ptr->sy - 1,
+ gdImageColorExactAlpha(ptr, 2, 2, 2, 0));
}/* mkblack*/
@@ -34,61 +34,60 @@ void mkblack(gdImagePtr ptr)
void scaletest(int x, int y, int nx, int ny)
{
- gdImagePtr im, imref, tmp, same;
+ gdImagePtr im, imref, tmp, same;
imref = mkwhite(x, y);
- im = mkwhite(x, y);
- tmp = gdImageScale(im, nx, ny);
- same = gdImageScale(tmp, x, y);
-
- /* Test the result to insure that it's close enough to the
- * original. */
- gdTestAssert(gdMaxPixelDiff(im, same) < CLOSE_ENOUGH);
-
- /* Modify the original and test for a change again. (I.e. test
- * for accidentally shared memory.) */
- mkblack(tmp);
- gdTestAssert(gdMaxPixelDiff(imref, same) < CLOSE_ENOUGH);
-
- gdImageDestroy(im);
- gdImageDestroy(tmp);
- gdImageDestroy(same);
+ im = mkwhite(x, y);
+ tmp = gdImageScale(im, nx, ny);
+ same = gdImageScale(tmp, x, y);
+
+ /* Test the result to insure that it's close enough to the
+ * original. */
+ gdTestAssert(gdMaxPixelDiff(im, same) < CLOSE_ENOUGH);
+
+ /* Modify the original and test for a change again. (I.e. test
+ * for accidentally shared memory.) */
+ mkblack(tmp);
+ gdTestAssert(gdMaxPixelDiff(imref, same) < CLOSE_ENOUGH);
+
+ gdImageDestroy(im);
+ gdImageDestroy(imref);
+ gdImageDestroy(tmp);
+ gdImageDestroy(same);
}/* scaletest*/
void do_test(int x, int y, int nx, int ny)
{
- gdImagePtr im, imref, tmp;
- gdImagePtr same, same2;
-
+ gdImagePtr im, imref, same;
im = mkwhite(x, y);
- imref = mkwhite(x, y);
+ imref = mkwhite(x, y);
- same = gdImageScale(im, x, y);
+ same = gdImageScale(im, x, y);
- /* Trivial resize should be a straight copy. */
- gdTestAssert(im != same);
- gdTestAssert(gdMaxPixelDiff(im, same) == 0);
- gdTestAssert(gdMaxPixelDiff(imref, same) == 0);
+ /* Trivial resize should be a straight copy. */
+ gdTestAssert(im != same);
+ gdTestAssert(gdMaxPixelDiff(im, same) == 0);
+ gdTestAssert(gdMaxPixelDiff(imref, same) == 0);
- /* Ensure that modifying im doesn't modify same (i.e. see if we
- * can catch them accidentally sharing the same pixel buffer.) */
- mkblack(im);
- gdTestAssert(gdMaxPixelDiff(imref, same) == 0);
+ /* Ensure that modifying im doesn't modify same (i.e. see if we
+ * can catch them accidentally sharing the same pixel buffer.) */
+ mkblack(im);
+ gdTestAssert(gdMaxPixelDiff(imref, same) == 0);
- gdImageDestroy(same);
- gdImageDestroy(im);
+ gdImageDestroy(same);
+ gdImageDestroy(im);
+ gdImageDestroy(imref);
- /* Scale horizontally, vertically and both. */
- scaletest(x, y, nx, y);
- scaletest(x, y, x, ny);
- scaletest(x, y, nx, ny);
+ /* Scale horizontally, vertically and both. */
+ scaletest(x, y, nx, y);
+ scaletest(x, y, x, ny);
+ scaletest(x, y, nx, ny);
}
-int main(int argc, char **argv)
+int main()
{
+ do_test(300, 300, 600, 600);
+ do_test(1500, 1000, 600, 400);
- do_test(300, 300, 600, 600);
- do_test(3200, 2133, 640, 427);
-
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
index 9fd4caf3797..bc72c27c84b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
gdnewfilectx_null
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am
new file mode 100644
index 00000000000..21f45a01316
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdnewfilectx/gdnewfilectx_null
+
+EXTRA_DIST += \
+ gdnewfilectx/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am
new file mode 100644
index 00000000000..5b4e39e6e6f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am
@@ -0,0 +1,5 @@
+# Note: Library is declared in tests/Makefile.am as it's used by all the tests.
+
+EXTRA_DIST += \
+ gdtest/CMakeLists.txt \
+ gdtest/test_config.h.cmake
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 83aba01d77f..b26d0394a41 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
@@ -1,3 +1,4 @@
+#include <config.h>
#include <assert.h>
#include <setjmp.h>
#include <stdlib.h>
@@ -5,6 +6,24 @@
#include <string.h>
#include <math.h>
#include <limits.h>
+
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef _WIN32
+# include "readdir.h"
+#endif
+
#include "gd.h"
#include "gdtest.h"
@@ -25,19 +44,351 @@ void gdSilence(int priority, const char *format, va_list args)
gdImagePtr gdTestImageFromPng(const char *filename)
{
gdImagePtr image;
-
FILE *fp;
- fp = fopen(filename, "rb");
+ /* If the path is relative, then assume it's in the tests/ dir. */
+ if (filename[0] == '/'
+#ifdef _WIN32
+ || filename[1] == ':'
+#endif
+ ) {
+ fp = fopen(filename, "rb");
+ } else {
+ fp = gdTestFileOpen(filename);
+ }
- if (!fp) {
- return NULL;
+ if (fp == NULL) {
+ return NULL;
}
+
image = gdImageCreateFromPng(fp);
fclose(fp);
return image;
}
+static char *tmpdir_base;
+
+/* This is kind of hacky, but it's meant to be simple. */
+static void _clean_dir(const char *dir)
+{
+ DIR *d;
+ struct dirent *de;
+
+ d = opendir(dir);
+ if (d == NULL)
+ return;
+
+ if (chdir(dir) != 0)
+ goto done;
+
+ while ((de = readdir(d)) != NULL) {
+ struct stat st;
+
+ if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0)
+ continue;
+#ifdef _WIN32
+ {
+ WIN32_FILE_ATTRIBUTE_DATA data;
+
+ if (!GetFileAttributesEx(de->d_name, GetFileExInfoStandard, &data)) {
+ continue;
+ }
+ if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+ _clean_dir(de->d_name);
+ } else {
+ unlink(de->d_name);
+ }
+ }
+#else
+ if (lstat(de->d_name, &st) != 0)
+ continue;
+
+ if (S_ISDIR(st.st_mode))
+ _clean_dir(de->d_name);
+ else
+ unlink(de->d_name);
+#endif
+ }
+
+ if (chdir("..")) {
+ /* Ignore. */;
+ }
+
+ done:
+ closedir(d);
+ rmdir(dir);
+}
+
+static void tmpdir_cleanup(void)
+{
+ _clean_dir(tmpdir_base);
+ free(tmpdir_base);
+}
+
+#ifdef _WIN32
+char* strrstr (char* haystack, char* needle)
+{
+ int needle_length = strlen(needle);
+ char * haystack_end = haystack + strlen(haystack) - needle_length;
+ char * p;
+ int i;
+
+ for(p = haystack_end; p >= haystack; --p)
+ {
+ for(i = 0; i < needle_length; ++i) {
+ if(p[i] != needle[i])
+ goto next;
+ }
+ return p;
+
+ next:;
+ }
+ return 0;
+}
+
+
+typedef VOID (WINAPI *MyGetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime);
+
+static MyGetSystemTimeAsFileTime get_time_func(void)
+{
+ MyGetSystemTimeAsFileTime timefunc = NULL;
+ HMODULE hMod = GetModuleHandle("kernel32.dll");
+
+ if (hMod) {
+ /* Max possible resolution <1us, win8/server2012 */
+ timefunc = (MyGetSystemTimeAsFileTime)GetProcAddress(hMod, "GetSystemTimePreciseAsFileTime");
+
+ if(!timefunc) {
+ /* 100ns blocks since 01-Jan-1641 */
+ timefunc = (MyGetSystemTimeAsFileTime)GetProcAddress(hMod, "GetSystemTimeAsFileTime");
+ }
+ }
+
+ return timefunc;
+}
+static MyGetSystemTimeAsFileTime timefunc = NULL;
+static int getfilesystemtime(struct timeval *tv)
+{
+ FILETIME ft;
+ unsigned __int64 ff = 0;
+ ULARGE_INTEGER fft;
+
+ if (timefunc == NULL) {
+ timefunc = get_time_func();
+ }
+ timefunc(&ft);
+
+ /*
+ * Do not cast a pointer to a FILETIME structure to either a
+ * ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows.
+ * via http://technet.microsoft.com/en-us/library/ms724284(v=vs.85).aspx
+ */
+ fft.HighPart = ft.dwHighDateTime;
+ fft.LowPart = ft.dwLowDateTime;
+ ff = fft.QuadPart;
+
+ ff /= 10Ui64; /* convert to microseconds */
+ ff -= 11644473600000000Ui64; /* convert to unix epoch */
+
+ tv->tv_sec = (long)(ff / 1000000Ui64);
+ tv->tv_usec = (long)(ff % 1000000Ui64);
+
+ return 0;
+}
+
+static char *
+mkdtemp (char *tmpl)
+{
+ static const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ static const int NLETTERS = sizeof (letters) - 1;
+ static int counter = 0;
+ char *XXXXXX;
+ struct timeval tv;
+ _int64 value;
+ int count;
+
+ /* find the last occurrence of "XXXXXX" */
+ XXXXXX = strrstr(tmpl, "XXXXXX");
+
+ if (!XXXXXX || strncmp (XXXXXX, "XXXXXX", 6)) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ /* Get some more or less random data. */
+ getfilesystemtime(&tv);
+ value = (tv.tv_usec ^ tv.tv_sec) + counter++;
+
+ for (count = 0; count < 100; value += 7777, ++count) {
+ _int64 v = value;
+
+ /* Fill in the random bits. */
+ XXXXXX[0] = letters[v % NLETTERS];
+ v /= NLETTERS;
+ XXXXXX[1] = letters[v % NLETTERS];
+ v /= NLETTERS;
+ XXXXXX[2] = letters[v % NLETTERS];
+ v /= NLETTERS;
+ XXXXXX[3] = letters[v % NLETTERS];
+ v /= NLETTERS;
+ XXXXXX[4] = letters[v % NLETTERS];
+ v /= NLETTERS;
+ XXXXXX[5] = letters[v % NLETTERS];
+
+ /* tmpl is in UTF-8 on Windows, thus use g_mkdir() */
+ if (mkdir(tmpl) == 0) {
+ return tmpl;
+ }
+ printf("failed to create directory\n");
+ if (errno != EEXIST)
+ /* Any other error will apply also to other names we might
+ * try, and there are 2^32 or so of them, so give up now.
+ */
+ return NULL;
+ }
+
+ /* We got out of the loop because we ran out of combinations to try. */
+ errno = EEXIST;
+ return NULL;
+}
+#endif
+
+const char *gdTestTempDir(void)
+{
+ if (tmpdir_base == NULL) {
+ char *tmpdir;
+#ifdef _WIN32
+ char tmpdir_root[MAX_PATH];
+ size_t tmpdir_root_len = GetTempPath(MAX_PATH, tmpdir_root);
+ gdTestAssert(!(tmpdir_root_len > MAX_PATH || (tmpdir_root_len == 0)));
+ gdTestAssert((tmpdir_root_len + 30 < MAX_PATH));
+#else
+ char *tmpdir_root;
+ tmpdir_root = getenv("TMPDIR");
+ if (tmpdir_root == NULL)
+ tmpdir_root = "/tmp";
+#endif
+
+ /* The constant here is a lazy over-estimate. */
+ tmpdir = malloc(strlen(tmpdir_root) + 30);
+ gdTestAssert(tmpdir != NULL);
+#ifdef _WIN32
+ sprintf(tmpdir, "%sgdtest.XXXXXX", tmpdir_root);
+#else
+ sprintf(tmpdir, "%s/gdtest.XXXXXX", tmpdir_root);
+#endif
+ tmpdir_base = mkdtemp(tmpdir);
+ gdTestAssert(tmpdir_base != NULL);
+
+ atexit(tmpdir_cleanup);
+ }
+
+ return tmpdir_base;
+}
+
+char *gdTestTempFile(const char *template)
+{
+ const char *tempdir = gdTestTempDir();
+ char *ret;
+
+#ifdef _WIN32
+ {
+ char *tmpfilename;
+ UINT error;
+
+ ret = malloc(MAX_PATH);
+ gdTestAssert(ret != NULL);
+ if (template == NULL) {
+ error = GetTempFileName(tempdir,
+ "gdtest",
+ 0,
+ ret);
+ gdTestAssert(error != 0);
+ } else {
+ sprintf(ret, "%s\\%s", tempdir, template);
+ }
+ }
+#else
+ if (template == NULL) {
+ template = "gdtemp.XXXXXX";
+ }
+ ret = malloc(strlen(tempdir) + 10 + strlen(template));
+ gdTestAssert(ret != NULL);
+ sprintf(ret, "%s/%s", tempdir, template);
+
+ if (strstr(template, "XXXXXX") != NULL) {
+ int fd = mkstemp(ret);
+ gdTestAssert(fd != -1);
+ close(fd);
+ }
+#endif
+ return ret;
+}
+
+FILE *gdTestTempFp(void)
+{
+ char *file = gdTestTempFile(NULL);
+ FILE *fp = fopen(file, "wb");
+ gdTestAssert(fp != NULL);
+ free(file);
+ return fp;
+}
+
+char *gdTestFilePathV(const char *path, va_list args)
+{
+ size_t len;
+ const char *p;
+ char *file;
+ va_list args_len;
+
+ /* Figure out how much space we need. */
+ va_copy(args_len, args);
+ len = strlen(GDTEST_TOP_DIR) + 1;
+ p = path;
+ do {
+ len += strlen(p) + 1;
+ } while ((p = va_arg(args_len, const char *)) != NULL);
+ va_end(args_len);
+
+ /* Now build the path. */
+ file = malloc(len);
+ gdTestAssert(file != NULL);
+ strcpy(file, GDTEST_TOP_DIR);
+ p = path;
+ do {
+#ifdef _WIN32
+ strcat(file, "\\");
+#else
+ strcat(file, "/");
+#endif
+ strcat(file, p);
+ } while ((p = va_arg(args, const char *)) != NULL);
+ va_end(args);
+
+ return file;
+}
+
+char *gdTestFilePathX(const char *path, ...)
+{
+ va_list args;
+ va_start(args, path);
+ return gdTestFilePathV(path, args);
+}
+
+FILE *gdTestFileOpenX(const char *path, ...)
+{
+ va_list args;
+ FILE *fp;
+ char *file;
+
+ va_start(args, path);
+ file = gdTestFilePathV(path, args);
+ fp = fopen(file, "rb");
+ gdTestAssert(fp != NULL);
+ free(file);
+ return fp;
+}
+
/* Compare two buffers, returning the number of pixels that are
* different and the maximum difference of any single color channel in
* result_ret.
@@ -77,13 +428,14 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
r1 = gdTrueColorGetRed(c1);
r2 = gdTrueColorGetRed(c2);
diff_r = abs (r1 - r2);
- /* diff_r *= 4; /* emphasize */
+ // diff_r *= 4; /* emphasize */
if (diff_r) {
diff_r += gdRedMax/2; /* make sure it's visible */
}
if (diff_r > 255) {
diff_r = 255;
}
+ UP_DIFF(diff_r);
g1 = gdTrueColorGetGreen(c1);
g2 = gdTrueColorGetGreen(c2);
@@ -96,6 +448,7 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
if (diff_g > 255) {
diff_g = 255;
}
+ UP_DIFF(diff_g);
b1 = gdTrueColorGetBlue(c1);
b2 = gdTrueColorGetBlue(c2);
@@ -107,6 +460,7 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
if (diff_b > 255) {
diff_b = 255;
}
+ UP_DIFF(diff_b);
result_ret->pixels_changed++;
if (buf_diff) gdImageSetPixel(buf_diff, x,y, gdTrueColorAlpha(diff_r, diff_g, diff_b, diff_a));
@@ -212,6 +566,7 @@ int gdTestImageCompareToImage(const char* file, unsigned int line, const char* m
if (!fp) goto fail;
gdImagePng(actual, fp);
fclose(fp);
+ return 0;
} else {
if (surface_diff) {
gdImageDestroy(surface_diff);
@@ -251,10 +606,10 @@ int gdNumFailures() {
return failureCount;
}
-int _gdTestAssert(const char* file, unsigned int line, const char* message, int condition)
+int _gdTestAssert(const char* file, unsigned int line, int condition)
{
if (condition) return 1;
- _gdTestErrorMsg(file, line, "%s", message);
+ _gdTestErrorMsg(file, line, "Assert failed in <%s:%i>\n", file, line);
++failureCount;
@@ -263,15 +618,15 @@ int _gdTestAssert(const char* file, unsigned int line, const char* message, int
int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...)
{
- va_list args;
- char output_buf[GDTEST_STRING_MAX];
+ va_list args;
if (condition) return 1;
+ fprintf(stderr, "%s:%u: ", file, line);
va_start(args, message);
- vsnprintf(output_buf, sizeof(output_buf), message, args);
+ vfprintf(stderr, message, args);
va_end(args);
- fprintf(stderr, "%s:%u: %s", file, line, output_buf);
+
fflush(stderr);
++failureCount;
@@ -282,12 +637,11 @@ int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const c
int _gdTestErrorMsg(const char* file, unsigned int line, const char* format, ...) /* {{{ */
{
va_list args;
- char output_buf[GDTEST_STRING_MAX];
+ fprintf(stderr, "%s:%u: ", file, line);
va_start(args, format);
- vsnprintf(output_buf, sizeof(output_buf), format, args);
+ vfprintf(stderr, format, args);
va_end(args);
- fprintf(stderr, "%s:%u: %s", file, line, output_buf);
fflush(stderr);
++failureCount;
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 8f332b39bbb..fbf37bf4ff6 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
+++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
@@ -15,6 +15,36 @@ struct CuTestImageResult {
/* Internal versions of assert functions -- use the public versions */
gdImagePtr gdTestImageFromPng(const char *filename);
+/* Return a path to a writable temp dir. The common test code will make sure
+ * it's cleaned up when the test exits. Feel free to write whatever in here.
+ */
+const char *gdTestTempDir(void);
+
+/* Return a path to a writable file inside of the tempdir (see above).
+ * You should free the pointer when you're done.
+ * If |template| is NULL, you'll get a random file name, otherwise you'll get
+ * that under the tempdir.
+ */
+char *gdTestTempFile(const char *template);
+
+/* Return an open (writable) file handle to a temp file. */
+FILE *gdTestTempFp(void);
+
+/* Return the full path to a test file. The path should be relative
+ * to the tests/ dir. The caller should free the pointer when finished.
+ */
+char *gdTestFilePathV(const char *path, va_list args);
+char *gdTestFilePathX(const char *path, ...);
+#define gdTestFilePath(p) gdTestFilePathX(p, NULL)
+#define gdTestFilePath2(p1, p2) gdTestFilePathX(p1, p2, NULL)
+
+/* Return an open (read-only) file handle to a test file.
+ * The path should be relative to the tests/ dir.
+ */
+FILE *gdTestFileOpenX(const char *path, ...);
+#define gdTestFileOpen(p) gdTestFileOpenX(p, NULL)
+#define gdTestFileOpen2(p1, p2) gdTestFileOpenX(p1, p2, NULL)
+
void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
gdImagePtr buf_diff, CuTestImageResult *result_ret);
@@ -26,7 +56,7 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me
unsigned int gdMaxPixelDiff(gdImagePtr a, gdImagePtr b);
-int _gdTestAssert(const char* file, unsigned int line, const char* message, int condition);
+int _gdTestAssert(const char* file, unsigned int line, int condition);
int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...);
@@ -35,12 +65,12 @@ 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) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac))
+#define gdAssertImageFileEqualsMsg(ex,ac,ms) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac))
-#define gdAssertImageEquals(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
-#define gdAssertImageEqualsMsg(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__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__, "assert failed in <%s:%i>\n", (cond))
+#define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, (cond))
#define gdTestAssertMsg(cond, message, ...) _gdTestAssertMsg(__FILE__, __LINE__, (cond),(message),__VA_ARGS__)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
index cc47150c832..aa09d66c40a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
@@ -2,8 +2,4 @@ SET(TESTS_FILES
bug00032
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am
new file mode 100644
index 00000000000..c85c7a4701c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am
@@ -0,0 +1,10 @@
+if HAVE_LIBPNG
+if HAVE_LIBZ
+libgd_test_programs += \
+ gdtiled/bug00032
+endif
+endif
+
+EXTRA_DIST += \
+ gdtiled/CMakeLists.txt \
+ gdtiled/bug00032_exp.png
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 0e711533f10..4c788e235cc 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
@@ -2,21 +2,12 @@
#include <stdio.h>
#include "gdtest.h"
-#define exp_img "bug00032_exp.png"
-
-#ifdef _MSC_VER
-# define snprintf _snprintf
-#endif
-
int main()
{
gdImagePtr im, tile;
- char path[GDTEST_STRING_MAX];
gdSetErrorMethod(gdSilence);
- snprintf(path, GDTEST_STRING_MAX - 1, "%s/gdtiled/%s", GDTEST_TOP_DIR, exp_img);
-
tile = gdImageCreateTrueColor(10, 10);
gdImageFill(tile, 0, 0, 0xFFFFFF);
gdImageLine(tile, 0,0, 9,9, 0xff0000);
@@ -28,7 +19,7 @@ int main()
gdImageSetTile(im, tile);
gdImageFilledRectangle(im, 10, 10, 49, 49, gdTiled);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gdtiled/bug00032_exp.png", im)) {
gdImageDestroy(im);
gdImageDestroy(tile);
return 1;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt
new file mode 100644
index 00000000000..f5c5bb75b0a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+ github_bug_00221
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am
new file mode 100644
index 00000000000..e70b0735d12
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am
@@ -0,0 +1,6 @@
+
+libgd_test_programs += \
+ gdtransformaffineboundingbox/github_bug_00221
+
+EXTRA_DIST += \
+ gdtransformaffineboundingbox/CMakeLists.txt
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
new file mode 100644
index 00000000000..c327789d9f8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "gd.h"
+
+#include "gdtest.h"
+
+
+int main()
+{
+ gdRect bbox;
+ gdRect area;
+ double affine[6];
+
+ affine[0] = -0.965926;
+ affine[1] = -0.258819;
+ affine[2] = 0.258819;
+ affine[3] = -0.965926;
+ affine[4] = 0.000000;
+ affine[5] = 0.000000;
+ area.x = 0;
+ area.y = 0;
+ area.width = 262;
+ area.height = 166;
+ if (gdTransformAffineBoundingBox(&area, affine, &bbox) != GD_TRUE) {
+ return 1;
+ }
+ if (!(bbox.x ==-253 && bbox.y ==-228 && bbox.width == 298 && bbox.height == 230)) {
+ return 1;
+ }
+
+ return 0;
+}
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 a64f785d8e8..f9aa0e23c78 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
@@ -1,4 +1,3 @@
-
SET(TESTS_FILES
gif_im2im
gif_null
@@ -11,8 +10,4 @@ SET(TESTS_FILES
bug00227
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
new file mode 100644
index 00000000000..50f671fbceb
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
@@ -0,0 +1,25 @@
+libgd_test_programs += \
+ gif/bug00005_2 \
+ gif/bug00181 \
+ gif/bug00227 \
+ gif/gif_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gif/bug00005 \
+ gif/bug00006 \
+ gif/bug00060 \
+ gif/bug00066 \
+ gif/gif_im2im
+endif
+
+EXTRA_DIST += \
+ gif/CMakeLists.txt \
+ gif/bug00005_0.gif \
+ gif/bug00005_1.gif \
+ gif/bug00005_2.gif \
+ gif/bug00005_2_exp.png \
+ gif/bug00005_3.gif \
+ gif/bug00060.gif \
+ gif/bug00066.gif \
+ gif/bug00066_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c
index 1911e6a17a9..dd0ffce4f8b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c
@@ -11,17 +11,10 @@ int main()
FILE *fp;
int i = 0;
int error = 0;
- char path[1024];
+ char *path;
for (i=0; i < files_cnt; i++) {
- sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, giffiles[i]);
-
- fp = fopen(path, "rb");
- if (!fp) {
- gdTestErrorMsg("<%s> Input file does not exist!\n", path);
- return 1;
- }
-
+ fp = gdTestFileOpen2("gif", giffiles[i]);
im = gdImageCreateFromGif(fp);
fclose(fp);
@@ -29,10 +22,11 @@ int main()
if (!im) {
error = 1;
} else {
- sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, exp[i]);
+ path = gdTestFilePath2("gif", exp[i]);
if (!gdAssertImageEqualsToFile(path, im)) {
error = 1;
}
+ free(path);
gdImageDestroy(im);
}
} else {
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 57d7ad01611..f1a7fe86341 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
@@ -2,12 +2,11 @@
#include "gd.h"
#include "gdtest.h"
-#define TMP_FN "_tmp_bug0006.gif"
-
int main()
{
gdImagePtr im;
FILE *fp;
+ char *file;
const int r = 255, g = 0, b = 0;
int r_f,g_f,b_f, trans_c_f;
int trans_c = gdTrueColorAlpha(r,g,b,0);
@@ -22,9 +21,10 @@ int main()
gdImageColorTransparent(im, trans_c);
gdImageFilledRectangle(im, 0,0, 192,36, trans_c);
- fp = fopen(TMP_FN, "wb");
+ file = gdTestTempFile("bug0006.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing\n", TMP_FN);
+ gdTestErrorMsg("Cannot open <%s> for writing\n", file);
return 1;
}
gdImageGif(im,fp);
@@ -32,16 +32,16 @@ int main()
gdImageDestroy(im);
- fp = fopen(TMP_FN, "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading\n", TMP_FN);
+ gdTestErrorMsg("Cannot open <%s> for reading\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN);
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
@@ -60,8 +60,5 @@ int main()
/* Destroy it */
gdImageDestroy(im);
- if (remove(TMP_FN) == -1) {
- gdTestErrorMsg("Cannot remove file: <%s>\n", TMP_FN);
- }
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c
index 721d3bc401d..7a3316a2dc5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c
@@ -6,17 +6,7 @@
int main()
{
gdImagePtr im;
- FILE *fp;
- char path[1024];
-
- sprintf(path, "%s/gif/bug00060.gif", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
-
- if (!fp) {
- printf("cannot open <%s>\n", path);
- return -1;
- }
-
+ FILE *fp = gdTestFileOpen("gif/bug00060.gif");
im = gdImageCreateFromGif(fp);
fclose(fp);
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c
index be24066ca2e..9cddfef9829 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c
@@ -6,22 +6,13 @@ int main()
{
gdImagePtr im;
FILE *fp;
- char path[1024];
int error = 0;
- sprintf(path, "%s/gif/bug00066.gif", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
-
- if (!fp) {
- printf("cannot open <%s>\n", path);
- return -1;
- }
-
+ fp = gdTestFileOpen("gif/bug00066.gif");
im = gdImageCreateFromGif(fp);
fclose(fp);
- sprintf(path, "%s/gif/bug00066_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
+ if (!gdAssertImageEqualsToFile("gif/bug00066_exp.png", im)) {
error = 1;
}
gdImageDestroy(im);
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 27d6481175e..43b9e3b15c9 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
@@ -5,6 +5,7 @@
int main()
{
gdImagePtr im, im2, im3;
+ char *file;
FILE *fp;
int black, trans;
int error = 0;
@@ -16,28 +17,30 @@ int main()
return 1;
}
im->interlace = 1;
- fp = fopen("bug00181.gif", "wb");
+ file = gdTestTempFile("bug00181.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot open <%s> for writing.\n", file);
return 1;
}
gdImageGif(im, fp);
gdImageDestroy(im);
fclose(fp);
- fp = fopen("bug00181.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot open <%s> for reading.\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
error = !im->interlace;
gdImageDestroy(im);
+ free(file);
if (error) return error;
@@ -48,9 +51,10 @@ int main()
black = gdImageColorAllocate(im, 0, 0, 0);
trans = gdImageColorAllocate(im, 1, 1, 1);
gdImageRectangle(im, 0, 0, 10, 10, black);
- fp = fopen("bug00181a.gif", "wb");
+ file = gdTestTempFile("bug00181a.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot open <%s> for writing.\n", file);
return 1;
}
gdImageGifAnimBegin(im, fp, 1, 3);
@@ -75,15 +79,15 @@ int main()
gdImageDestroy(im2);
gdImageDestroy(im3);
- fp = fopen("bug00181a.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot open <%s> for reading.\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
error = !im->interlace;
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 861006e7447..e25bd9a92a8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
@@ -11,6 +11,7 @@
int main()
{
FILE *fp;
+ char *file;
gdImagePtr im0, im1, im2;
int i;
char *buf;
@@ -23,7 +24,8 @@ int main()
gdImageSetPixel(im0, i, 0, c);
}
- fp = fopen("bug00227.gif", "wb");
+ file = gdTestTempFile("bug00227.gif");
+ fp = fopen(file, "wb");
if (!fp) return 1;
gdImageGifAnimBegin(im0, fp, 0, 0);
@@ -55,7 +57,7 @@ int main()
gdImageDestroy(im2);
/* check the Global Color Table flag */
- fp = fopen("bug00227.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) return 1;
buf = malloc(PROBE_SIZE);
if (!buf) return 1;
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c b/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c
index a5b0adbdb85..00bd1372e80 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -23,39 +23,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GIF(name) do { \
- FILE *fp; \
- \
- fp = fopen("gif_im2im_" #name ".gif", "wb"); \
- if (fp) { \
- gdImageGif(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGif(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_GIF(src);
p = gdImageGifPtr(src, &size);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromGifPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_GIF(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
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 9151f609173..5effc8c0de6 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
@@ -1,14 +1,12 @@
-
+IF(JPEG_FOUND)
SET(TESTS_FILES
jpeg_im2im
jpeg_null
jpeg_read
jpeg_empty_file
jpeg_resolution
+ bug_github_18
)
+ENDIF(JPEG_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
new file mode 100644
index 00000000000..bc196b197ba
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
@@ -0,0 +1,21 @@
+if HAVE_LIBJPEG
+libgd_test_programs += \
+ jpeg/bug_github_18 \
+ jpeg/jpeg_empty_file \
+ jpeg/jpeg_im2im \
+ jpeg/jpeg_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ jpeg/jpeg_read \
+ jpeg/jpeg_resolution
+endif
+endif
+
+EXTRA_DIST += \
+ jpeg/CMakeLists.txt \
+ jpeg/conv_test.jpeg \
+ jpeg/conv_test_exp.png \
+ jpeg/empty.jpeg \
+ jpeg/github_bug_18_exp.jpeg \
+ jpeg/github_bug_18.png
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c b/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c
new file mode 100644
index 00000000000..e8f67af3a45
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include "gd.h"
+#include "gdtest.h"
+
+int main() {
+ gdImagePtr im, imres, imexp;
+ FILE *fp;
+ void *pjpeg;
+ unsigned int status = 0;
+ int size = 0;
+
+ fp = gdTestFileOpen("jpeg/github_bug_18.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
+
+ if (im == NULL) {
+ gdTestErrorMsg("gdImageCreateFromJpeg failed.\n");
+ return 1;
+ }
+
+ pjpeg = gdImageJpegPtr(im, &size, 100);
+ if (pjpeg == NULL) {
+ status = 1;
+ gdTestErrorMsg("p is null\n");
+ goto door2;
+ }
+
+ if (size <= 0) {
+ status = 1;
+ gdTestErrorMsg("size is non-positive\n");
+ goto door2;
+ }
+
+ imres = gdImageCreateFromJpegPtr(size, pjpeg);
+ if (imres == NULL) {
+ status = 1;
+ goto door2;
+ }
+
+ fp = gdTestFileOpen("jpeg/github_bug_18_exp.jpeg");
+ imexp = gdImageCreateFromJpeg(fp);
+ if (imexp == NULL) {
+ fclose(fp);
+ status = 1;
+ goto door1;
+ }
+
+ if (gdTestImageCompareToImage("jpeg/github_bug_18.png", __LINE__, __FILE__, imexp, imres) != 1) {
+ status = 1;
+ }
+ gdImageDestroy(imexp);
+
+door1:
+ gdImageDestroy(imres);
+
+door2:
+ gdFree(pjpeg);
+ gdImageDestroy(im);
+ return status;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png
new file mode 100644
index 00000000000..abb72a9c5df
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg
new file mode 100644
index 00000000000..450223a3606
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c
index 844dbf43d3e..12ce24110c4 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -8,17 +7,10 @@ int main()
{
gdImagePtr im;
FILE *fp;
- char path[1024];
gdSetErrorMethod(gdSilence);
- sprintf(path, "%s/jpeg/empty.jpeg", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
- if (!fp) {
- printf("failed, cannot open file\n");
- return 1;
- }
-
+ fp = gdTestFileOpen("jpeg/empty.jpeg");
im = gdImageCreateFromJpeg(fp);
fclose(fp);
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c
index 89a72be7ffd..9d113d103a0 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c
@@ -14,7 +14,7 @@ int main()
src = gdImageCreateTrueColor(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -25,32 +25,28 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_JPEG(name) do { \
- FILE *fp; \
- \
- fp = fopen("jpeg_im2im_" #name ".jpeg", "wb"); \
- if (fp) { \
- gdImageJpeg(name, fp, 100); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageJpeg(name, fp, 100); \
+ fclose(fp); \
} while (0)
OUTPUT_JPEG(src);
p = gdImageJpegPtr(src, &size, 100);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromJpegPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_JPEG(dst);
@@ -58,7 +54,7 @@ int main()
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
#endif
gdImageDestroy(dst);
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c
index 64130ce125a..42098fdda72 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c
@@ -1,14 +1,9 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
#include "gdtest.h"
#include <jpeglib.h>
-#ifdef _MSC_VER
-# define snprintf _snprintf
-#endif
-
int main()
{
#if defined(JPEG_LIB_VERSION_MAJOR) && JPEG_LIB_VERSION_MAJOR >= 8
@@ -16,16 +11,8 @@ int main()
return 0;
#else
gdImagePtr im;
- FILE *fp;
- char path[1024];
-
- snprintf(path, sizeof(path)-1, "%s/jpeg/conv_test.jpeg", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
- if (!fp) {
- gdTestErrorMsg("failed, cannot open file: %s\n", path);
- return 1;
- }
-
+ int error = 0;
+ FILE *fp = gdTestFileOpen("jpeg/conv_test.jpeg");
im = gdImageCreateFromJpeg(fp);
fclose(fp);
@@ -33,13 +20,10 @@ int main()
gdTestErrorMsg("gdImageCreateFromJpeg failed.\n");
return 1;
}
- snprintf(path, sizeof(path), "%s/jpeg/conv_test_exp.png", GDTEST_TOP_DIR);
- if (!gdAssertImageEqualsToFile(path, im)) {
- gdTestErrorMsg("gdAssertImageEqualsToFile failed: <%s>.\n", path);
- gdImageDestroy(im);
- return 1;
- }
+ if (!gdAssertImageEqualsToFile("jpeg/conv_test_exp.png", im))
+ error = 1;
- return 0;
+ gdImageDestroy(im);
+ return error;
#endif
}
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 128b51df0ce..5235417eaae 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+IF(PNG_FOUND)
SET(TESTS_FILES
png_im2im
png_null
@@ -9,9 +9,6 @@ SET(TESTS_FILES
bug00088
bug00193
)
+ENDIF(PNG_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..01c48036cc7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
@@ -0,0 +1,20 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ png/bug00011 \
+ png/bug00033 \
+ png/bug00086 \
+ png/bug00088 \
+ png/bug00193 \
+ png/png_im2im \
+ png/png_null \
+ png/png_resolution
+endif
+
+EXTRA_DIST += \
+ png/CMakeLists.txt \
+ png/bug00033.png \
+ png/bug00088_1.png \
+ png/bug00088_1_exp.png \
+ png/bug00088_2.png \
+ png/bug00088_2_exp.png \
+ png/emptyfile
diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00011.c b/Build/source/libs/gd/libgd-src/tests/png/bug00011.c
index 865c87ea5cd..f58ab61e2aa 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/bug00011.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/bug00011.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -8,14 +7,8 @@ int main()
{
gdImagePtr im;
FILE *fp;
- char path[2048];
- sprintf(path, "%s/png/emptyfile", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
- if (!fp) {
- fprintf(stderr, "failed, cannot open file: %s\n", path);
- return 1;
- }
+ fp = gdTestFileOpen("png/emptyfile");
im = gdImageCreateFromPng(fp);
fclose(fp);
diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00033.c b/Build/source/libs/gd/libgd-src/tests/png/bug00033.c
index f7e90f0824c..faf0a183590 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/bug00033.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/bug00033.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -8,17 +7,10 @@ int main()
{
gdImagePtr im;
FILE *fp;
- char path[1024];
gdSetErrorMethod(gdSilence);
- sprintf(path, "%s/png/bug00033.png", GDTEST_TOP_DIR);
- fp = fopen(path, "rb");
- if (!fp) {
- printf("failed, cannot open file <%s>\n", path);
- return 1;
- }
-
+ fp = gdTestFileOpen("png/bug00033.png");
im = gdImageCreateFromPng(fp);
fclose(fp);
diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00086.c b/Build/source/libs/gd/libgd-src/tests/png/bug00086.c
index ef9d43b2b56..f29b5d73e20 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/bug00086.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/bug00086.c
@@ -1,4 +1,3 @@
-/* $Id$ */
/* id: gdbad3.c, Xavier Roche, May. 2007 */
/* gcc gdbad3.c -o bad -lgd && ./bad */
@@ -17,7 +16,7 @@ int main(void)
if ( ( im = gdImageCreateFromPngPtr(93, (char*) &pngdata[0]) ) == NULL) {
return 0;
} else {
- fprintf(stderr, "failed!\n");
+ gdTestErrorMsg("failed!\n");
gdImageDestroy(im);
return 1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00088.c b/Build/source/libs/gd/libgd-src/tests/png/bug00088.c
index 78495aa4410..5c0ab5834a0 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/bug00088.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/bug00088.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -9,7 +8,7 @@ int main()
int error;
gdImagePtr im;
FILE *fp;
- char path[1024];
+ char *path;
const char * files[2] = {"bug00088_1.png", "bug00088_2.png"};
const char * files_exp[2] = {"bug00088_1_exp.png", "bug00088_2_exp.png"};
@@ -18,13 +17,7 @@ int main()
for (i = 0; i < cnt; i++) {
- sprintf(path, "%s/png/%s", GDTEST_TOP_DIR, files[i]);
- fp = fopen(path, "rb");
- if (!fp) {
- printf("failed, cannot open file <%s>\n", path);
- return 1;
- }
-
+ fp = gdTestFileOpen2("png", files[i]);
im = gdImageCreateFromPng(fp);
fclose(fp);
@@ -33,10 +26,12 @@ int main()
continue;
}
- sprintf(path, "%s/png/%s", GDTEST_TOP_DIR, files_exp[i]);
+ path = gdTestFilePath2("png", files_exp[i]);
+
if (!gdAssertImageEqualsToFile(path, im)) {
error |= 1;
}
+ free(path);
gdImageDestroy(im);
}
diff --git a/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c b/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c
index bac5e13aeb7..e02d057c220 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -23,39 +23,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_PNG(name) do { \
- FILE *fp; \
- \
- fp = fopen("png_im2im_" #name ".png", "wb"); \
- if (fp) { \
- gdImagePng(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImagePng(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_PNG(src);
p = gdImagePngPtr(src, &size);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromPngPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_PNG(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
diff --git a/Build/source/libs/gd/libgd-src/tests/test_config.h.in b/Build/source/libs/gd/libgd-src/tests/test_config.h.in
index c1bb988c842..f29f20a5d64 100644
--- a/Build/source/libs/gd/libgd-src/tests/test_config.h.in
+++ b/Build/source/libs/gd/libgd-src/tests/test_config.h.in
@@ -1,3 +1,9 @@
-/* Define the full path to the top src dir, required to get the path
- * of each input data */
-#define GDTEST_TOP_DIR "@srcdir@"
+#ifndef GD_TEST_CONFIG_H
+#define GD_TEST_CONFIG_H
+
+
+/* Define the full path to the top src dir, required to get the path
+ * of each input data */
+#define GDTEST_TOP_DIR "@srcdir@"
+#endif
+
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
index 48f9412fb09..695a812a401 100644
--- a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
@@ -1,10 +1,10 @@
-
SET(TESTS_FILES
tga_null
+ bug00084
+ bug00247
+ bug00247a
+ bug00248
+ bug00248a
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
new file mode 100644
index 00000000000..dff828fe395
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
@@ -0,0 +1,15 @@
+libgd_test_programs += \
+ tga/bug00084 \
+ tga/bug00247 \
+ tga/bug00247a \
+ tga/bug00248 \
+ tga/bug00248a \
+ tga/tga_null
+
+EXTRA_DIST += \
+ tga/CMakeLists.txt \
+ tga/bug00084.tga \
+ tga/bug00247.tga \
+ tga/bug00247a.tga \
+ tga/bug00248.tga \
+ tga/bug00248a.tga
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c
new file mode 100644
index 00000000000..7d4ca92457d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("tga/bug00084.tga");
+ im = gdImageCreateFromTga(fp);
+ gdImageDestroy(im);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga
new file mode 100644
index 00000000000..201e1450760
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c
new file mode 100644
index 00000000000..49b1610cc0f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("tga/bug00247.tga");
+ im = gdImageCreateFromTga(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga
new file mode 100644
index 00000000000..0fe4cac9eef
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c
new file mode 100644
index 00000000000..1c825f94c9f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c
@@ -0,0 +1,19 @@
+/*
+We test that a 8bpp TGA file will be gracefully rejected by
+gdImageCreateFromTga().
+*/
+
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("tga/bug00247a.tga");
+ im = gdImageCreateFromTga(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga
new file mode 100644
index 00000000000..65e55abeae2
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c
new file mode 100644
index 00000000000..5eb60464276
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main(int argc, char **argv)
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("tga/bug00248.tga");
+ im = gdImageCreateFromTga(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga
new file mode 100644
index 00000000000..f0a56f42e9f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c
new file mode 100644
index 00000000000..8308eb5160a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c
@@ -0,0 +1,16 @@
+/* See also <https://github.com/libgd/libgd/pull/257> */
+
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("tga/bug00248a.tga");
+ im = gdImageCreateFromTga(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga
new file mode 100644
index 00000000000..29c4e26951d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga
Binary files differ
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 da49800542e..1f4f4c06f28 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
@@ -1,11 +1,9 @@
-
+IF(TIFF_FOUND)
SET(TESTS_FILES
tiff_im2im
tiff_null
+ tiff_dpi
)
+ENDIF(TIFF_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..fd396990973
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
@@ -0,0 +1,9 @@
+if HAVE_LIBTIFF
+libgd_test_programs += \
+ tiff/tiff_dpi \
+ tiff/tiff_im2im \
+ tiff/tiff_null
+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
new file mode 100644
index 00000000000..347abf179a9
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+#ifdef _WIN32
+#include <stdio.h>
+int main()
+{
+ printf("skip");
+ return 0;
+}
+#else
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr src, dst;
+ int r, res_x, res_y;
+ void *p;
+ int size = 0;
+ int status = 0;
+
+ src = gdImageCreate(100, 100);
+ if (src == NULL) {
+ gdTestErrorMsg("could not create src\n");
+ return 1;
+ }
+ r = gdImageColorAllocate(src, 0xFF, 0, 0);
+ gdImageFilledRectangle(src, 0, 0, 99, 99, r);
+
+ // 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;
+ res_y = 200;
+ src->res_x = res_x;
+ src->res_y = res_y;
+
+#define OUTPUT_TIFF(name) do { \
+ FILE *fp = gdTestTempFp(); \
+ gdImageTiff(name, fp); \
+ fclose(fp); \
+ } while (0)
+
+ OUTPUT_TIFF(src);
+ p = gdImageTiffPtr(src, &size);
+ if (p == NULL) {
+ status = 1;
+ gdTestErrorMsg("p is null\n");
+ goto door0;
+ }
+ if (size <= 0) {
+ status = 1;
+ gdTestErrorMsg("size is non-positive\n");
+ goto door1;
+ }
+
+ dst = gdImageCreateFromTiffPtr(size, p);
+ if (dst == NULL) {
+ status = 1;
+ gdTestErrorMsg("could not create dst\n");
+ goto door1;
+ }
+
+ if (dst->res_x != res_x) {
+ status = 1;
+ gdTestErrorMsg("mismatch in res_x (got %d, expected %d)", dst->res_x, res_x);
+ }
+
+ if (dst->res_y != res_y) {
+ status = 1;
+ gdTestErrorMsg("mismatch in res_y (got %d, expected %d)", dst->res_y, res_y);
+ }
+
+ gdImageDestroy(dst);
+door1:
+ gdFree(p);
+door0:
+ gdImageDestroy(src);
+ return status;
+}
+#endif \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
index 4b6136d4b92..b6b240e3ce3 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
@@ -1,3 +1,11 @@
+#ifdef _WIN32
+#include <stdio.h>
+int main()
+{
+ printf("skip");
+ return 0;
+}
+#else
#include "gd.h"
#include "gdtest.h"
@@ -8,13 +16,11 @@ int main()
void *p;
int size = 0;
int status = 0;
-#if 0
CuTestImageResult result = {0, 0};
-#endif
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
r = gdImageColorAllocate(src, 0xFF, 0, 0);
@@ -25,42 +31,38 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_TIFF(name) do { \
- FILE *fp; \
- \
- fp = fopen("tiff_im2im_" #name ".tiff", "wb"); \
- if (fp) { \
- gdImageTiff(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageTiff(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_TIFF(src);
p = gdImageTiffPtr(src, &size);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromTiffPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_TIFF(dst);
-#if 0
+
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
printf("pixels changed: %d\n", result.pixels_changed);
}
-#endif
+
gdImageDestroy(dst);
door1:
gdFree(p);
@@ -68,3 +70,4 @@ door0:
gdImageDestroy(src);
return status;
}
+#endif \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
index ccaade7498f..19b64f771c3 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
@@ -1,3 +1,11 @@
+#ifdef _WIN32
+#include <stdio.h>
+int main()
+{
+ printf("skip");
+ return 0;
+}
+#else
#include "gd.h"
int main()
@@ -12,3 +20,4 @@ int main()
gdImageTiff(im, NULL); /* noop safely */
return 0;
}
+#endif \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
index 531933a8558..2c988680f8f 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 @@
-
SET(TESTS_FILES
wbmp_im2im
wbmp_null
)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+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
new file mode 100644
index 00000000000..fb12272cd83
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
@@ -0,0 +1,10 @@
+libgd_test_programs += \
+ wbmp/wbmp_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
+ wbmp/wbmp_im2im
+endif
+
+EXTRA_DIST += \
+ wbmp/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c b/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c
index 826c7fa953c..1b1ebb2452b 100644
--- a/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c
+++ b/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c
@@ -12,7 +12,7 @@ int main()
src = gdImageCreate(100, 100);
if (src == NULL) {
- printf("could not create src\n");
+ gdTestErrorMsg("could not create src\n");
return 1;
}
gdImageColorAllocate(src, 0xFF, 0xFF, 0xFF); /* allocate white for background color */
@@ -21,39 +21,35 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_WBMP(name) do { \
- FILE *fp; \
- \
- fp = fopen("wbmp_im2im_" #name ".wbmp", "wb"); \
- if (fp) { \
- gdImageWBMP(name, 1, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageWBMP(name, 1, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_WBMP(src);
p = gdImageWBMPPtr(src, &size, 1);
if (p == NULL) {
status = 1;
- printf("p is null\n");
+ gdTestErrorMsg("p is null\n");
goto door0;
}
if (size <= 0) {
status = 1;
- printf("size is non-positive\n");
+ gdTestErrorMsg("size is non-positive\n");
goto door1;
}
dst = gdImageCreateFromWBMPPtr(size, p);
if (dst == NULL) {
status = 1;
- printf("could not create dst\n");
+ gdTestErrorMsg("could not create dst\n");
goto door1;
}
OUTPUT_WBMP(dst);
gdTestImageDiff(src, dst, NULL, &result);
if (result.pixels_changed > 0) {
status = 1;
- printf("pixels changed: %d\n", result.pixels_changed);
+ gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
}
gdImageDestroy(dst);
door1:
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
new file mode 100644
index 00000000000..32e2c1d8347
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(WEBP_FOUND)
+SET(TESTS_FILES
+ bug00111
+)
+ENDIF(WEBP_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
new file mode 100644
index 00000000000..b03db6e239e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBWEBP
+libgd_test_programs += \
+ webp/bug00111
+endif
+
+EXTRA_DIST += \
+ webp/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c b/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c
new file mode 100644
index 00000000000..16f9504fbff
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c
@@ -0,0 +1,25 @@
+#include "gd.h"
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef _WIN32
+# include <unistd.h>
+#endif
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ im = gdImageCreateTrueColor(20, 20);
+ if (!im) {
+ return 0;
+ }
+
+ fp = gdTestTempFp();
+ gdImageWebp(im, fp);
+ fclose(fp);
+
+ 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
new file mode 100644
index 00000000000..183cf5eaf3f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+ github_bug_170
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
new file mode 100644
index 00000000000..ba1eabd5bd4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ xbm/github_bug_170
+
+EXTRA_DIST += \
+ xbm/CMakeLists.txt
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
new file mode 100644
index 00000000000..3900da7b1b6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
@@ -0,0 +1,50 @@
+/*
+ Test writing of XBM images with a width that is not a multiple of 8
+
+ We create an image with a width of 11 pixels, and draw a circle on it.
+ To test that the padding is correctly applied, we write the image to disk
+ and assert that the number of bytes written matches our expectation.
+
+ See also <https://github.com/libgd/libgd/issues/170>.
+*/
+
+#include <inttypes.h>
+#include "gd.h"
+#include "gdtest.h"
+#ifdef _WIN32
+
+int main()
+{
+ /* skip for now */
+ return 0;
+}
+#else
+int main()
+{
+ gdImagePtr im;
+ int black;
+ FILE *outFile;
+ gdIOCtx *out;
+ off_t length;
+
+ /* create the test image */
+ im = gdImageCreate(11, 11);
+ gdImageColorAllocate(im, 255, 255, 255);
+ black = gdImageColorAllocate(im, 0, 0, 0);
+ gdImageArc(im, 5, 5, 10, 10, 0, 360, black);
+
+ /* write the file to disk, note the file length and delete the file */
+ outFile = gdTestTempFp();
+ out = gdNewFileCtx(outFile);
+ gdTestAssert(out != NULL);
+ gdImageXbmCtx(im, "github_bug_170.xbm", 1, out);
+ out->gd_free(out);
+ length = ftello(outFile);
+ fclose(outFile);
+
+ gdImageDestroy(im);
+
+ gdTestAssertMsg(length == 250, "expected to write 250 bytes; %jd bytes written", (intmax_t) length);
+ return gdNumFailures();
+}
+#endif \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
index e0a789c807b..1301bc3f824 100644
--- a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
@@ -1,12 +1,9 @@
-
+IF(XPM_FOUND)
SET(TESTS_FILES
bug00166
bug00185
color_name
)
+ENDIF(XPM_FOUND)
-FOREACH(test_name ${TESTS_FILES})
- add_executable(${test_name} "${test_name}.c")
- target_link_libraries (${test_name} gdTest)
- add_test(NAME ${test_name} COMMAND ${test_name})
-ENDFOREACH(test_name)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am
new file mode 100644
index 00000000000..39350a6ffdd
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am
@@ -0,0 +1,13 @@
+if HAVE_LIBXPM
+libgd_test_programs += \
+ xpm/bug00166 \
+ xpm/bug00185 \
+ xpm/color_name
+endif
+
+EXTRA_DIST += \
+ xpm/CMakeLists.txt \
+ xpm/bug00166.xpm \
+ xpm/bug00185.xpm \
+ xpm/bug00185_damaged.xpm \
+ xpm/color_name.xpm
diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c b/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c
index 2ffd6af25a2..f4cf7d1ce59 100644
--- a/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c
+++ b/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -8,11 +7,12 @@ int
main(void)
{
gdImagePtr im;
- char path[1024];
+ char *path;
int c, result;
- sprintf(path, "%s/xpm/bug00166.xpm", GDTEST_TOP_DIR);
+ path = gdTestFilePath("xpm/bug00166.xpm");
im = gdImageCreateFromXpm(path);
+ free(path);
if (!im) {
return 2;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c b/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c
index 2dda809cc96..3056ed950ea 100644
--- a/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c
+++ b/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -9,15 +8,17 @@ int
main()
{
gdImagePtr im;
- char path[1024];
+ char *path;
- sprintf(path, "%s/xpm/bug00185.xpm", GDTEST_TOP_DIR);
+ path = gdTestFilePath("xpm/bug00185.xpm");
im = gdImageCreateFromXpm(path);
+ free(path);
if (!im) return 1;
gdImageDestroy(im);
- sprintf(path, "%s/xpm/bug00185_damaged.xpm", GDTEST_TOP_DIR);
+ path = gdTestFilePath("xpm/bug00185_damaged.xpm");
im = gdImageCreateFromXpm(path);
+ free(path);
if (!im) return 0;
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c b/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c
index 22481785a83..894b4b7871a 100644
--- a/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c
+++ b/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c
@@ -1,4 +1,3 @@
-/* $Id$ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
@@ -8,11 +7,12 @@ int
main(void)
{
gdImagePtr im;
- char path[1024];
+ char *path;
int c, result;
- sprintf(path, "%s/xpm/color_name.xpm", GDTEST_TOP_DIR);
+ path = gdTestFilePath("xpm/color_name.xpm");
im = gdImageCreateFromXpm(path);
+ free(path);
if (!im) {
return 2;
}
diff --git a/Build/source/libs/gd/libgd-src/thumbs.bat b/Build/source/libs/gd/libgd-src/thumbs.bat
deleted file mode 100644
index 6e94aa42a50..00000000000
--- a/Build/source/libs/gd/libgd-src/thumbs.bat
+++ /dev/null
@@ -1,37 +0,0 @@
-@echo off
-rem thumbs wrapper for windows; see main file for details
-
-
-rem find bash from git
-rem assumes git is in [gitdir]\cmd
-rem and msys in [gitdir]\bin
-
-for %%i in (git.exe) do set gitexe=%%~$PATH:i
-pushd "%gitexe%\..\..\bin"
-set bashdir=%cd%
-popd
-set path=%bashdir%;%path%
-
-
-rem copy all known env vars to bash
-
-setlocal enableDelayedExpansion
-set exports=
-
-for %%i in (tbs_conf tbs_arch tbs_tools tbs_static_runtime) do (
- if not [!%%i!]==[] (
- set exports=!exports!export %%i=!%%i!;
- )
-)
-
-rem copy dep settings
-
-for %%i in (zlib libjpeg_turbo libpng libtiff freetype libiconv) do (
- for %%j in (repo incdir libdir built) do (
- if not [!tbsd_%%i_%%j!]==[] (
- set exports=!exports!export tbsd_%%i_%%j=!tbsd_%%i_%%j!;
- )
- )
-)
-
-bash -c "%exports%./thumbs.sh %*"
diff --git a/Build/source/libs/gd/libgd-src/thumbs.sh b/Build/source/libs/gd/libgd-src/thumbs.sh
deleted file mode 100755
index f898ef50f74..00000000000
--- a/Build/source/libs/gd/libgd-src/thumbs.sh
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/bin/bash
-
-# THe Ultimate Make Bash Script
-# Used to wrap build scripts for easy dep
-# handling and multiplatform support
-
-
-# Basic usage on *nix:
-# export tbs_arch=x86
-# ./thumbs.sh make
-
-
-# On Win (msvc 2013):
-# C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall x86_amd64
-# SET tbs_tools=msvc12
-# thumbs make
-
-# On Win (mingw32):
-# SET path=C:\mingw32\bin;%path%
-# SET tbs_tools=mingw
-# SET tbs_arch=x86
-# thumbs make
-
-
-# Global settings are stored in env vars
-# Should be inherited
-
-[ $tbs_conf ] || export tbs_conf=Release
-[ $tbs_arch ] || export tbs_arch=x64
-[ $tbs_tools ] || export tbs_tools=gnu
-[ $tbs_static_runtime ] || export tbs_static_runtime=0
-
-[ $tbs_gd_png ] || export tbs_gd_png=1
-[ $tbs_gd_jpeg ] || export tbs_gd_jpeg=1
-[ $tbs_gd_freetype ] || export tbs_gd_freetype=1
-[ $tbs_gd_tiff ] || export tbs_gd_tiff=1
-
-
-# tbsd_* contains dep related settings
-# tbsd_[name]_* contains settings specific to the dep
-# name should match the repo name
-
-# deps contains a map of what should be built/used
-# keep the keys in sync ... no assoc arrays on msys :/
-# targ contains a target for each dep (default=empty str)
-# post is executed after each thumbs dep build
-# ^ used for copying/renaming any libs you need - uses eval
-
-zname=zlib.lib
-jname=jpeg.lib
-pname=png.lib
-tname=tiff.lib
-fname=freetype.lib
-
-if [ $tbs_tools = gnu -o $tbs_tools = mingw ]
-then
- zname=libz.a
- jname=libjpeg.a
- pname=libpng.a
- tname=libtiff.a
- fname=libfreetype.a
-fi
-
-deps=()
-targ=()
-post=()
-
-[ $tbsd_zlib_repo ] || export tbsd_zlib_repo="https://github.com/imazen/zlib"
-[ $tbsd_libpng_repo ] || export tbsd_libpng_repo="https://github.com/imazen/libpng"
-[ $tbsd_libjpeg_turbo_repo ] || export tbsd_libjpeg_turbo_repo="https://github.com/imazen/libjpeg-turbo libjpeg_turbo"
-[ $tbsd_libtiff_repo ] || export tbsd_libtiff_repo="https://github.com/imazen/libtiff"
-[ $tbsd_freetype_repo ] || export tbsd_freetype_repo="https://github.com/imazen/freetype"
-
-if [[ "$OSTYPE" == "darwin"* ]]; then cp="rsync"
-else cp="cp"
-fi
-
-deps+=(zlib); targ+=(zlibstatic)
-post+=("$cp -u \$(./thumbs.sh list_slib) ../../deps/$zname")
-
-if [ $tbs_gd_png -gt 0 ]; then
- deps+=(libpng); targ+=(png16_static)
- post+=("$cp -u \$(./scripts/thumbs.sh list_slib) ../../deps/$pname")
-fi
-
-if [ $tbs_gd_jpeg -gt 0 ]; then
- deps+=(libjpeg_turbo); targ+=(jpeg_static)
- post+=("for lib in \$(./thumbs.sh list_slib); do [ -f \$lib ] && $cp -u \$lib ../../deps/$jname; done")
-fi
-
-if [ $tbs_gd_tiff -gt 0 ]; then
- ttarg="libtiff/tiff_static"
- [ $tbs_tools = gnu -o $tbs_tools = mingw ] && ttarg=tiff_static
- deps+=(libtiff); targ+=($ttarg)
- post+=("$cp -u \$(./thumbs.sh list_slib) ../../deps/$tname")
-fi
-
-if [ $tbs_gd_freetype -gt 0 ]; then
- deps+=(freetype); targ+=("freetype_static")
- post+=("$cp -u \$(./thumbs.sh list_slib) ../../deps/$fname")
-fi
-
-
-
-# -----------
-# dep processor
-
-process_deps()
-{
- mkdir build_deps
- mkdir deps
- cd build_deps
-
- for key in "${!deps[@]}"
- do
- dep=${deps[$key]}
- i_dep_repo="tbsd_${dep}_repo"
- i_dep_incdir="tbsd_${dep}_incdir"
- i_dep_libdir="tbsd_${dep}_libdir"
- i_dep_built="tbsd_${dep}_built"
-
- [ ${!i_dep_built} ] || export "${i_dep_built}=0"
-
- if [ ${!i_dep_built} -eq 0 ]
- then
- git clone ${!i_dep_repo} --depth 1
- cd $dep || exit 1
-
- thumbs="./thumbs.sh"
- [ ! -f $thumbs ] && thumbs=$(find . -name thumbs.sh -maxdepth 2)
-
- $thumbs make ${targ[$key]} || exit 1
-
- # copy any includes and do poststep
- $cp -u -r $($thumbs list_inc) ../../deps
- eval ${post[$key]}
-
- # look in both local and parent dep dirs
- export "${i_dep_incdir}=../../deps;deps"
- export "${i_dep_libdir}=../../deps;deps"
- export "${i_dep_built}=1"
-
- cd ..
- fi
- done
-
- export "${i_dep_incdir}=../../deps/freetype;deps/freetype"
-
- cd ..
-}
-
-# -----------
-# constructs dep dirs for cmake
-
-postproc_deps()
-{
- cm_inc=
- cm_lib=
-
- for dep in "${deps[@]}"
- do
- i_dep_incdir="tbsd_${dep}_incdir"
- i_dep_libdir="tbsd_${dep}_libdir"
-
- cm_inc="${!i_dep_incdir};$cm_inc"
- cm_lib="${!i_dep_libdir};$cm_lib"
- done
-
- cm_args+=(-DCMAKE_LIBRARY_PATH=$cm_lib)
- cm_args+=(-DCMAKE_INCLUDE_PATH=$cm_inc)
-}
-
-# -----------
-
-if [ $# -lt 1 ]
-then
- echo ""
- echo " Usage : ./thumbs [command]"
- echo ""
- echo " Commands:"
- echo " make - builds everything"
- echo " check - runs tests"
- echo " clean - removes build files"
- echo " list - echo paths to any interesting files"
- echo " space separated; relative"
- echo " list_bin - echo binary paths"
- echo " list_inc - echo lib include files"
- echo " list_slib - echo static lib path"
- echo " list_dlib - echo dynamic lib path"
- echo ""
- exit
-fi
-
-# -----------
-
-upper()
-{
- echo $1 | tr [:lower:] [:upper:]
-}
-
-# Local settings
-
-l_inc="./src/gd.h ./src/gd_io.h ./src/gdfx.h"
-l_slib=
-l_dlib=
-l_bin=
-list=
-
-make=
-c_flags=
-cm_tools=
-cm_args=(-DCMAKE_BUILD_TYPE=$tbs_conf)
-cm_args+=(-DBUILD_TEST=1)
-cm_args+=(-DENABLE_PNG=$tbs_gd_png)
-cm_args+=(-DENABLE_JPEG=$tbs_gd_jpeg)
-cm_args+=(-DENABLE_FREETYPE=$tbs_gd_freetype)
-cm_args+=(-DENABLE_TIFF=$tbs_gd_tiff)
-
-target=
-[ $2 ] && target=$2
-
-# -----------
-
-case "$tbs_tools" in
-msvc12)
- cm_tools="Visual Studio 12"
- [ "$target" = "" ] && mstrg="GD.sln" || mstrg="$target.vcxproj"
- make="msbuild.exe $mstrg //p:Configuration=$tbs_conf //v:m"
-
- l_slib="./build/Bin/$tbs_conf/libgd_static.lib"
- l_dlib="./build/Bin/$tbs_conf/libgd.lib"
- l_bin="./build/Bin/$tbs_conf/libgd.dll"
- list="$l_bin $l_slib $l_dlib $l_inc" ;;
-gnu)
- cm_tools="Unix Makefiles"
- c_flags+=" -fPIC"
- make="make $target"
- l_slib="./build/Bin/libgd.a"
- l_dlib="./build/Bin/libgd.so"
- l_bin="$l_dlib"
- list="$l_slib $l_dlib $l_inc" ;;
-mingw)
- cm_tools="MinGW Makefiles"
- make="mingw32-make $target"
- c_flags+=" -fkeep-inline-functions"
-
- # allow sh in path; some old cmake/mingw bug?
- cm_args+=(-DCMAKE_SH=)
-
- l_slib="./build/Bin/liblibgd.a"
- l_dlib="./build/Bin/liblibgd.dll.a"
- l_bin="./build/Bin/liblibgd.dll"
- list="$l_bin $l_slib $l_dlib $l_inc" ;;
-
-*) echo "Tool config not found for $tbs_tools"
- exit 1 ;;
-esac
-
-# -----------
-
-case "$tbs_arch" in
-x64)
- [ $tbs_tools = msvc12 ] && cm_tools="$cm_tools Win64"
- [ $tbs_tools = gnu -o $tbs_tools = mingw ] && c_flags+=" -m64" ;;
-x86)
- [ $tbs_tools = gnu -o $tbs_tools = mingw ] && c_flags+=" -m32" ;;
-
-*) echo "Arch config not found for $tbs_arch"
- exit 1 ;;
-esac
-
-# -----------
-
-if [ $tbs_static_runtime -gt 0 ]
-then
- [ $tbs_tools = msvc12 ] && c_flags+=" /MT"
- [ $tbs_tools = gnu ] && cm_args+=(-DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc -static-libstdc++")
- [ $tbs_tools = mingw ] && cm_args+=(-DCMAKE_SHARED_LINKER_FLAGS="-static")
-fi
-
-# -----------
-
-case "$1" in
-make)
- process_deps
- postproc_deps
-
- mkdir build
- cd build
-
- cm_args+=(-DCMAKE_C_FLAGS_$(upper $tbs_conf)="$c_flags")
- cm_args+=(-DCMAKE_CXX_FLAGS_$(upper $tbs_conf)="$c_flags")
-
- cmake -G "$cm_tools" "${cm_args[@]}" .. || exit 1
- $make || exit 1
-
- cd ..
- ;;
-
-check)
- cd build
- ctest -C $tbs_conf . || exit 1
- cd ..
- ;;
-
-clean)
- rm -rf deps
- rm -rf build_deps
- rm -rf build
- ;;
-
-list) echo $list;;
-list_bin) echo $l_bin;;
-list_inc) echo $l_inc;;
-list_slib) echo $l_slib;;
-list_dlib) echo $l_dlib;;
-
-*) echo "Unknown command $1"
- exit 1;;
-esac
diff --git a/Build/source/libs/gd/libgd-src/windows/Makefile.vc b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
index be02557fc92..afc0e3c753c 100644
--- a/Build/source/libs/gd/libgd-src/windows/Makefile.vc
+++ b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
@@ -1,183 +1,217 @@
-# To build locally get a copy of the dependancies (https://github.com/imazen/gd-win-dependencies)
-# Then run 'nmake /f windows\Makefile.vc' in MS dev console
-# To build tests as well 'nmake /f windows\Makefile.vc all'
-# To build tests and execute them 'nmake /f windows\Makefile.vc check'
-
-CC=cl
-LD=link
-LB=lib
-
-
-!IFNDEF PLATFORM
-PLATFORM=x86
-!ENDIF
-# detect x64 cross-compiler env
-!IF "$(PREFERREDTOOLARCHITECTURE)" == "x64"
-PLATFORM=x64
-!ENDIF
-PLATFORM=$(PLATFORM:X=x)
-
-
-BUILD_DIR=build_msvc12_$(PLATFORM)
-GD_DLL=libgd.dll
-GD_LIB=libgd_a.lib
-
-SDR=$(BUILD_DIR)\obj^\
-TDR=$(BUILD_DIR)\tests^\
-TARGETDLL=$(BUILD_DIR)\$(GD_DLL)
-TARGETLIB=$(BUILD_DIR)\$(GD_LIB)
-
-OBJECTS=$(SDR)gd.obj $(SDR)gd_color.obj $(SDR)gd_color_map.obj $(SDR)gd_transform.obj $(SDR)gdfx.obj $(SDR)gd_security.obj $(SDR)gd_gd.obj $(SDR)gd_gd2.obj $(SDR)gd_io.obj $(SDR)gd_io_dp.obj $(SDR)gd_gif_in.obj $(SDR)gd_gif_out.obj $(SDR)gd_io_file.obj $(SDR)gd_io_ss.obj $(SDR)gd_jpeg.obj $(SDR)gd_png.obj $(SDR)gd_ss.obj $(SDR)gd_topal.obj $(SDR)gd_wbmp.obj $(SDR)gdcache.obj $(SDR)gdfontg.obj $(SDR)gdfontl.obj $(SDR)gdfontmb.obj $(SDR)gdfonts.obj $(SDR)gdfontt.obj $(SDR)gdft.obj $(SDR)gdhelpers.obj $(SDR)gdkanji.obj $(SDR)gdtables.obj $(SDR)gdxpm.obj $(SDR)wbmp.obj $(SDR)gd_filter.obj $(SDR)gd_nnquant.obj $(SDR)gd_rotate.obj $(SDR)gd_matrix.obj $(SDR)gd_interpolation.obj $(SDR)gd_crop.obj $(SDR)webpimg.obj $(SDR)gd_webp.obj $(SDR)gd_tiff.obj $(SDR)gd_tga.obj $(SDR)gd_bmp.obj $(SDR)gd_xbm.obj $(SDR)gd_color_match.obj $(SDR)gd_version.obj $(SDR)gd_filename.obj
-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 gdimagearc\bug00079 gdimagecolorclosest\gdimagecolorclosest gdimagecolordeallocate\gdimagecolordeallocate gdimagecolorexact\gdimagecolorexact gdimagecolorreplace\gdimagecolorreplace gdimagecolorresolve\gdimagecolorresolve gdimagecolortransparent\gdimagecolortransparent gdimagecopy\bug00007 gdimagecopy\bug00081 gdimagecopyrotated\bug00020 gdimagefile\gdnametest gdimagefill\bug00002_1 gdimagefill\bug00002_2 gdimagefill\bug00002_3 gdimagefill\bug00002_4 gdimagefilledellipse\bug00010 gdimagefilledellipse\bug00191 gdimagefilledpolygon\bug00100 gdimagefilledpolygon\gdimagefilledpolygon0 gdimagefilledpolygon\gdimagefilledpolygon1 gdimagefilledpolygon\gdimagefilledpolygon2 gdimagefilledpolygon\gdimagefilledpolygon3 gdimagefilledrectangle\bug00004 gdimagefilledrectangle\bug00078 gdimagefilledrectangle\bug00106_gdimagefilledrectangle gdimagefilltoborder\bug00037 gdimagefilter\gdCopyBlurred gdimageline\bug00072 gdimageline\bug00077 gdimageline\bug00111 gdimageline\gdImageAALine_thickness gdimageline\gdimageline_aa gdimageline\gdimageline_aa_outofrange gdimageline\gdimageline_bug5 gdimageopenpolygon\gdimageopenpolygon0 gdimageopenpolygon\gdimageopenpolygon1 gdimageopenpolygon\gdimageopenpolygon2 gdimageopenpolygon\gdimageopenpolygon3 gdimagepixelate\gdimagepixelate gdimagepolygon\gdimagepolygon0 gdimagepolygon\gdimagepolygon1 gdimagepolygon\gdimagepolygon2 gdimagepolygon\gdimagepolygon3 gdimagerectangle\bug00003 gdimagerectangle\bug00106_gdimagerectangle gdimagerotate\bug00067 gdimagerotate\php_bug_64898 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 gif\bug00005 gif\bug00005_2 gif\bug00006 gif\bug00060 gif\bug00066 gif\bug00181 gif\bug00227 gif\gif_im2im gif\gif_null 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\tga_null
-#tiff\tiff_im2im tiff\tiff_null wbmp\wbmp_im2im wbmp\wbmp_null xpm\bug00166 xpm\bug00185 xpm\color_name
-
-LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib Gdi32.Lib
-LIBS_GD=turbojpeg-static.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib
-
-INCLUDES=/Isrc /Igd-win-dependencies\$(PLATFORM)\include -Igd-win-dependencies\$(PLATFORM)\include\libjpeg-turbo -Igd-win-dependencies\$(PLATFORM)\include\libpng15 -Igd-win-dependencies\$(PLATFORM)\include\freetype /Itests /Itests\gdtest
-
-LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:gd-win-dependencies\$(PLATFORM)\lib /MACHINE:$(PLATFORM)
-
-CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC\
- /DWIN32=1\
- /D_WIN32=1\
- /DMSWIN32=1\
- /DBGDWIN32=1\
- /DHAVE_FT2BUILD_H=1\
- /DHAVE_GD_H=1\
- /DHAVE_PNG_H=1\
- /DHAVE_ICONV_H=1\
- /DHAVE_GD_BUNDLED=1\
- /DHAVE_LIBFREETYPE=1\
- /DHAVE_LIBJPEG=1\
- /DHAVE_LIBPNG=1\
- /DHAVE_LIBZ=1\
- $(INCLUDES)
-
-# /DHAVE_LIBXPM
-
-# These flags are not present in this fork of libgd (they may be used in php's):
-# /DHAVE_GD_WBMP
-# /DHAVE_GD_GIF_READ=1\
-# /DHAVE_GD_GIF_CREATE=1\
-# /DHAVE_GD_GD2=1\
-# /DHAVE_GDIMAGECOLORRESOLVE=1\
-# /DHAVE_GD_IMAGESETBRUSH=1\
-# /DHAVE_GD_IMAGESETTILE=1\
-# /DHAVE_GD_FONTCACHESHUTDOWN=1\
-# /DHAVE_GD_FONTMUTEX=1\
-# /DHAVE_GD_STRINGFTEX=1\
-# /DHAVE_GD_STRINGTTF=1\
-# /DHAVE_GD_FREETYPE=1\
-# /DHAVE_LIBGD13=1\
-# /DHAVE_LIBGD15=1\
-# /DHAVE_LIBGD20=1\
-# /DHAVE_LIBGD204=1\
-# /DHAVE_COLORCLOSESTHWB\
-# /DUSE_GD_IMGSTRTTF\
-# /DUSE_GD_IOCTX\
-# /DHAVE_GD_JPG\
-# /DHAVE_GD_PNG\
-# /DHAVE_GD_DYNAMIC_CTX_EX=1\
-# /DHAVE_XPM\
-# /DHAVE_GD_XBM\
-# /DHAVE_GD_XPM\
-# /DHAVE_XPM_H=1\
-
-# These flags may be set wrong; not sure of precise purpose
-# HAVE_GD_BUNDLED
-# NDEBUG
-
-
-
-
-
-TEST_CFLAGS=$(CFLAGS) /FItest_config.h
-TEST_LDFLAGS=$(LDFLAGS) $(SDR)gdtest.obj $(BUILD_DIR)\libgd.lib
-TEST_CONFIG=tests\test_config.h
-TEST_LIST=$(TDR)testlist.txt
-TEST_MK=$(TDR)Maketests.vc
-
-
-
-# generate test makefile from TESTS macro
-
-!IF [if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)]
-!ENDIF
-!IF [if not exist $(TDR) mkdir $(TDR)]
-!ENDIF
-!IF [@copy NUL $(TEST_MK) > nul]
-!ENDIF
-!IF [@for %F in ($(TESTS)) do @echo TEST_EXES=$(TDR)%~nF.exe ^$(TEST_EXES) >> $(TEST_MK)]
-!ENDIF
-!IF [@for %F in ($(TESTS)) do @echo $(SDR)%~nF.obj: tests\%F.c; @^$(CC) ^$(TEST_CFLAGS) /c ^$** /Fo:^$@ >> $(TEST_MK)]
-!ENDIF
-!IF [@for %F in ($(TESTS)) do @echo $(TDR)%~nF.exe: $(SDR)%~nF.obj; @$(LD) $(TEST_LDFLAGS) ^$** /out:^$@ >> $(TEST_MK)]
-!ENDIF
-TEST_OBJS=$(TEST_EXES:tests=obj)
-TEST_OBJS=$(TEST_OBJS:exe=obj)
-
-
-
-
-
-
-# pseudotargets
-
-build_libs: make_dirs $(TARGETDLL) $(TARGETLIB)
-all: build_libs build_tests
-check: all run_tests
-
-clean:
- @if exist $(SDR) rd $(SDR) /s /q
- @if exist $(TDR) rd $(TDR) /s /q
- @if exist $(BUILD_DIR)\*.exe del $(BUILD_DIR)\*.exe /q
- @if exist tests\test_config.h del tests\test_config.h /q
-
-
-
-
-# helpers
-
-make_dirs:
- @if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
- @if not exist $(SDR) mkdir $(SDR)
-
-run_tests:
- @windows\run_tests
-
-
-
-
-# libgd
-
-$(TARGETDLL): $(OBJECTS)
- @$(LD) /DLL /OUT:$@ $(OBJECTS) $(LIBS_GD) $(LIBS) $(LDFLAGS)
-
-$(TARGETLIB): $(OBJECTS)
- @$(LB) /OUT:$@ $(OBJECTS) $(LDFLAGS)
-
-{src\}.c{$(SDR)}.obj::
- @$(CC) $(CFLAGS) /c $< /Fo$(SDR)
-
-
-
-
-# tests
-
-!INCLUDE $(TEST_MK)
-
-build_tests: $(TEST_LIST) $(SDR)gdtest.obj $(TEST_EXES)
-
-$(SDR)gdtest.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\gdtest.c
- @$(CC) $(CFLAGS) /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj
-
-$(TEST_CONFIG):
- @echo #define GDTEST_TOP_DIR "$(MAKEDIR:\=\\)\\tests" > tests\test_config.h
- @echo #define snprintf _snprintf >> tests\test_config.h
-
-$(TEST_LIST): $(TARGETDLL)
- @if not exist $(TDR) mkdir $(TDR)
- @copy $(TARGETDLL) $(TDR)$(GD_DLL)
- @copy NUL $(TDR)testlist.txt
- @for %%F in ($(TESTS)) do @echo %%F >> $(TDR)testlist.txt \ No newline at end of file
+# To build locally get a copy of the dependancies (http://windows.php.net/downloads/php-sdk/deps/)
+# These are the dependencies used by PHP and largely used and tested. These binaries are built using
+# the sources available at https://github.com/winlibs
+# Then run 'nmake /f windows\Makefile.vc' in MS dev console
+# To build tests as well 'nmake /f windows\Makefile.vc all'
+# To build tests and execute them 'nmake /f windows\Makefile.vc check'
+
+CC=cl
+LD=link
+LB=lib
+
+!IFNDEF DEBUG
+DEBUG=0
+!ENDIF
+
+!IFNDEF WITH_DEVEL
+WITH_DEVEL=..\deps
+!ENDIF
+
+!IFNDEF WITH_BUILD
+WITH_BUILD=..\gdbuild
+!ENDIF
+
+LIBGD_SRC_DIR=src
+LIBGD_OBJ_DIR=$(WITH_BUILD)
+LIBGD_BIN_DIR=$(WITH_BUILD)\bin
+LIBGD_TEST_DIR=test
+
+!IFNDEF PLATFORM
+PLATFORM=x86
+!ENDIF
+# detect x64 cross-compiler env
+!IF "$(PREFERREDTOOLARCHITECTURE)" == "x64"
+PLATFORM=x64
+!ENDIF
+PLATFORM=$(PLATFORM:X=x)
+
+BUILD_DIR=$(WITH_BUILD)
+
+!MESSAGE library source: $(LIBGD_SRC_DIR)
+
+GD_DLL=libgd.dll
+GD_LIB=libgd_a.lib
+
+SDR=$(BUILD_DIR)^\
+TDR=$(BUILD_DIR)\tests^\
+TARGETDLL=$(BUILD_DIR)\$(GD_DLL)
+TARGETLIB=$(BUILD_DIR)\$(GD_LIB)
+
+LIB_OBJS= \
+ $(LIBGD_OBJ_DIR)\gd.obj \
+ $(LIBGD_OBJ_DIR)\gdcache.obj \
+ $(LIBGD_OBJ_DIR)\gd_color.obj \
+ $(LIBGD_OBJ_DIR)\gd_color_match.obj \
+ $(LIBGD_OBJ_DIR)\gdfontg.obj \
+ $(LIBGD_OBJ_DIR)\gdfontl.obj \
+ $(LIBGD_OBJ_DIR)\gdfontmb.obj \
+ $(LIBGD_OBJ_DIR)\gdfonts.obj \
+ $(LIBGD_OBJ_DIR)\gdfontt.obj \
+ $(LIBGD_OBJ_DIR)\gdft.obj \
+ $(LIBGD_OBJ_DIR)\gdfx.obj \
+ $(LIBGD_OBJ_DIR)\gd_filename.obj \
+ $(LIBGD_OBJ_DIR)\gd_filter.obj \
+ $(LIBGD_OBJ_DIR)\gd_bmp.obj \
+ $(LIBGD_OBJ_DIR)\gd_gd2.obj \
+ $(LIBGD_OBJ_DIR)\gd_gd.obj \
+ $(LIBGD_OBJ_DIR)\gd_gif_in.obj \
+ $(LIBGD_OBJ_DIR)\gd_gif_out.obj \
+ $(LIBGD_OBJ_DIR)\gdhelpers.obj \
+ $(LIBGD_OBJ_DIR)\gd_io.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_dp.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_file.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_ss.obj \
+ $(LIBGD_OBJ_DIR)\gd_jpeg.obj \
+ $(LIBGD_OBJ_DIR)\gd_security.obj \
+ $(LIBGD_OBJ_DIR)\gd_tga.obj \
+ $(LIBGD_OBJ_DIR)\gd_tiff.obj \
+ $(LIBGD_OBJ_DIR)\gd_xbm.obj \
+ $(LIBGD_OBJ_DIR)\gdkanji.obj \
+ $(LIBGD_OBJ_DIR)\gd_nnquant.obj \
+ $(LIBGD_OBJ_DIR)\gd_png.obj \
+ $(LIBGD_OBJ_DIR)\gd_ss.obj \
+ $(LIBGD_OBJ_DIR)\gdtables.obj \
+ $(LIBGD_OBJ_DIR)\gd_topal.obj \
+ $(LIBGD_OBJ_DIR)\gd_transform.obj \
+ $(LIBGD_OBJ_DIR)\gd_wbmp.obj \
+ $(LIBGD_OBJ_DIR)\gdxpm.obj \
+ $(LIBGD_OBJ_DIR)\wbmp.obj \
+ $(LIBGD_OBJ_DIR)\gd_interpolation.obj \
+ $(LIBGD_OBJ_DIR)\gd_matrix.obj \
+ $(LIBGD_OBJ_DIR)\gd_rotate.obj \
+ $(LIBGD_OBJ_DIR)\gd_version.obj \
+ $(LIBGD_OBJ_DIR)\gd_crop.obj \
+ $(LIBGD_OBJ_DIR)\gd_color_map.obj \
+ $(LIBGD_OBJ_DIR)\gd_webp.obj
+
+LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib Gdi32.Lib
+LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib libwebp_a.lib libxpm_a.lib
+
+INCLUDES=/Isrc /I$(WITH_DEVEL)\include -I$(WITH_DEVEL)\include\libpng16 -I$(WITH_DEVEL)\include\freetype /Itests /Itests\gdtest -I$(WITH_DEVEL)\include\
+
+LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:$(WITH_DEVEL)\lib /MACHINE:$(PLATFORM)
+
+!IF $(DEBUG)
+CFLAGS=/nologo /Qvec-report:1 /MD /TC /Zi /Debug
+!ELSE
+CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC
+!ENDIF
+
+CFLAGS= $(CFLAGS) \
+ /DWIN32=1\
+ /D_WIN32=1\
+ /DMSWIN32=1\
+ /DBGDWIN32=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_LIBZ=1\
+ /DHAVE_LIBXPM=1\
+ $(INCLUDES)
+
+TEST_CFLAGS=$(CFLAGS) /FItest_config.h
+TEST_LDFLAGS=$(LDFLAGS) $(SDR)readdir.obj $(SDR)gdtest.obj $(BUILD_DIR)\libgd.lib
+TEST_CONFIG=tests\test_config.h
+TEST_LIST=$(TDR)testlist.txt
+TEST_MK=$(TDR)Maketests.vc
+
+# generate test makefile from TESTS macro
+# generate test makefile from TESTS macro
+!IF [if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)]
+!ENDIF
+!IF [if not exist $(TDR) mkdir $(TDR)]
+!ENDIF
+
+!IF [$(MAKEDIR)\windows\gentest.bat tests $(BUILD_DIR) "$(TEST_CFLAGS)" "$(TEST_LDFLAGS)" $(CC) $(LD) "$(TEST_MK)" "$(TEST_LIST)"]
+!ENDIF
+
+TEST_OBJS=$(TEST_EXES:tests=obj)
+TEST_OBJS=$(TEST_OBJS:exe=obj)
+
+# pseudotargets
+build_libs: make_dirs $(TARGETDLL) $(TARGETLIB)
+all: build_libs build_tests
+check: all run_tests
+
+clean:
+ @if exist $(SDR) rd $(SDR) /s /q
+ @if exist $(TDR) rd $(TDR) /s /q
+ @if exist $(BUILD_DIR)\*.exe del $(BUILD_DIR)\*.exe /q
+ @if exist tests\test_config.h del tests\test_config.h /q
+
+# helpers
+
+make_dirs:
+ @if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
+ @if not exist $(SDR) mkdir $(SDR)
+
+run_tests:
+ @cd $(TDR)
+ @$(MAKEDIR)\windows\run_tests
+
+# libgd
+$(LIBGD_OBJ_DIR):
+ @if not exist $(LIBGD_OBJ_DIR) mkdir $(LIBGD_OBJ_DIR)
+
+$(LIBGD_BIN_DIR):
+ @if not exist $(LIBGD_BIN_DIR) mkdir $(LIBGD_BIN_DIR)
+
+$(TARGETDLL): $(LIB_OBJS)
+ @$(LD) /DLL /OUT:$@ $(LIB_OBJS) $(LIBS_GD) $(LIBS) $(LDFLAGS)
+
+$(TARGETLIB): $(LIB_OBJS)
+ @$(LB) /OUT:$@ $(LIB_OBJS) $(LDFLAGS)
+
+{$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+all: $(LIBGD_OBJ_DIR) $(LIBGD_BIN_DIR) $(LIB_OBJS) $(STATICLIB)
+
+.SUFFIXES: .c .obj .res
+
+{$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{src\}.c{$(SDR)}.obj::
+ $(CC) $(CFLAGS) /c $< /Fo$(SDR)
+
+# tests
+
+!INCLUDE $(TEST_MK)
+build_tests: $(TEST_LIST) $(SDR)readdir.obj $(SDR)gdtest.obj $(TEST_EXES)
+
+$(SDR)gdtest.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\gdtest.c
+ @$(CC) $(CFLAGS) /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj
+
+$(SDR)readdir.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\readdir.c
+ @$(CC) $(CFLAGS) /c tests\gdtest\readdir.c /Fo$(SDR)readdir.obj
+
+$(TEST_CONFIG):
+ @echo #ifndef GD_TEST_CONFIG_H> tests\test_config.h
+ @echo #define GD_TEST_CONFIG_H>> tests\test_config.h
+ @echo #ifndef GDTEST_TOP_DIR>> tests\test_config.h
+ @echo #define GDTEST_TOP_DIR "$(MAKEDIR:\=\\)\\tests">> tests\test_config.h
+ @echo #endif>> tests\test_config.h
+ @echo #ifndef _WIN32>> tests\test_config.h
+ @echo #define snprintf _snprintf>> tests\test_config.h
+ @echo #endif>> tests\test_config.h
+ @echo #endif>> tests\test_config.h
+
+$(TEST_LIST): $(TARGETDLL)
+ if not exist $(TDR) mkdir $(TDR)
+ copy $(TARGETDLL) $(TDR)$(GD_DLL) \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/windows/gentest.bat b/Build/source/libs/gd/libgd-src/windows/gentest.bat
new file mode 100644
index 00000000000..9c2cbeb7ed6
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/windows/gentest.bat
@@ -0,0 +1,35 @@
+SETLOCAL ENABLEDELAYEDEXPANSION
+@echo off
+set testsdir=%~1
+set builddir=%~2
+set CFLAGS=%~3
+set LDFLAGS=%~4
+set CC=%~5
+set LD=%~6
+set TESTMK=%~7
+set TESTLIST=%~8
+echo %*
+echo recieved !testsdir! !builddir! !CFLAGS! !LDFLAGS! !CC!
+
+copy NUL !TESTMK! > nul
+copy NUL !TESTLIST! > nul
+
+for /D %%d in (!testsdir!/*) do (
+ if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
+ echo TEST_EXES=!builddir!\tests\%%d_%%~nf.exe ^$^(TEST_EXES^) >> !TESTMK!
+ )
+)
+
+for /D %%d in (!testsdir!/*) do (
+ if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
+ echo !builddir!\%%d_%%~nf.obj: !testsdir!\%%d\%%f; ^$^(CC^) ^$^(TEST_CFLAGS^) /c ^$** /Fo:$@ >> !TESTMK!
+ )
+)
+
+for /D %%d in (!testsdir!/*) do (
+ if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
+ echo !builddir!\tests\%%d_%%~nf.exe: !builddir!\%%d_%%~nf.obj; !LD! !LDFLAGS! $** /out:$@ >> !TESTMK!
+ echo %%d_%%~nf.exe >> !TESTLIST!
+ )
+)
+ENDLOCAL \ No newline at end of file
diff --git a/Build/source/libs/gd/libgd-src/windows/libgd.rc b/Build/source/libs/gd/libgd-src/windows/libgd.rc
index c0aa0cedf3e..dfe6ff0aa78 100644
--- a/Build/source/libs/gd/libgd-src/windows/libgd.rc
+++ b/Build/source/libs/gd/libgd-src/windows/libgd.rc
@@ -1,59 +1,59 @@
-/* This is a template RC file.
- * $Id$
- * Do not edit with MSVC */
-#ifdef APSTUDIO_INVOKED
-# error dont edit with MSVC
-#endif
-
-#include "winres.h"
-#include "../gd.h"
-
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-
-#ifdef WANT_LOGO
-0 ICON gdlib.ico
-#endif
-
-//Version
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
- PRODUCTVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_DLL
- FILESUBTYPE VFT2_UNKNOWN
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "Comments", "Thanks to Thomas Boutell" "\0"
- VALUE "CompanyName", "LIBGD Development Team\0"
- 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 "LegalTrademarks", "Thomas Boutell, Pierre A. Joye and contributors\0"
- VALUE "OriginalFilename", "bgd.dll" "\0"
- VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "LIBGD dynamic link library" "\0"
- VALUE "SpecialBuild", "win32" "\0"
- VALUE "URL", "http://www.libgd.org/"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
-
-#ifdef MC_INCLUDE
-#include MC_INCLUDE
-#endif
-
+/* This is a template RC file.
+ * $Id$
+ * Do not edit with MSVC */
+#ifdef APSTUDIO_INVOKED
+# error dont edit with MSVC
+#endif
+
+#include "winres.h"
+#include "../gd.h"
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef WANT_LOGO
+0 ICON gdlib.ico
+#endif
+
+//Version
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
+ PRODUCTVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Thanks to Thomas Boutell" "\0"
+ VALUE "CompanyName", "LIBGD Development Team\0"
+ 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 "LegalTrademarks", "Thomas Boutell, Pierre A. Joye and contributors\0"
+ VALUE "OriginalFilename", "bgd.dll" "\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "LIBGD dynamic link library" "\0"
+ VALUE "SpecialBuild", "win32" "\0"
+ VALUE "URL", "http://www.libgd.org/"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+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 7e7f155885e..3b1ced42b64 100644
--- a/Build/source/libs/gd/libgd-src/windows/msys/Makefile
+++ b/Build/source/libs/gd/libgd-src/windows/msys/Makefile
@@ -97,7 +97,7 @@ gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c \
gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c \
gdfonts.c gdfontt.c gdft.c gdhelpers.c gdkanji.c gdtables.c gdxpm.c \
wbmp.c gd_filter.c gd_nnquant.c gd_rotate.c gd_matrix.c \
-gd_interpolation.c gd_crop.c webpimg.c gd_webp.c gd_tiff.c gd_tga.c \
+gd_interpolation.c gd_crop.c gd_webp.c gd_tiff.c gd_tga.c \
gd_bmp.c gd_xbm.c gd_color_match.c gd_version.c gd_filename.c
OBJ=$(SRC:.c=.o)
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 60289badb2d..601802dd8e0 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,65 +1,65 @@
-
-# MSYS Fallback Makefile
-
-This is a simple, straightforward Makefile for building LibGD with
-MinGW on MSYS (or possibly Cygwin). It is here for anyone who doesn't
-want to deal with autotools or CMake on Windows or who can't get
-either of them working on their particular setup.
-
-Note that this Makefile only builds the library and test cases; the
-standalone utilities are ignored. If you need those, you'll need to
-use one of the other build systems (or add them yourself.)
-
-## To build LibGD:
-
-1. Install MinGW and MSYS (see <http://www.mingw.org/wiki/Getting_Started>).
- You will need to install zip and unzip as well as the 32-bit C compiler
- and related tools.
-
-2. Install LibJpeg, LibPng, LibTiff, Zlib and FreeType from
- <http://gnuwin32.sourceforge.net> and install them all in
- `c:/tools/GnuWin32/`. (You can get these libraries from other
- places and/or install them in different locations, but you'll need to
- edit the Makefile accordingly if you do.)
-
-3. Skip ahead to the next step. If that doesn't work, edit the
- Makefile to fix what went wrong. Things to try include:
- * Ensure SRC contains an up-to-date list of source files. (Take a
- look at libgd_la_SOURCES src/Makefile.am for a reference.)
- * Ensure that the paths and #defines for unsupported libraries
- are commented out. They're nicely grouped into clusters to
- simplify that.
-
-4. `cd` to this directory and type:
-
- make
- make check
-
- If both commands succeed, you're done. (Note that some of the
- testcases will fail, just because they test features not enabled
- here. This is fine. As long as most tests pass, you're probably
- okay.)
-
-5. Type
-
- make dist
-
- This will create libgd-win.zip, a zip file containing the new
- library and its dependants. Note that this step may pick up extra
- DLLs; it sweeps up all of the DLLs in the directories pointed to
- by *_DLLDIR Makefile variables.
-
- Alternately, you can copy the lib (in src/) to wherever it needs
- to go.
-
-
-## Stuff that Doesn't Work
-
-* LibXpm: It's probably nothing serious, just more trouble than it's
- worth.
-* LibFontconfig: I couldn't find Windows binaries for it anywhere
- reputable.
-
-
-
-
+
+# MSYS Fallback Makefile
+
+This is a simple, straightforward Makefile for building LibGD with
+MinGW on MSYS (or possibly Cygwin). It is here for anyone who doesn't
+want to deal with autotools or CMake on Windows or who can't get
+either of them working on their particular setup.
+
+Note that this Makefile only builds the library and test cases; the
+standalone utilities are ignored. If you need those, you'll need to
+use one of the other build systems (or add them yourself.)
+
+## To build LibGD:
+
+1. Install MinGW and MSYS (see <http://www.mingw.org/wiki/Getting_Started>).
+ You will need to install zip and unzip as well as the 32-bit C compiler
+ and related tools.
+
+2. Install LibJpeg, LibPng, LibTiff, Zlib and FreeType from
+ <http://gnuwin32.sourceforge.net> and install them all in
+ `c:/tools/GnuWin32/`. (You can get these libraries from other
+ places and/or install them in different locations, but you'll need to
+ edit the Makefile accordingly if you do.)
+
+3. Skip ahead to the next step. If that doesn't work, edit the
+ Makefile to fix what went wrong. Things to try include:
+ * Ensure SRC contains an up-to-date list of source files. (Take a
+ look at libgd_la_SOURCES src/Makefile.am for a reference.)
+ * Ensure that the paths and #defines for unsupported libraries
+ are commented out. They're nicely grouped into clusters to
+ simplify that.
+
+4. `cd` to this directory and type:
+
+ make
+ make check
+
+ If both commands succeed, you're done. (Note that some of the
+ testcases will fail, just because they test features not enabled
+ here. This is fine. As long as most tests pass, you're probably
+ okay.)
+
+5. Type
+
+ make dist
+
+ This will create libgd-win.zip, a zip file containing the new
+ library and its dependants. Note that this step may pick up extra
+ DLLs; it sweeps up all of the DLLs in the directories pointed to
+ by *_DLLDIR Makefile variables.
+
+ Alternately, you can copy the lib (in src/) to wherever it needs
+ to go.
+
+
+## Stuff that Doesn't Work
+
+* LibXpm: It's probably nothing serious, just more trouble than it's
+ worth.
+* LibFontconfig: I couldn't find Windows binaries for it anywhere
+ reputable.
+
+
+
+
diff --git a/Build/source/libs/gd/libgd-src/windows/msys/deps.mk b/Build/source/libs/gd/libgd-src/windows/msys/deps.mk
index a27c0781fed..9b531b3103d 100644
--- a/Build/source/libs/gd/libgd-src/windows/msys/deps.mk
+++ b/Build/source/libs/gd/libgd-src/windows/msys/deps.mk
@@ -1 +1 @@
-# Nothing to see here. (But it shuts up make.)
+# Nothing to see here. (But it shuts up make.)
diff --git a/Build/source/libs/gd/libgd-src/windows/readme.md b/Build/source/libs/gd/libgd-src/windows/readme.md
index 21d741ab253..8753b704723 100644
--- a/Build/source/libs/gd/libgd-src/windows/readme.md
+++ b/Build/source/libs/gd/libgd-src/windows/readme.md
@@ -1,11 +1,11 @@
-# Building on Windows with Visual Studio 2013
-
-Open the VS2013 x64 Native Tools Command Prompt. 2012 will *not* work.
-Change to the gd-libgd folder.
-git clone https://github.com/imazen/gd-win-dependencies into the folder.
-Run
-nmake /f windows/Makefile.vc all
-nmake /f windows/Makefile.vc check
-
-Before rebuilding, run:
+# Building on Windows with Visual Studio 2013
+
+Open the VS2013 x64 Native Tools Command Prompt. 2012 will *not* work.
+Change to the gd-libgd folder.
+git clone https://github.com/imazen/gd-win-dependencies into the folder.
+Run
+nmake /f windows/Makefile.vc all
+nmake /f windows/Makefile.vc check
+
+Before rebuilding, run:
nmake /f windows/Makefile.vc clean \ No newline at end of file
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 5dadb059407..9e9c5e4d93e 100644
--- a/Build/source/libs/gd/libgd-src/windows/run_tests.bat
+++ b/Build/source/libs/gd/libgd-src/windows/run_tests.bat
@@ -4,19 +4,9 @@ if [%PLATFORM%]==[] set PLATFORM=x86
if [%PREFERREDTOOLARCHITECTURE%]==[x64] set PLATFORM=x64
set PLATFORM=%PLATFORM:X=x%
-if exist build_msvc12_%PLATFORM%\tests (cd build_msvc12_%PLATFORM%\tests) else (
- if exist ..\build_%PLATFORM%\tests (cd ..\build_msvc12_%PLATFORM%\tests) else (
- echo unable to find test dir
- exit /b 1
- )
-)
-
-
-
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)
diff --git a/Build/source/libs/gd/version.ac b/Build/source/libs/gd/version.ac
index fedc5f08096..b7e85ca4c09 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.1.1])
+m4_define([gd_version], [2.2.3])