diff --git a/REQUIRE b/REQUIRE index 507d075..0ddf11a 100644 --- a/REQUIRE +++ b/REQUIRE @@ -3,5 +3,4 @@ Compat 0.52.0 Colors BinDeps 0.3.21 Graphics 0.1 -@osx Homebrew -@windows WinRPM +BinaryProvider 0.3.0 diff --git a/deps/build.jl b/deps/build.jl index 86256a7..0ca9d9a 100644 --- a/deps/build.jl +++ b/deps/build.jl @@ -1,164 +1,63 @@ -using BinDeps +using BinaryProvider # requires BinaryProvider 0.3.0 or later -using Compat -import Compat.Libdl -import Compat.Sys - -@BinDeps.setup - -# check for cairo version -function validate_cairo_version(name,handle) - f = Libdl.dlsym_e(handle, "cairo_version") - f == C_NULL && return false - v = ccall(f, Int32,()) - return v > 10800 -end - -group = library_group("cairo") +# Parse some basic command-line arguments +const verbose = "--verbose" in ARGS +const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr"))) +products = [ + LibraryProduct(prefix, String["libcairo"], :libcairo), +] -deps = [ - libpng = library_dependency("png", aliases = ["libpng","libpng-1.5.14","libpng15","libpng12.so.0","libpng12"], runtime = false, group = group) - pixman = library_dependency("pixman", aliases = ["libpixman","libpixman-1","libpixman-1-0","libpixman-1.0"], depends = [libpng], runtime = false, group = group) - libffi = library_dependency("ffi", aliases = ["libffi"], runtime = false, group = group) - gettext = library_dependency("gettext", aliases = ["libintl", "preloadable_libintl", "libgettextpo"], os = :Unix, group = group) - gobject = library_dependency("gobject", aliases = ["libgobject-2.0-0", "libgobject-2.0", "libgobject-2_0-0", "libgobject-2.0.so.0"], depends=[libffi, gettext], group = group) - freetype = library_dependency("freetype", aliases = ["libfreetype"], runtime = false, group = group) - fontconfig = library_dependency("fontconfig", aliases = ["libfontconfig-1", "libfontconfig", "libfontconfig.so.1"], depends = [freetype], runtime = false, group = group) - cairo = library_dependency("cairo", aliases = ["libcairo-2", "libcairo","libcairo.so.2", "libcairo2"], depends = [gobject,fontconfig,libpng], group = group, validate = validate_cairo_version) - pango = library_dependency("pango", aliases = ["libpango-1.0-0", "libpango-1.0","libpango-1.0.so.0", "libpango-1_0-0"], group = group) - pangocairo = library_dependency("pangocairo", aliases = ["libpangocairo-1.0-0", "libpangocairo-1.0", "libpangocairo-1.0.so.0"], depends = [cairo], group = group) - zlib = library_dependency("zlib", aliases = ["libzlib","zlib1"], os = :Windows, group = group) +dependencies = [ + "https://github.com/bicycle1885/ZlibBuilder/releases/download/v1.0.1/build_Zlib.v1.2.11.jl", + "https://github.com/SimonDanisch/LibpngBuilder/releases/download/v1.6.31/build_libpng.v1.0.0.jl", + "https://github.com/staticfloat/PixmanBuilder/releases/download/v0.34.0-1/build_Pixman.v0.34.0.jl", + "https://github.com/JuliaGraphics/FreeTypeBuilder/releases/download/v2.9.1/build_FreeType2.v2.9.0.jl" ] -if Sys.iswindows() - using WinRPM - provides(WinRPM.RPM,"libpango-1_0-0",[pango,pangocairo],os = :Windows) - provides(WinRPM.RPM,["glib2", "libgobject-2_0-0"],gobject,os = :Windows) - provides(WinRPM.RPM,"zlib-devel",zlib,os = :Windows) - provides(WinRPM.RPM,["libcairo2","libharfbuzz0"],cairo,os = :Windows) +# for url in dependencies +# download(url, basename(url)) +# end +for elem in dependencies + # it's a bit faster to run the build in an anonymous module instead of + # starting a new julia process + m = Module(:__anon__) + Core.eval(m, :(Main.include($(joinpath(@__DIR__, basename(elem)))))) end -if is_apple() - using Homebrew - provides( Homebrew.HB, "cairo", cairo, os = :Darwin ) - provides( Homebrew.HB, "pango", [pango, pangocairo], os = :Darwin, onload = - """ - function __init__() - ENV["PANGO_SYSCONFDIR"] = joinpath("$(Homebrew.prefix())", "etc") +# Download binaries from hosted location +bin_prefix = "https://github.com/JuliaGraphics/CairoBuilder/releases/download/v1.12.12" + +# Listing of files generated by BinaryBuilder: +download_info = Dict( + Linux(:aarch64, :glibc) => ("$bin_prefix/Cairo.v1.12.12.aarch64-linux-gnu.tar.gz", "128ab2c799f28ea6c46b974244716c02e4cd0ba9f4d99dbd06cea84486a70c15"), + Linux(:aarch64, :musl) => ("$bin_prefix/Cairo.v1.12.12.aarch64-linux-musl.tar.gz", "cb51e16e171af0dea78947d47c61d1ee5976460e458c64cfe8746c7cfe3e8972"), + Linux(:armv7l, :glibc, :eabihf) => ("$bin_prefix/Cairo.v1.12.12.arm-linux-gnueabihf.tar.gz", "8a699225e6ac5ab945b57d1179ba41e1021f84dddde02df2104e1466d1f1eba4"), + Linux(:armv7l, :musl, :eabihf) => ("$bin_prefix/Cairo.v1.12.12.arm-linux-musleabihf.tar.gz", "3cebe2407cfc6dda7e4f2b4f21b57d120ebc6da18c15785e76de92571ef2fb05"), + Linux(:i686, :glibc) => ("$bin_prefix/Cairo.v1.12.12.i686-linux-gnu.tar.gz", "5011f386292387d76beeea3d33487d09e312daa6c5aaf91033c1c9f4e431d279"), + Linux(:i686, :musl) => ("$bin_prefix/Cairo.v1.12.12.i686-linux-musl.tar.gz", "d12257d06e73297aa3cd40a556d1f1da2831ffa28b9d5d0a76491552a6e594b9"), + Windows(:i686) => ("$bin_prefix/Cairo.v1.12.12.i686-w64-mingw32.tar.gz", "3eb3b72323b0a5effafaad8660fbcb5a4a85cbbb16be8ac69fd7d8df0ea99618"), + Linux(:powerpc64le, :glibc) => ("$bin_prefix/Cairo.v1.12.12.powerpc64le-linux-gnu.tar.gz", "75fa6f359d200665de028c493250539c1ed5e64137e4ed019c61959fc8e4d3a3"), + MacOS(:x86_64) => ("$bin_prefix/Cairo.v1.12.12.x86_64-apple-darwin14.tar.gz", "703323019abbdb8c5ac93dc4671479e71694d2fd6266fb55ced5ffbf7eaef934"), + Linux(:x86_64, :glibc) => ("$bin_prefix/Cairo.v1.12.12.x86_64-linux-gnu.tar.gz", "ba25e83f1f49dce8bb408e4accf914ed774b94d630983a6c8d46d0b66de3f691"), + Linux(:x86_64, :musl) => ("$bin_prefix/Cairo.v1.12.12.x86_64-linux-musl.tar.gz", "823a3ad3d8370714985a3a8a9dc4f3dc1bc1be1ca8937d482fc69f41bf1079e1"), + FreeBSD(:x86_64) => ("$bin_prefix/Cairo.v1.12.12.x86_64-unknown-freebsd11.1.tar.gz", "f08161cc296f2daba8ddae0ce664e9f7b2f1bb071787325970d31310eab0718a"), + Windows(:x86_64) => ("$bin_prefix/Cairo.v1.12.12.x86_64-w64-mingw32.tar.gz", "9718250937e175ecd8306cea6bceb5c18f3d1b1b2e597c7e408340db53ec1bb6"), +) + +# Install unsatisfied or updated dependencies: +unsatisfied = any(!satisfied(p; verbose=verbose) for p in products) +if haskey(download_info, platform_key()) + url, tarball_hash = download_info[platform_key()] + if unsatisfied || !isinstalled(url, tarball_hash; prefix=prefix) + # Download and install binaries + install(url, tarball_hash; prefix=prefix, force=true, verbose=verbose) end - """ ) - provides( Homebrew.HB, "fontconfig", fontconfig, os = :Darwin ) - provides( Homebrew.HB, "glib", gobject, os = :Darwin ) - provides( Homebrew.HB, "libpng", libpng, os = :Darwin ) - provides( Homebrew.HB, "gettext", gettext, os = :Darwin ) - provides( Homebrew.HB, "freetype", freetype, os = :Darwin ) - provides( Homebrew.HB, "libffi", libffi, os = :Darwin ) - provides( Homebrew.HB, "pixman", pixman, os = :Darwin ) +elseif unsatisfied + # If we don't have a BinaryProvider-compatible .tar.gz to download, complain. + # Alternatively, you could attempt to install from a separate provider, + # build from source or something even more ambitious here. + error("Your platform $(triplet(platform_key())) is not supported by this package!") end -# System Package Managers -provides(AptGet, - Dict( - "libcairo2" => cairo, - "libfontconfig1" => fontconfig, - "libpango1.0-0" => [pango,pangocairo], - "libglib2.0-0" => gobject, - "libpng12-0" => libpng, - "libpixman-1-0" => pixman, - "gettext" => gettext - )) - -# TODO: check whether these are accurate -provides(Yum, - Dict( - "cairo" => cairo, - "fontconfig" => fontconfig, - "pango" => [pango,pangocairo], - "glib2" => gobject, - "libpng" => libpng, - "gettext-libs" => gettext - )) - -provides(Zypper, - Dict( - "libcairo2" => cairo, - "libfontconfig" => fontconfig, - "libpango-1_0" => [pango,pangocairo], - "libglib-2_0" => gobject, - "libpng12" => libpng, - "libpixman-1" => pixman, - "gettext" => gettext - )) - -const png_version = "1.5.14" - -provides(Sources, - Dict( - URI("http://www.cairographics.org/releases/pixman-0.28.2.tar.gz") => pixman, - URI("http://www.cairographics.org/releases/cairo-1.12.16.tar.xz") => cairo, - URI("http://download.savannah.gnu.org/releases/freetype/freetype-2.4.11.tar.gz") => freetype, - URI("http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.2.tar.gz") => fontconfig, - URI("http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz") => gettext, - URI("ftp://ftp.simplesystems.org/pub/libpng/png/src/history/libpng15/libpng-$(png_version).tar.gz") => libpng, - URI("ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz") => libffi, - URI("http://ftp.gnome.org/pub/gnome/sources/glib/2.34/glib-2.34.3.tar.xz") => gobject, - URI("http://ftp.gnome.org/pub/GNOME/sources/pango/1.32/pango-1.32.6.tar.xz") => [pango,pangocairo], - URI("http://zlib.net/zlib-1.2.7.tar.gz") => zlib - )) - -xx(t...) = (Sys.iswindows() ? t[1] : (is_linux() || length(t) == 2) ? t[2] : t[3]) - -provides(BuildProcess, - Dict( - Autotools(libtarget = "pixman/libpixman-1.la", installed_libname = xx("libpixman-1-0.","libpixman-1.","libpixman-1.0.")*Libdl.dlext) => pixman, - Autotools(libtarget = xx("objs/.libs/libfreetype.la","libfreetype.la")) => freetype, - Autotools(libtarget = "src/libfontconfig.la") => fontconfig, - Autotools(libtarget = "src/libcairo.la", configure_options = append!(append!( - AbstractString[], - !is_linux() ? AbstractString["--without-x","--disable-xlib","--disable-xcb"] : AbstractString[]), - is_apple() ? AbstractString["--enable-quartz","--enable-quartz-font","--enable-quartz-image","--disable-gl"] : AbstractString[])) => cairo, - Autotools(libtarget = "gettext-tools/gnulib-lib/.libs/libgettextlib.la") => gettext, - Autotools(libtarget = "libffi.la") => libffi, - Autotools(libtarget = "gobject/libgobject-2.0.la") => gobject, - Autotools(libtarget = "pango/libpango-1.0.la") => [pango,pangocairo] - )) - -provides(BuildProcess,Autotools(libtarget = "libpng15.la"),libpng,os = :Unix) - -provides(SimpleBuild, - (@build_steps begin - GetSources(zlib) - @build_steps begin - ChangeDirectory(joinpath(BinDeps.depsdir(zlib),"src","zlib-1.2.7")) - MakeTargets(["-fwin32/Makefile.gcc"]) - #MakeTargets(["-fwin32/Makefile.gcc","DESTDIR=../../usr/","INCLUDE_PATH=include","LIBRARY_PATH=lib","SHARED_MODE=1","install"]) - end - end),zlib, os = :Windows) - -prefix=joinpath(BinDeps.depsdir(libpng),"usr") -uprefix = replace(replace(prefix,"\\","/"),"C:/","/c/") -pngsrcdir = joinpath(BinDeps.depsdir(libpng),"src","libpng-$png_version") -pngbuilddir = joinpath(BinDeps.depsdir(libpng),"builds","libpng-$png_version") -provides(BuildProcess, - (@build_steps begin - GetSources(libpng) - CreateDirectory(pngbuilddir) - @build_steps begin - ChangeDirectory(pngbuilddir) - FileRule(joinpath(prefix,"lib","libpng15.dll"),@build_steps begin - `cmake -DCMAKE_INSTALL_PREFIX="$prefix" -G"MSYS Makefiles" $pngsrcdir` - `make` - `cp 'libpng*.dll' $prefix/lib` - `cp 'libpng*.a' $prefix/lib` - `cp 'libpng*.pc' $prefix/lib/pkgconfig` - `cp pnglibconf.h $prefix/include` - `cp $pngsrcdir/png.h $prefix/include` - `cp $pngsrcdir/pngconf.h $prefix/include` - end) - end - end),libpng, os = :Windows) - -@BinDeps.install Dict([(:gobject, :_jl_libgobject), - (:cairo, :_jl_libcairo), - (:pango, :_jl_libpango), - (:pangocairo, :_jl_libpangocairo)]) +# Write out a deps.jl file that will contain mappings for our products +write_deps_file(joinpath(@__DIR__, "deps.jl"), products) diff --git a/deps/build_FreeType2.v2.9.0.jl b/deps/build_FreeType2.v2.9.0.jl new file mode 100644 index 0000000..bf05778 --- /dev/null +++ b/deps/build_FreeType2.v2.9.0.jl @@ -0,0 +1,46 @@ +using BinaryProvider # requires BinaryProvider 0.3.0 or later + +# Parse some basic command-line arguments +const verbose = "--verbose" in ARGS +const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr"))) +products = [ + LibraryProduct(prefix, String["libfreetype"], :libfreetype), +] + +# Download binaries from hosted location +bin_prefix = "https://github.com/Gnimuc/FreeTypeBuilder/releases/download/v2.9.1" + +# Listing of files generated by BinaryBuilder: +download_info = Dict( + Linux(:aarch64, :glibc) => ("$bin_prefix/FreeType2.v2.9.0.aarch64-linux-gnu.tar.gz", "c47c6bdef0f8483cf4e968877ee8778fe173f53cadb12de22e6aeee34a70384d"), + Linux(:aarch64, :musl) => ("$bin_prefix/FreeType2.v2.9.0.aarch64-linux-musl.tar.gz", "b50ef907f7019bc7cc49a16a46e24e521213dda7fe1ab48442900d82860230e0"), + Linux(:armv7l, :glibc, :eabihf) => ("$bin_prefix/FreeType2.v2.9.0.arm-linux-gnueabihf.tar.gz", "960642c185936a501a4c7301f042c5bc616e85d859cf868516b72b787f2f1380"), + Linux(:armv7l, :musl, :eabihf) => ("$bin_prefix/FreeType2.v2.9.0.arm-linux-musleabihf.tar.gz", "4e624965ab3aaae52e1751fa60d1eeebca2df60e26cf0b1c5876bd53005144c7"), + Linux(:i686, :glibc) => ("$bin_prefix/FreeType2.v2.9.0.i686-linux-gnu.tar.gz", "f344cd50f3cd9e4eed72fabe48ccce6acf8129cb966b2654ea6b9bb0c729a32a"), + Linux(:i686, :musl) => ("$bin_prefix/FreeType2.v2.9.0.i686-linux-musl.tar.gz", "f7480c18b444509d0f97eea8f5013c068898de05fad1e29fc035d73454d85153"), + Windows(:i686) => ("$bin_prefix/FreeType2.v2.9.0.i686-w64-mingw32.tar.gz", "8114192e9f9f23053bc94eb352b7b87d5a4e1e2438396668e08c5a8b63987fdd"), + Linux(:powerpc64le, :glibc) => ("$bin_prefix/FreeType2.v2.9.0.powerpc64le-linux-gnu.tar.gz", "6714d99a688e994aa311d06e6214b25264f4dc976fe7fdbf9338287656379fe3"), + MacOS(:x86_64) => ("$bin_prefix/FreeType2.v2.9.0.x86_64-apple-darwin14.tar.gz", "1c1fb7b064735780472c7b3de34639072952c274dea50986b1e37a2888d5e642"), + Linux(:x86_64, :glibc) => ("$bin_prefix/FreeType2.v2.9.0.x86_64-linux-gnu.tar.gz", "1abcf93c7bc5e4d94d89823c32577add3d4948d7cdbcdc5214f36594c45ca96e"), + Linux(:x86_64, :musl) => ("$bin_prefix/FreeType2.v2.9.0.x86_64-linux-musl.tar.gz", "9fb7aacef54b59462e9fc5f008df4ffbacf6f828adc54452afb6c7796b825bb9"), + FreeBSD(:x86_64) => ("$bin_prefix/FreeType2.v2.9.0.x86_64-unknown-freebsd11.1.tar.gz", "57af70cbbfda1731e91210a883d5ade50772485189e0a7931f30ad64ff698c7f"), + Windows(:x86_64) => ("$bin_prefix/FreeType2.v2.9.0.x86_64-w64-mingw32.tar.gz", "e28168f248814da26c6319bd9e55982b233f5605e662edaa3c8d6617fb375def"), +) + +# Install unsatisfied or updated dependencies: +unsatisfied = any(!satisfied(p; verbose=verbose) for p in products) +if haskey(download_info, platform_key()) + url, tarball_hash = download_info[platform_key()] + if unsatisfied || !isinstalled(url, tarball_hash; prefix=prefix) + # Download and install binaries + install(url, tarball_hash; prefix=prefix, force=true, verbose=verbose) + end +elseif unsatisfied + # If we don't have a BinaryProvider-compatible .tar.gz to download, complain. + # Alternatively, you could attempt to install from a separate provider, + # build from source or something even more ambitious here. + error("Your platform $(triplet(platform_key())) is not supported by this package!") +end + +# Write out a deps.jl file that will contain mappings for our products +write_deps_file(joinpath(@__DIR__, "deps.jl"), products) diff --git a/deps/build_Pixman.v0.34.0.jl b/deps/build_Pixman.v0.34.0.jl new file mode 100644 index 0000000..29247c9 --- /dev/null +++ b/deps/build_Pixman.v0.34.0.jl @@ -0,0 +1,46 @@ +using BinaryProvider # requires BinaryProvider 0.3.0 or later + +# Parse some basic command-line arguments +const verbose = "--verbose" in ARGS +const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr"))) +products = [ + LibraryProduct(prefix, String["libpixman"], :libpixman), +] + +# Download binaries from hosted location +bin_prefix = "https://github.com/staticfloat/PixmanBuilder/releases/download/v0.34.0-1" + +# Listing of files generated by BinaryBuilder: +download_info = Dict( + Linux(:aarch64, :glibc) => ("$bin_prefix/Pixman.v0.34.0.aarch64-linux-gnu.tar.gz", "202d8658a38c3a97d679aaf871c4b4b278a2df2de80e5151884746cd8aecacf1"), + Linux(:aarch64, :musl) => ("$bin_prefix/Pixman.v0.34.0.aarch64-linux-musl.tar.gz", "40215a85cba958e8ac0bbf8fa5c76f07ed41ba10439187a6eed426e9db9fe969"), + Linux(:armv7l, :glibc, :eabihf) => ("$bin_prefix/Pixman.v0.34.0.arm-linux-gnueabihf.tar.gz", "cb6013ae64a8da3c4a5b706052043dd2a82287e6d6a8ef7030c94f9be404860e"), + Linux(:armv7l, :musl, :eabihf) => ("$bin_prefix/Pixman.v0.34.0.arm-linux-musleabihf.tar.gz", "f93e8e42ae7e8a9833288ed71441de699c5639790f6772a3d442b76f55e551c7"), + Linux(:i686, :glibc) => ("$bin_prefix/Pixman.v0.34.0.i686-linux-gnu.tar.gz", "6aa014509b393fed0b5bf2861844f415c2c401cc1f385f1b26df1eb5574682ab"), + Linux(:i686, :musl) => ("$bin_prefix/Pixman.v0.34.0.i686-linux-musl.tar.gz", "7f52cca4f29caf230b1350187f42584c12c71e7c306a6a7cc6c8b62794c548f0"), + Windows(:i686) => ("$bin_prefix/Pixman.v0.34.0.i686-w64-mingw32.tar.gz", "c06c104d74a32fadb1aee26b85a79a83478034ef34969e943f8868f0d333c547"), + Linux(:powerpc64le, :glibc) => ("$bin_prefix/Pixman.v0.34.0.powerpc64le-linux-gnu.tar.gz", "6788f04d8091ac90522b2e5f09961d2408789e37ce6c01f8730e3cdc43dbdcf3"), + MacOS(:x86_64) => ("$bin_prefix/Pixman.v0.34.0.x86_64-apple-darwin14.tar.gz", "248ac947cbf73d5b342694f8421db5b59c558ca5349dfcca6130ca89ad4368cb"), + Linux(:x86_64, :glibc) => ("$bin_prefix/Pixman.v0.34.0.x86_64-linux-gnu.tar.gz", "3382fd010d41bab9c457f1e317ae8d426e34311ddbab2a31d0937b2255873886"), + Linux(:x86_64, :musl) => ("$bin_prefix/Pixman.v0.34.0.x86_64-linux-musl.tar.gz", "27931e6fae07e27acae91657cb7b67d9089f2942ef09b9a082e87cff52bcb603"), + FreeBSD(:x86_64) => ("$bin_prefix/Pixman.v0.34.0.x86_64-unknown-freebsd11.1.tar.gz", "ae5617bfd640b8f6cb47a05440b3a96807cefad9e6cc4af5d333620aac6c39b7"), + Windows(:x86_64) => ("$bin_prefix/Pixman.v0.34.0.x86_64-w64-mingw32.tar.gz", "4cbf76c796ae923e3d7a69d3b06147b8e944bbeb0d224c21a4834be2fa519c22"), +) + +# Install unsatisfied or updated dependencies: +unsatisfied = any(!satisfied(p; verbose=verbose) for p in products) +if haskey(download_info, platform_key()) + url, tarball_hash = download_info[platform_key()] + if unsatisfied || !isinstalled(url, tarball_hash; prefix=prefix) + # Download and install binaries + install(url, tarball_hash; prefix=prefix, force=true, verbose=verbose) + end +elseif unsatisfied + # If we don't have a BinaryProvider-compatible .tar.gz to download, complain. + # Alternatively, you could attempt to install from a separate provider, + # build from source or something even more ambitious here. + error("Your platform $(triplet(platform_key())) is not supported by this package!") +end + +# Write out a deps.jl file that will contain mappings for our products +write_deps_file(joinpath(@__DIR__, "deps.jl"), products) diff --git a/deps/build_Zlib.v1.2.11.jl b/deps/build_Zlib.v1.2.11.jl new file mode 100644 index 0000000..81cc56c --- /dev/null +++ b/deps/build_Zlib.v1.2.11.jl @@ -0,0 +1,46 @@ +using BinaryProvider # requires BinaryProvider 0.3.0 or later + +# Parse some basic command-line arguments +const verbose = "--verbose" in ARGS +const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr"))) +products = [ + LibraryProduct(prefix, String["libz"], :libz), +] + +# Download binaries from hosted location +bin_prefix = "https://github.com/bicycle1885/ZlibBuilder/releases/download/v1.0.1" + +# Listing of files generated by BinaryBuilder: +download_info = Dict( + Linux(:aarch64, :glibc) => ("$bin_prefix/Zlib.v1.2.11.aarch64-linux-gnu.tar.gz", "37de2156c3c7e71cf7a913726eaae493239bcd65e5b42a84008298d8d418122a"), + Linux(:aarch64, :musl) => ("$bin_prefix/Zlib.v1.2.11.aarch64-linux-musl.tar.gz", "4eaed05355abc53edfda7add75db1b37508a6bfc7c7612f6a622435ab6e2376e"), + Linux(:armv7l, :glibc, :eabihf) => ("$bin_prefix/Zlib.v1.2.11.arm-linux-gnueabihf.tar.gz", "f08efe363ec8d1cd683a0ede7e1a9b7f8fc9104b02f345fa0134c41f8ed6b858"), + Linux(:armv7l, :musl, :eabihf) => ("$bin_prefix/Zlib.v1.2.11.arm-linux-musleabihf.tar.gz", "480406c4ad864d6fc469a68e7f64fed8650de31c7330bb0ab2969eea22c26157"), + Linux(:i686, :glibc) => ("$bin_prefix/Zlib.v1.2.11.i686-linux-gnu.tar.gz", "8d0b2e36823e3ef9ad5a37d7adc629cb2fd1d64c4d5173237c27523e2d01fa48"), + Linux(:i686, :musl) => ("$bin_prefix/Zlib.v1.2.11.i686-linux-musl.tar.gz", "23cf414f24a7138b8c4b77d54750a371eda340cda3f91bf081643335de4a44b2"), + Windows(:i686) => ("$bin_prefix/Zlib.v1.2.11.i686-w64-mingw32.tar.gz", "a58cc5df045f50caaf16bb9e393f5549fb6498471a04e5c55659425936243e0a"), + Linux(:powerpc64le, :glibc) => ("$bin_prefix/Zlib.v1.2.11.powerpc64le-linux-gnu.tar.gz", "1ac9ceeaf2512734d04848a6fb45ba40213e5ea7d2b7d33b72bfda879e1c69bd"), + MacOS(:x86_64) => ("$bin_prefix/Zlib.v1.2.11.x86_64-apple-darwin14.tar.gz", "c923f866a0770cf2165d1b18b6e301b3d01a875401a7801ddc9deba86759ca7b"), + Linux(:x86_64, :glibc) => ("$bin_prefix/Zlib.v1.2.11.x86_64-linux-gnu.tar.gz", "2b081904e33195cd24e40639c3fa1b3e70284d86f267710343941083bedaf610"), + Linux(:x86_64, :musl) => ("$bin_prefix/Zlib.v1.2.11.x86_64-linux-musl.tar.gz", "a782fb42c612576cffbc448cc8b17aa888592e1419b5e3713e6e0a9859ebbb36"), + FreeBSD(:x86_64) => ("$bin_prefix/Zlib.v1.2.11.x86_64-unknown-freebsd11.1.tar.gz", "e035a82177cad715e819c08f888538db4ddb0589a13292cb18e9a69a220a7028"), + Windows(:x86_64) => ("$bin_prefix/Zlib.v1.2.11.x86_64-w64-mingw32.tar.gz", "34cfc00b28c3883d007e642c4518cba3ba4244bcced25101e3f15168e1a898d7"), +) + +# Install unsatisfied or updated dependencies: +unsatisfied = any(!satisfied(p; verbose=verbose) for p in products) +if haskey(download_info, platform_key()) + url, tarball_hash = download_info[platform_key()] + if unsatisfied || !isinstalled(url, tarball_hash; prefix=prefix) + # Download and install binaries + install(url, tarball_hash; prefix=prefix, force=true, verbose=verbose) + end +elseif unsatisfied + # If we don't have a BinaryProvider-compatible .tar.gz to download, complain. + # Alternatively, you could attempt to install from a separate provider, + # build from source or something even more ambitious here. + error("Your platform $(triplet(platform_key())) is not supported by this package!") +end + +# Write out a deps.jl file that will contain mappings for our products +write_deps_file(joinpath(@__DIR__, "deps.jl"), products) diff --git a/deps/build_libpng.v1.0.0.jl b/deps/build_libpng.v1.0.0.jl new file mode 100644 index 0000000..b9c5c7b --- /dev/null +++ b/deps/build_libpng.v1.0.0.jl @@ -0,0 +1,46 @@ +using BinaryProvider # requires BinaryProvider 0.3.0 or later + +# Parse some basic command-line arguments +const verbose = "--verbose" in ARGS +const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr"))) +products = [ + LibraryProduct(prefix, String["libpng16"], :libpng), +] + +# Download binaries from hosted location +bin_prefix = "https://github.com/SimonDanisch/LibpngBuilder/releases/download/v1.6.31" + +# Listing of files generated by BinaryBuilder: +download_info = Dict( + Linux(:aarch64, :glibc) => ("$bin_prefix/libpng.v1.0.0.aarch64-linux-gnu.tar.gz", "066248a17adcbd9533a3abb61aeb92d96f1341e1b588ee938ca93aece66afeee"), + Linux(:aarch64, :musl) => ("$bin_prefix/libpng.v1.0.0.aarch64-linux-musl.tar.gz", "f1f85dcb141b508301db19e9a11ef43a999b39b1a4ced29e64c8f52700eab43b"), + Linux(:armv7l, :glibc, :eabihf) => ("$bin_prefix/libpng.v1.0.0.arm-linux-gnueabihf.tar.gz", "28be4910b6ef152d604b432b2aef9617774e306b2744c312c7499196a660950c"), + Linux(:armv7l, :musl, :eabihf) => ("$bin_prefix/libpng.v1.0.0.arm-linux-musleabihf.tar.gz", "0809cbce8c12a3f9632718a827ed8820225374553eb3eda92a3e8c56b033b77b"), + Linux(:i686, :glibc) => ("$bin_prefix/libpng.v1.0.0.i686-linux-gnu.tar.gz", "c6937fcc23a15c3eadfbf13a1fa7aa8046e5e82192d0e79378d1d57e25c2a7c0"), + Linux(:i686, :musl) => ("$bin_prefix/libpng.v1.0.0.i686-linux-musl.tar.gz", "50a7c43df57ef32d0ab61f5059f3bccf423e18d4d9e86d1a084174bbe2b62ffb"), + Windows(:i686) => ("$bin_prefix/libpng.v1.0.0.i686-w64-mingw32.tar.gz", "7adfe9b2e2f91798d43bc98f79645b69cb611fd5221fa803ce8ba530ccf9bcfa"), + Linux(:powerpc64le, :glibc) => ("$bin_prefix/libpng.v1.0.0.powerpc64le-linux-gnu.tar.gz", "90430fa0a2858db0ffc87981e14c5864171389e6af50be9cf7c9ed5a85713e5c"), + MacOS(:x86_64) => ("$bin_prefix/libpng.v1.0.0.x86_64-apple-darwin14.tar.gz", "53a530ca9251761cd3e0123fee3ff470a473097e7f112038e4c5b7ca7aa4eae9"), + Linux(:x86_64, :glibc) => ("$bin_prefix/libpng.v1.0.0.x86_64-linux-gnu.tar.gz", "eee0ffe168e0ba11129a544f666bc9840036a0761234f36e15421c9004c5be55"), + Linux(:x86_64, :musl) => ("$bin_prefix/libpng.v1.0.0.x86_64-linux-musl.tar.gz", "458cb397e183772a87ca7bc7fbb309cdc082a74a70460ce3b90027f1565d5f40"), + FreeBSD(:x86_64) => ("$bin_prefix/libpng.v1.0.0.x86_64-unknown-freebsd11.1.tar.gz", "afe7b58dc391ff1f2e982c5a734d33fc942ba611349d79f917d5c0647cc1148a"), + Windows(:x86_64) => ("$bin_prefix/libpng.v1.0.0.x86_64-w64-mingw32.tar.gz", "ff95e2f2f7d5c410c5374e7e86ab443bb58ff132bf418ab0db99c3385cb0bee2"), +) + +# Install unsatisfied or updated dependencies: +unsatisfied = any(!satisfied(p; verbose=verbose) for p in products) +if haskey(download_info, platform_key()) + url, tarball_hash = download_info[platform_key()] + if unsatisfied || !isinstalled(url, tarball_hash; prefix=prefix) + # Download and install binaries + install(url, tarball_hash; prefix=prefix, force=true, verbose=verbose) + end +elseif unsatisfied + # If we don't have a BinaryProvider-compatible .tar.gz to download, complain. + # Alternatively, you could attempt to install from a separate provider, + # build from source or something even more ambitious here. + error("Your platform $(triplet(platform_key())) is not supported by this package!") +end + +# Write out a deps.jl file that will contain mappings for our products +write_deps_file(joinpath(@__DIR__, "deps.jl"), products) diff --git a/src/Cairo.jl b/src/Cairo.jl index c039423..8645a43 100644 --- a/src/Cairo.jl +++ b/src/Cairo.jl @@ -9,6 +9,10 @@ depsjl = joinpath(dirname(@__FILE__), "..", "deps", "deps.jl") isfile(depsjl) ? include(depsjl) : error("Cairo not properly ", "installed. Please run\nPkg.build(\"Cairo\")") +function __init__() + +end + using Colors import Graphics @@ -17,17 +21,17 @@ import Graphics: arc, clip, close_path, creategc, fill_preserve, height, line_to import Base: copy, fill libcairo_version = VersionNumber(unsafe_string( - ccall((:cairo_version_string,Cairo._jl_libcairo),Cstring,()) )) -libpango_version = VersionNumber(unsafe_string( - ccall((:pango_version_string,Cairo._jl_libpango),Cstring,()) )) -if !Sys.iswindows() - libpangocairo_version = VersionNumber(unsafe_string( - ccall((:pango_version_string,Cairo._jl_libpangocairo),Cstring,()) )) - libgobject_version = VersionNumber( - unsafe_load(cglobal((:glib_major_version, Cairo._jl_libgobject), Cuint)), - unsafe_load(cglobal((:glib_minor_version, Cairo._jl_libgobject), Cuint)), - unsafe_load(cglobal((:glib_micro_version, Cairo._jl_libgobject), Cuint))) -end + ccall((:cairo_version_string, libcairo),Cstring,()) )) +# libpango_version = VersionNumber(unsafe_string( +# ccall((:pango_version_string,Cairo._jl_libpango),Cstring,()) )) +# if !Sys.iswindows() +# libpangocairo_version = VersionNumber(unsafe_string( +# ccall((:pango_version_string,Cairo._jl_libpangocairo),Cstring,()) )) +# libgobject_version = VersionNumber( +# unsafe_load(cglobal((:glib_major_version, Cairo._jl_libgobject), Cuint)), +# unsafe_load(cglobal((:glib_minor_version, Cairo._jl_libgobject), Cuint)), +# unsafe_load(cglobal((:glib_micro_version, Cairo._jl_libgobject), Cuint))) +# end import Base.show @@ -177,7 +181,7 @@ mutable struct CairoSurface{T<:Union{UInt32,RGB24,ARGB32}} <: GraphicsDevice end function CairoSurface{T}(ptr::Ptr{Nothing}) where {T} ccall( - (:cairo_surface_reference,_jl_libcairo), + (:cairo_surface_reference,libcairo), Ptr{Nothing}, (Ptr{Nothing}, ), ptr) self = new{T}(ptr) @compat finalizer(destroy, self) @@ -196,7 +200,7 @@ function destroy(surface::CairoSurface) if surface.ptr == C_NULL return end - ccall((:cairo_surface_destroy,_jl_libcairo), Nothing, (Ptr{Nothing},), surface.ptr) + ccall((:cairo_surface_destroy,libcairo), Nothing, (Ptr{Nothing},), surface.ptr) surface.ptr = C_NULL nothing end @@ -216,18 +220,18 @@ end for name in (:finish,:flush,:mark_dirty) @eval begin $name(surface::CairoSurface) = - ccall(($(string("cairo_surface_",name)),_jl_libcairo), + ccall(($(string("cairo_surface_",name)),libcairo), Nothing, (Ptr{Nothing},), surface.ptr) end end function status(surface::CairoSurface) - ccall((:cairo_surface_status,_jl_libcairo), + ccall((:cairo_surface_status,libcairo), Int32, (Ptr{Nothing},), surface.ptr) end function CairoImageSurface(w::Real, h::Real, format::Integer) - ptr = ccall((:cairo_image_surface_create,_jl_libcairo), + ptr = ccall((:cairo_image_surface_create,libcairo), Ptr{Nothing}, (Int32,Int32,Int32), format, w, h) CairoSurface(ptr, w, h) end @@ -244,7 +248,7 @@ function CairoImageSurface(img::Array{UInt32,2}, format::Integer; flipxy::Bool = w,h = size(img) stride = format_stride_for_width(format, w) @assert stride == 4w - ptr = ccall((:cairo_image_surface_create_for_data,_jl_libcairo), + ptr = ccall((:cairo_image_surface_create_for_data,libcairo), Ptr{Nothing}, (Ptr{Nothing},Int32,Int32,Int32,Int32), img, format, w, h, stride) CairoSurface(ptr, w, h, img) @@ -254,7 +258,7 @@ function CairoImageSurface(img::Matrix{T}) where {T<:Union{RGB24,ARGB32}} w,h = size(img) stride = format_stride_for_width(format(T), w) @assert stride == 4w - ptr = ccall((:cairo_image_surface_create_for_data,_jl_libcairo), + ptr = ccall((:cairo_image_surface_create_for_data,libcairo), Ptr{Nothing}, (Ptr{Nothing},Int32,Int32,Int32,Int32), img, format(T), w, h, stride) CairoSurface(ptr, w, h, img) @@ -268,13 +272,13 @@ format(surf::CairoSurface{T}) where {T<:Union{RGB24,ARGB32}} = T function CairoPDFSurface(stream::T, w::Real, h::Real) where {T<:IO} callback = get_stream_callback(T) - ptr = ccall((:cairo_pdf_surface_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_pdf_surface_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Any, Float64, Float64), callback, stream, w, h) CairoSurface(ptr, w, h) end function CairoPDFSurface(filename::AbstractString, w_pts::Real, h_pts::Real) - ptr = ccall((:cairo_pdf_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_pdf_surface_create,libcairo), Ptr{Nothing}, (Ptr{UInt8},Float64,Float64), String(filename), w_pts, h_pts) CairoSurface(ptr, w_pts, h_pts) end @@ -283,17 +287,17 @@ end function CairoEPSSurface(stream::T, w::Real, h::Real) where {T<:IO} callback = get_stream_callback(T) - ptr = ccall((:cairo_ps_surface_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_ps_surface_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Any, Float64, Float64), callback, stream, w, h) - ccall((:cairo_ps_surface_set_eps,_jl_libcairo), Nothing, + ccall((:cairo_ps_surface_set_eps,libcairo), Nothing, (Ptr{Nothing},Int32), ptr, 1) CairoSurface(ptr, w, h) end function CairoEPSSurface(filename::AbstractString, w_pts::Real, h_pts::Real) - ptr = ccall((:cairo_ps_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_ps_surface_create,libcairo), Ptr{Nothing}, (Ptr{UInt8},Float64,Float64), String(filename), w_pts, h_pts) - ccall((:cairo_ps_surface_set_eps,_jl_libcairo), Nothing, + ccall((:cairo_ps_surface_set_eps,libcairo), Nothing, (Ptr{Nothing},Int32), ptr, 1) CairoSurface(ptr, w_pts, h_pts) end @@ -302,26 +306,26 @@ end function CairoPSSurface(stream::IOStream, w::Real, h::Real) callback = cfunction(write_to_ios_callback, Int32, Tuple{Ptr{Nothing},Ptr{UInt8},UInt32}) - ptr = ccall((:cairo_ps_surface_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_ps_surface_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Ptr{Nothing}, Float64, Float64), callback, stream, w, h) - ccall((:cairo_ps_surface_set_eps,_jl_libcairo), Nothing, + ccall((:cairo_ps_surface_set_eps,libcairo), Nothing, (Ptr{Nothing},Int32), ptr, 0) CairoSurface(ptr, w, h) end function CairoPSSurface(stream::T, w::Real, h::Real) where {T<:IO} callback = get_stream_callback(T) - ptr = ccall((:cairo_ps_surface_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_ps_surface_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Any, Float64, Float64), callback, stream, w, h) - ccall((:cairo_ps_surface_set_eps,_jl_libcairo), Nothing, + ccall((:cairo_ps_surface_set_eps,libcairo), Nothing, (Ptr{Nothing},Int32), ptr, 0) CairoSurface(ptr, w, h) end function CairoPSSurface(filename::AbstractString, w_pts::Real, h_pts::Real) - ptr = ccall((:cairo_ps_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_ps_surface_create,libcairo), Ptr{Nothing}, (Ptr{UInt8},Float64,Float64), String(filename), w_pts, h_pts) - ccall((:cairo_ps_surface_set_eps,_jl_libcairo), Nothing, + ccall((:cairo_ps_surface_set_eps,libcairo), Nothing, (Ptr{Nothing},Int32), ptr, 0) CairoSurface(ptr, w_pts, h_pts) end @@ -329,20 +333,20 @@ end ## Xlib ## function CairoXlibSurface(display, drawable, visual, w, h) - ptr = ccall((:cairo_xlib_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_xlib_surface_create,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Int, Ptr{Nothing}, Int32, Int32), display, drawable, visual, w, h) CairoSurface(ptr, w, h) end CairoXlibSurfaceSetSize(surface, w, h) = - ccall((:cairo_xlib_surface_set_size,_jl_libcairo), Nothing, + ccall((:cairo_xlib_surface_set_size,libcairo), Nothing, (Ptr{Nothing}, Int32, Int32), surface, w, h) ## Quartz ## function CairoQuartzSurface(context, w, h) - ptr = ccall((:cairo_quartz_surface_create_for_cg_context,_jl_libcairo), + ptr = ccall((:cairo_quartz_surface_create_for_cg_context,libcairo), Ptr{Nothing}, (Ptr{Nothing}, UInt32, UInt32), context, w, h) CairoSurface(ptr, w, h) end @@ -350,7 +354,7 @@ end ## Win32 ## function CairoWin32Surface(hdc,w,h) - ptr = ccall((:cairo_win32_surface_create, _jl_libcairo), + ptr = ccall((:cairo_win32_surface_create, libcairo), Ptr{Nothing}, (Ptr{Nothing},), hdc) CairoSurface(ptr,w,h) end @@ -359,13 +363,13 @@ end function CairoSVGSurface(stream::T, w::Real, h::Real) where {T<:IO} callback = get_stream_callback(T) - ptr = ccall((:cairo_svg_surface_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_svg_surface_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Any, Float64, Float64), callback, stream, w, h) CairoSurface(ptr, w, h) end function CairoSVGSurface(filename::AbstractString, w::Real, h::Real) - ptr = ccall((:cairo_svg_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_svg_surface_create,libcairo), Ptr{Nothing}, (Ptr{UInt8},Float64,Float64), String(filename), w, h) CairoSurface(ptr, w, h) end @@ -373,23 +377,23 @@ end ## PNG ## function read_from_png(filename::AbstractString) - ptr = ccall((:cairo_image_surface_create_from_png,_jl_libcairo), + ptr = ccall((:cairo_image_surface_create_from_png,libcairo), Ptr{Nothing}, (Ptr{UInt8},), String(filename)) - w = ccall((:cairo_image_surface_get_width,_jl_libcairo), + w = ccall((:cairo_image_surface_get_width,libcairo), Int32, (Ptr{Nothing},), ptr) - h = ccall((:cairo_image_surface_get_height,_jl_libcairo), + h = ccall((:cairo_image_surface_get_height,libcairo), Int32, (Ptr{Nothing},), ptr) CairoSurface(ptr, w, h) end function write_to_png(surface::CairoSurface, stream::T) where {T<:IO} callback = get_stream_callback(T) - ccall((:cairo_surface_write_to_png_stream,_jl_libcairo), Nothing, + ccall((:cairo_surface_write_to_png_stream,libcairo), Nothing, (Ptr{UInt8},Ptr{Nothing},Any), surface.ptr, callback, stream) end function write_to_png(surface::CairoSurface, filename::AbstractString) - ccall((:cairo_surface_write_to_png,_jl_libcairo), Nothing, + ccall((:cairo_surface_write_to_png,libcairo), Nothing, (Ptr{UInt8},Ptr{UInt8}), surface.ptr, String(filename)) end @@ -398,11 +402,11 @@ show(io::IO, ::MIME"image/png", surface::CairoSurface) = function read_from_png(stream::T) where {T<:IO} callback = get_readstream_callback(T) - ptr = ccall((:cairo_image_surface_create_from_png_stream, Cairo._jl_libcairo), + ptr = ccall((:cairo_image_surface_create_from_png_stream, Cairo.libcairo), Ptr{Nothing}, (Ptr{Nothing},Ref{IO}), callback, stream) - w = ccall((:cairo_image_surface_get_width,Cairo._jl_libcairo), + w = ccall((:cairo_image_surface_get_width,Cairo.libcairo), Int32, (Ptr{Nothing},), ptr) - h = ccall((:cairo_image_surface_get_height,Cairo._jl_libcairo), + h = ccall((:cairo_image_surface_get_height,Cairo.libcairo), Int32, (Ptr{Nothing},), ptr) Cairo.CairoSurface(ptr, w, h) end @@ -411,7 +415,7 @@ end ## Generic ## function surface_create_similar(s::CairoSurface, w = width(s), h = height(s)) - ptr = ccall((:cairo_surface_create_similar,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_surface_create_similar,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Int32, Int32, Int32), s.ptr, CONTENT_COLOR_ALPHA, w, h) CairoSurface(ptr, w, h) @@ -420,7 +424,7 @@ end # Utilities function format_stride_for_width(format::Integer, width::Integer) - ccall((:cairo_format_stride_for_width,_jl_libcairo), Int32, + ccall((:cairo_format_stride_for_width,libcairo), Int32, (Int32,Int32), format, width) end @@ -431,7 +435,7 @@ mutable struct CairoScript <: GraphicsDevice ptr::Ptr{Nothing} function CairoScript(filename::AbstractString) - ptr = ccall((:cairo_script_create,_jl_libcairo), + ptr = ccall((:cairo_script_create,libcairo), Ptr{Nothing}, (Ptr{UInt8},), String(filename)) self = new(ptr) @compat finalizer(destroy, self) @@ -440,7 +444,7 @@ mutable struct CairoScript <: GraphicsDevice function CairoScript(stream::T) where {T<:IO} callback = get_stream_callback(T) - ptr = ccall((:cairo_script_create_for_stream,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_script_create_for_stream,libcairo), Ptr{Nothing}, (Ptr{Nothing}, Any), callback, stream) self = new(ptr) @compat finalizer(destroy, self) @@ -452,28 +456,28 @@ function destroy(s::CairoScript) if s.ptr == C_NULL return end - ccall((:cairo_device_destroy,_jl_libcairo), Nothing, (Ptr{Nothing},), s.ptr) + ccall((:cairo_device_destroy,libcairo), Nothing, (Ptr{Nothing},), s.ptr) s.ptr = C_NULL nothing end function CairoScriptSurface(filename::AbstractString, w::Real, h::Real) s = CairoScript(filename) - ptr = ccall((:cairo_script_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_script_surface_create,libcairo), Ptr{Nothing}, (Ptr{Nothing},Int32,Float64,Float64),s.ptr ,CONTENT_COLOR_ALPHA, w, h) CairoSurface(ptr, w, h) end function CairoScriptSurface(filename::AbstractString,sc::CairoSurface) s = CairoScript(filename) - ptr = ccall((:cairo_script_surface_create_for_target,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_script_surface_create_for_target,libcairo), Ptr{Nothing}, (Ptr{Nothing},Ptr{Nothing}),s.ptr, sc.ptr) CairoSurface(ptr, sc.width, sc.height) end function CairoScriptSurface(stream::IO, w::Real, h::Real) s = CairoScript(stream) - ptr = ccall((:cairo_script_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_script_surface_create,libcairo), Ptr{Nothing}, (Ptr{Nothing},Int32,Float64,Float64),s.ptr ,CONTENT_COLOR_ALPHA, w, h) CairoSurface(ptr, w, h) end @@ -489,12 +493,12 @@ end CairoRectangle() = CairoRectangle(0.0, 0.0, 0.0, 0.0) function CairoRecordingSurface(content::Int32,extents::CairoRectangle) - ptr = ccall((:cairo_recording_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_recording_surface_create,libcairo), Ptr{Nothing}, (Int32,Ptr{Nothing}),content, Ref(extents)) CairoSurface(ptr) end function CairoRecordingSurface(content::Int32) - ptr = ccall((:cairo_recording_surface_create,_jl_libcairo), Ptr{Nothing}, + ptr = ccall((:cairo_recording_surface_create,libcairo), Ptr{Nothing}, (Int32,Ptr{Nothing}),content, C_NULL) CairoSurface(ptr) end @@ -503,7 +507,7 @@ CairoRecordingSurface() = CairoRecordingSurface(CONTENT_COLOR_ALPHA) function script_from_recording_surface(s::CairoScript,r::CairoSurface) - ccall((:cairo_script_from_recording_surface,_jl_libcairo), Int32, + ccall((:cairo_script_from_recording_surface,libcairo), Int32, (Ptr{Nothing},Ptr{Nothing}),s.ptr, r.ptr) end # ----------------------------------------------------------------------------- @@ -514,23 +518,23 @@ mutable struct CairoContext <: GraphicsContext layout::Ptr{Nothing} # cache PangoLayout function CairoContext(surface::CairoSurface) - ptr = ccall((:cairo_create,_jl_libcairo), + ptr = ccall((:cairo_create,libcairo), Ptr{Nothing}, (Ptr{Nothing},), surface.ptr) - layout = ccall((:pango_cairo_create_layout,_jl_libpangocairo), - Ptr{Nothing}, (Ptr{Nothing},), ptr) - self = new(ptr, surface, layout) + # layout = ccall((:pango_cairo_create_layout,_jl_libpangocairo), + # Ptr{Nothing}, (Ptr{Nothing},), ptr) + self = new(ptr, surface, C_NULL) @compat finalizer(destroy, self) self end function CairoContext(ptr::Ptr{Nothing}) - ccall((:cairo_reference,_jl_libcairo), + ccall((:cairo_reference,libcairo), Ptr{Nothing}, (Ptr{Nothing},), ptr) - surface_p = ccall((:cairo_get_target,_jl_libcairo), + surface_p = ccall((:cairo_get_target,libcairo), Ptr{Nothing}, (Ptr{Nothing},), ptr) surface = CairoSurface(surface_p) - layout = ccall((:pango_cairo_create_layout,_jl_libpangocairo), - Ptr{Nothing}, (Ptr{Nothing},), ptr) - self = new(ptr,surface,layout) + # layout = ccall((:pango_cairo_create_layout,_jl_libpangocairo), + # Ptr{Nothing}, (Ptr{Nothing},), ptr) + self = new(ptr,surface,C_NULL) @compat finalizer(destroy, self) self end @@ -544,7 +548,7 @@ function destroy(ctx::CairoContext) if ctx.ptr == C_NULL return end - ccall((:g_object_unref,_jl_libgobject), Nothing, (Ptr{Nothing},), ctx.layout) + # ccall((:g_object_unref,_jl_libgobject), Nothing, (Ptr{Nothing},), ctx.layout) _destroy(ctx) ctx.ptr = C_NULL nothing @@ -593,7 +597,7 @@ for (NAME, FUNCTION) in Any[(:_destroy, :cairo_destroy), (:stroke_transformed_preserve, :cairo_stroke_preserve)] @eval begin $NAME(ctx::CairoContext) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},), ctx.ptr) end end @@ -602,24 +606,24 @@ function stroke(ctx::CairoContext) save(ctx) # use uniform scale for stroking reset_transform(ctx) - ccall((:cairo_stroke, _jl_libcairo), Nothing, (Ptr{Nothing},), ctx.ptr) + ccall((:cairo_stroke, libcairo), Nothing, (Ptr{Nothing},), ctx.ptr) restore(ctx) end function stroke_preserve(ctx::CairoContext) save(ctx) reset_transform(ctx) - ccall((:cairo_stroke_preserve, _jl_libcairo), Nothing, (Ptr{Nothing},), ctx.ptr) + ccall((:cairo_stroke_preserve, libcairo), Nothing, (Ptr{Nothing},), ctx.ptr) restore(ctx) end function paint_with_alpha(ctx::CairoContext, a) - ccall((:cairo_paint_with_alpha, _jl_libcairo), + ccall((:cairo_paint_with_alpha, libcairo), Nothing, (Ptr{Nothing}, Float64), ctx.ptr, a) end function get_operator(ctx::CairoContext) - Int(ccall((:cairo_get_operator,_jl_libcairo), Int32, (Ptr{Nothing},), ctx.ptr)) + Int(ccall((:cairo_get_operator,libcairo), Int32, (Ptr{Nothing},), ctx.ptr)) end @@ -629,7 +633,7 @@ for (NAME, FUNCTION) in Any[(:set_fill_type, :cairo_set_fill_rule), (:set_line_join, :cairo_set_line_join)] @eval begin $NAME(ctx::CairoContext, i0::Integer) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Int32), ctx.ptr, i0) end end @@ -639,7 +643,7 @@ for (NAME, FUNCTION) in Any[(:set_line_width, :cairo_set_line_width), (:set_font_size, :cairo_set_font_size)] @eval begin $NAME(ctx::CairoContext, d0::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64), ctx.ptr, d0) end end @@ -652,7 +656,7 @@ for (NAME, FUNCTION) in Any[(:line_to, :cairo_line_to), (:translate, :cairo_translate)] @eval begin $NAME(ctx::CairoContext, d0::Real, d1::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64,Float64), ctx.ptr, d0, d1) end end @@ -661,7 +665,7 @@ for (NAME, FUNCTION) in Any[(:curve_to, :cairo_curve_to), (:rel_curve_to, :cairo_rel_curve_to)] @eval begin $NAME(ctx::CairoContext, d0::Real, d1::Real, d2::Real, d3::Real, d4::Real, d5::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64,Float64,Float64), ctx.ptr, d0, d1, d2, d3, d4, d5) end end @@ -670,7 +674,7 @@ for (NAME, FUNCTION) in Any[(:arc, :cairo_arc), (:arc_negative, :cairo_arc_negative)] @eval begin $NAME(ctx::CairoContext, xc::Real, yc::Real, radius::Real, angle1::Real, angle2::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64,Float64), ctx.ptr, xc, yc, radius, angle1, angle2) end @@ -678,11 +682,11 @@ end set_source_rgb(ctx::CairoContext, r::Real, g::Real, b::Real) = - ccall((:cairo_set_source_rgb,_jl_libcairo), + ccall((:cairo_set_source_rgb,libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64), ctx.ptr, r, g, b) set_source_rgba(ctx::CairoContext, r::Real, g::Real, b::Real, a::Real) = - ccall((:cairo_set_source_rgba,_jl_libcairo), Nothing, + ccall((:cairo_set_source_rgba,libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64), ctx.ptr, r, g, b, a) @@ -701,17 +705,17 @@ set_source(dest::CairoContext, src::CairoContext) = set_source_surface(dest, src set_source(dest::CairoContext, src::CairoSurface) = set_source_surface(dest, src) rectangle(ctx::CairoContext, x::Real, y::Real, w::Real, h::Real) = - ccall((:cairo_rectangle,_jl_libcairo), Nothing, + ccall((:cairo_rectangle,libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64), ctx.ptr, x, y, w, h) function set_dash(ctx::CairoContext, dashes::Vector{Float64}, offset::Real = 0.0) - ccall((:cairo_set_dash,_jl_libcairo), Nothing, + ccall((:cairo_set_dash,libcairo), Nothing, (Ptr{Nothing},Ptr{Float64},Int32,Float64), ctx.ptr, dashes, length(dashes), offset) end function set_source_surface(ctx::CairoContext, s::CairoSurface, x::Real = 0.0, y::Real = 0.0) - ccall((:cairo_set_source_surface,_jl_libcairo), Nothing, + ccall((:cairo_set_source_surface,libcairo), Nothing, (Ptr{Nothing},Ptr{Nothing},Float64,Float64), ctx.ptr, s.ptr, x, y) end @@ -749,13 +753,13 @@ function destroy(path::CairoPath) if path.ptr == C_NULL return end - ccall((:cairo_path_destroy,_jl_libcairo), Nothing, (Ptr{Nothing},), path.ptr) + ccall((:cairo_path_destroy,libcairo), Nothing, (Ptr{Nothing},), path.ptr) path.ptr = C_NULL nothing end function copy_path(ctx::CairoContext) - ptr = ccall((:cairo_copy_path, _jl_libcairo), + ptr = ccall((:cairo_copy_path, libcairo), Ptr{Nothing}, (Ptr{Nothing},),ctx.ptr) path = CairoPath(ptr) @compat finalizer(destroy, path) @@ -763,7 +767,7 @@ function copy_path(ctx::CairoContext) end function copy_path_flat(ctx::CairoContext) - ptr = ccall((:cairo_copy_path_flat, _jl_libcairo), + ptr = ccall((:cairo_copy_path_flat, libcairo), Ptr{Nothing}, (Ptr{Nothing},),ctx.ptr) path = CairoPath(ptr) @compat finalizer(destroy, path) @@ -811,7 +815,7 @@ for (fname,cname) in ((:user_to_device!,:cairo_user_to_device), (:device_to_user_distance!,:cairo_device_to_user_distance)) @eval begin function ($fname)(ctx::CairoContext, p::Vector{Float64}) - ccall(($(Expr(:quote,cname)),_jl_libcairo), + ccall(($(Expr(:quote,cname)),libcairo), Nothing, (Ptr{Nothing}, Ptr{Float64}, Ptr{Float64}), ctx.ptr, pointer(p,1), pointer(p,2)) p @@ -843,7 +847,7 @@ function push_group(ctx::CairoContext) if ctx.ptr == C_NULL return end - ccall((:cairo_push_group, _jl_libcairo), Nothing, (Ptr{Nothing},),ctx.ptr) + ccall((:cairo_push_group, libcairo), Nothing, (Ptr{Nothing},),ctx.ptr) nothing end @@ -851,7 +855,7 @@ function pop_group(ctx::CairoContext) if ctx.ptr == C_NULL return end - ptr = ccall((:cairo_pop_group, _jl_libcairo), Ptr{Nothing}, (Ptr{Nothing},),ctx.ptr) + ptr = ccall((:cairo_pop_group, libcairo), Ptr{Nothing}, (Ptr{Nothing},),ctx.ptr) pattern = CairoPattern(ptr) @compat finalizer(destroy, pattern) pattern @@ -864,15 +868,15 @@ mutable struct CairoPattern end function CairoPattern(s::CairoSurface) - ptr = ccall((:cairo_pattern_create_for_surface, _jl_libcairo), + ptr = ccall((:cairo_pattern_create_for_surface, libcairo), Ptr{Nothing}, (Ptr{Nothing},), s.ptr) # Ideally we'd check the status, but at least for certain releases of the library # the return value seems not to be set properly (random values are returned) -# status = ccall((:cairo_pattern_status, _jl_libcairo), +# status = ccall((:cairo_pattern_status, libcairo), # Cint, (Ptr{Nothing},), s.ptr) # if status != 0 # error("Error creating Cairo pattern: ", bytestring( -# ccall((:cairo_status_to_string, _jl_libcairo), +# ccall((:cairo_status_to_string, libcairo), # Ptr{UInt8}, (Cint,), status))) # end pattern = CairoPattern(ptr) @@ -881,26 +885,26 @@ function CairoPattern(s::CairoSurface) end set_source(dest::CairoContext, src::CairoPattern) = - ccall((:cairo_set_source, _jl_libcairo), + ccall((:cairo_set_source, libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), dest.ptr, src.ptr) function get_source(ctx::CairoContext) - CairoPattern(ccall((:cairo_get_source,_jl_libcairo), + CairoPattern(ccall((:cairo_get_source,libcairo), Ptr{Nothing}, (Ptr{Nothing},), ctx.ptr)) end function pattern_set_filter(p::CairoPattern, f) - ccall((:cairo_pattern_set_filter,_jl_libcairo), Nothing, + ccall((:cairo_pattern_set_filter,libcairo), Nothing, (Ptr{Nothing},Int32), p.ptr, f) end function pattern_set_extend(p::CairoPattern, val) - ccall((:cairo_pattern_set_extend,_jl_libcairo), Nothing, + ccall((:cairo_pattern_set_extend,libcairo), Nothing, (Ptr{Nothing},Int32), p.ptr, val) end function pattern_create_radial(cx0::Real, cy0::Real, radius0::Real, cx1::Real, cy1::Real, radius1::Real) - ptr = ccall((:cairo_pattern_create_radial, _jl_libcairo), + ptr = ccall((:cairo_pattern_create_radial, libcairo), Ptr{Nothing}, (Float64,Float64,Float64,Float64,Float64,Float64),cx0,cy0,radius0,cx1,cy1,radius1) pattern = CairoPattern(ptr) @compat finalizer(destroy, pattern) @@ -908,7 +912,7 @@ function pattern_create_radial(cx0::Real, cy0::Real, radius0::Real, cx1::Real, c end function pattern_create_linear(x0::Real, y0::Real, x1::Real, y1::Real) - ptr = ccall((:cairo_pattern_create_linear, _jl_libcairo), + ptr = ccall((:cairo_pattern_create_linear, libcairo), Ptr{Nothing}, (Float64,Float64,Float64,Float64),x0,y0,x1,y1) pattern = CairoPattern(ptr) @compat finalizer(destroy, pattern) @@ -916,33 +920,33 @@ function pattern_create_linear(x0::Real, y0::Real, x1::Real, y1::Real) end function pattern_add_color_stop_rgb(pat::CairoPattern, offset::Real, red::Real, green::Real, blue::Real) - ccall((:cairo_pattern_add_color_stop_rgb, _jl_libcairo), + ccall((:cairo_pattern_add_color_stop_rgb, libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64),pat.ptr,offset,red,green,blue) end function pattern_add_color_stop_rgba(pat::CairoPattern, offset::Real, red::Real, green::Real, blue::Real, alpha::Real) - ccall((:cairo_pattern_add_color_stop_rgba, _jl_libcairo), + ccall((:cairo_pattern_add_color_stop_rgba, libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64,Float64),pat.ptr,offset,red,green,blue,alpha) end function pattern_get_surface(pat::CairoPattern) ptrref = Ref{Ptr{Nothing}}() - status = ccall((:cairo_pattern_get_surface, _jl_libcairo), Cint, + status = ccall((:cairo_pattern_get_surface, libcairo), Cint, (Ptr{Nothing}, Ref{Ptr{Nothing}}), pat.ptr, ptrref) if status == STATUS_PATTERN_TYPE_MISMATCH error("Cannot get surface from a non-surface pattern.") end ptr = ptrref.x - ccall((:cairo_surface_reference, _jl_libcairo), Ptr{Nothing}, (Ptr{Nothing},), ptr) - typ = ccall((:cairo_surface_get_type, _jl_libcairo), Cint, (Ptr{Nothing},), ptr) + ccall((:cairo_surface_reference, libcairo), Ptr{Nothing}, (Ptr{Nothing},), ptr) + typ = ccall((:cairo_surface_get_type, libcairo), Cint, (Ptr{Nothing},), ptr) w = 0.0 h = 0.0 if typ == CAIRO_SURFACE_TYPE_IMAGE - w = ccall((:cairo_image_surface_get_width, _jl_libcairo), + w = ccall((:cairo_image_surface_get_width, libcairo), Int32, (Ptr{Nothing},), ptr) - h = ccall((:cairo_image_surface_get_height, _jl_libcairo), + h = ccall((:cairo_image_surface_get_height, libcairo), Int32, (Ptr{Nothing},), ptr) end return CairoSurface(ptr, w, h) @@ -952,7 +956,7 @@ function destroy(pat::CairoPattern) if pat.ptr == C_NULL return end - ccall((:cairo_pattern_destroy,_jl_libcairo), Nothing, (Ptr{Nothing},), pat.ptr) + ccall((:cairo_pattern_destroy,libcairo), Nothing, (Ptr{Nothing},), pat.ptr) pat.ptr = C_NULL nothing end @@ -961,14 +965,14 @@ end # create mesh pattern function CairoPatternMesh() - ptr = ccall((:cairo_pattern_create_mesh, _jl_libcairo), + ptr = ccall((:cairo_pattern_create_mesh, libcairo), Ptr{Nothing}, ()) pattern = CairoPattern(ptr) - #status = ccall((:cairo_pattern_status, _jl_libcairo), + #status = ccall((:cairo_pattern_status, libcairo), # Cint, (Ptr{Nothing},), pattern.ptr) #if status != 0 # error("Error creating Cairo pattern: ", bytestring( - # ccall((:cairo_status_to_string, _jl_libcairo), + # ccall((:cairo_status_to_string, libcairo), # Ptr{Uint8}, (Cint,), status))) #end @compat finalizer(destroy, pattern) @@ -980,7 +984,7 @@ end # (:set_font_size, :cairo_set_font_size)] # @eval begin # $NAME(ctx::CairoContext, d0::Real) = -# ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), +# ccall(($(Expr(:quote,FUNCTION)),libcairo), # Nothing, (Ptr{Nothing},Float64), ctx.ptr, d0) # end #end @@ -989,7 +993,7 @@ for (NAME, FUNCTION) in Any[(:mesh_pattern_begin_patch, :cairo_mesh_pattern_begi (:mesh_pattern_end_patch, :cairo_mesh_pattern_end_patch)] @eval begin $NAME(pattern::CairoPattern) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},), pattern.ptr) end end @@ -998,7 +1002,7 @@ for (NAME, FUNCTION) in Any[(:mesh_pattern_line_to, :cairo_mesh_pattern_line_to) (:mesh_pattern_move_to, :cairo_mesh_pattern_move_to)] @eval begin $NAME(pattern::CairoPattern, d0::Real, d1::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64,Float64), pattern.ptr, d0, d1) end end @@ -1007,30 +1011,30 @@ for (NAME, FUNCTION) in Any[(:mesh_pattern_curve_to, :cairo_mesh_pattern_curve_t @eval begin $NAME(pattern::CairoPattern, d0::Real, d1::Real, d2::Real, d3::Real, d4::Real, d5::Real) = - ccall(($(Expr(:quote,FUNCTION)),_jl_libcairo), + ccall(($(Expr(:quote,FUNCTION)),libcairo), Nothing, (Ptr{Nothing},Float64,Float64,Float64,Float64,Float64,Float64), pattern.ptr, d0, d1, d2, d3, d4, d5) end end function mesh_pattern_set_corner_color_rgb(pat::CairoPattern, corner_num::Real, red::Real, green::Real, blue::Real) - ccall((:cairo_mesh_pattern_set_corner_color_rgb, _jl_libcairo), + ccall((:cairo_mesh_pattern_set_corner_color_rgb, libcairo), Nothing, (Ptr{Nothing},Int32,Float64,Float64,Float64),pat.ptr,corner_num,red,green,blue) end function mesh_pattern_set_corner_color_rgba(pat::CairoPattern, corner_num::Real, red::Real, green::Real, blue::Real, alpha::Real) - ccall((:cairo_mesh_pattern_set_corner_color_rgba, _jl_libcairo), + ccall((:cairo_mesh_pattern_set_corner_color_rgba, libcairo), Nothing, (Ptr{Nothing},Int32,Float64,Float64,Float64,Float64),pat.ptr,corner_num,red,green,blue,alpha) end # ---- set_antialias(ctx::CairoContext, a) = - ccall((:cairo_set_antialias,_jl_libcairo), Nothing, + ccall((:cairo_set_antialias,libcairo), Nothing, (Ptr{Nothing},Cint), ctx.ptr, a) get_antialias(ctx::CairoContext) = - ccall((:cairo_get_antialias,_jl_libcairo), Cint, + ccall((:cairo_get_antialias,libcairo), Cint, (Ptr{Nothing},), ctx.ptr) # ----------------------------------------------------------------------------- @@ -1048,16 +1052,16 @@ CairoMatrix() = CairoMatrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) function get_matrix(ctx::CairoContext) m = [CairoMatrix()] - ccall((:cairo_get_matrix, _jl_libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), ctx.ptr, m) + ccall((:cairo_get_matrix, libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), ctx.ptr, m) m[1] end function set_matrix(ctx::CairoContext, m::CairoMatrix) - ccall((:cairo_set_matrix, _jl_libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), ctx.ptr, [m]) + ccall((:cairo_set_matrix, libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), ctx.ptr, [m]) end function set_matrix(p::CairoPattern, m::CairoMatrix) - ccall((:cairo_pattern_set_matrix, _jl_libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), p.ptr, [m]) + ccall((:cairo_pattern_set_matrix, libcairo), Nothing, (Ptr{Nothing}, Ptr{Nothing}), p.ptr, [m]) end @@ -1131,7 +1135,7 @@ text_extents(ctx::CairoContext,value::AbstractString) = text_extents!(ctx,value, Matrix{Float64}(uninitialized, 6, 1)) function text_extents!(ctx::CairoContext,value::AbstractString,extents) - ccall((:cairo_text_extents, _jl_libcairo), + ccall((:cairo_text_extents, libcairo), Nothing, (Ptr{Nothing}, Ptr{UInt8}, Ptr{Float64}), ctx.ptr, String(value), extents) extents @@ -1143,7 +1147,7 @@ function path_extents(ctx::CairoContext) dy1 = Cdouble[0] dy2 = Cdouble[0] - ccall((:cairo_path_extents, _jl_libcairo), + ccall((:cairo_path_extents, libcairo), Nothing, (Ptr{Nothing}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}, Ptr{Cdouble}), ctx.ptr, dx1, dy1, dx2, dy2) @@ -1153,20 +1157,20 @@ end function show_text(ctx::CairoContext,value::AbstractString) - ccall((:cairo_show_text, _jl_libcairo), + ccall((:cairo_show_text, libcairo), Nothing, (Ptr{Nothing}, Ptr{UInt8}), ctx.ptr, String(value)) end function text_path(ctx::CairoContext,value::AbstractString) - ccall((:cairo_text_path, _jl_libcairo), + ccall((:cairo_text_path, libcairo), Nothing, (Ptr{Nothing}, Ptr{UInt8}), ctx.ptr, String(value)) end function select_font_face(ctx::CairoContext,family::AbstractString,slant,weight) - ccall((:cairo_select_font_face, _jl_libcairo), + ccall((:cairo_select_font_face, libcairo), Nothing, (Ptr{Nothing}, Ptr{UInt8}, font_slant_t, font_weight_t), ctx.ptr, String(family), diff --git a/test/runtests.jl b/test/runtests.jl index 039e116..fef9c2e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -55,9 +55,9 @@ end # Test creating a CairoContext from a cairo_t pointer surf = CairoImageSurface(fill(ARGB32(0), 10, 10)) - ctx_ptr = ccall((:cairo_create, Cairo._jl_libcairo),Ptr{Nothing}, (Ptr{Nothing}, ), surf.ptr) + ctx_ptr = ccall((:cairo_create, Cairo.libcairo),Ptr{Nothing}, (Ptr{Nothing}, ), surf.ptr) ctx = CairoContext(ctx_ptr) - ccall((:cairo_destroy,Cairo._jl_libcairo),Nothing, (Ptr{Nothing}, ), ctx_ptr) + ccall((:cairo_destroy,Cairo.libcairo),Nothing, (Ptr{Nothing}, ), ctx_ptr) @test isa(ctx, CairoContext) end @@ -70,7 +70,7 @@ end @testset "Samples " begin samples_dir_path = joinpath(dirname(dirname(@__FILE__)), "samples") - samples_files = filter(str->endswith(str,".jl"), readdir(samples_dir_path)) + samples_files = filter(str->endswith(str,".jl") && !contains(str, "pango"), readdir(samples_dir_path)) # filter known >= 1.12 -> sample_meshpattern.jl if Cairo.libcairo_version < v"1.12.0" files_to_exclude = ["sample_meshpattern.jl","sample_record0.jl","sample_record1.jl","sample_script0.jl"]