graphics/ocaml-cairo: Objective Caml binding for the Cairo library
Importing a slightly outdated release that supports the ocaml and dune versions available in the ports tree. Including an upstream commit fixing a memory leak that was discovered in this release.
This commit is contained in:
parent
e7693e387c
commit
f2183b130f
6 changed files with 163 additions and 0 deletions
|
@ -588,6 +588,7 @@
|
|||
SUBDIR += nsxiv
|
||||
SUBDIR += nurbs++
|
||||
SUBDIR += nvidia-texture-tools
|
||||
SUBDIR += ocaml-cairo
|
||||
SUBDIR += ocaml-images
|
||||
SUBDIR += ocaml-lablgl
|
||||
SUBDIR += ocrad
|
||||
|
|
40
graphics/ocaml-cairo/Makefile
Normal file
40
graphics/ocaml-cairo/Makefile
Normal file
|
@ -0,0 +1,40 @@
|
|||
PORTNAME= cairo
|
||||
PORTVERSION= 0.6.1
|
||||
CATEGORIES= graphics
|
||||
PKGNAMEPREFIX= ocaml-
|
||||
|
||||
MAINTAINER= madpilot@FreeBSD.org
|
||||
COMMENT= Objective Caml binding for the Cairo library
|
||||
WWW= https://github.com/Chris00/ocaml-cairo
|
||||
|
||||
LICENSE= LGPL3
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE.md
|
||||
|
||||
BUILD_DEPENDS= dune:devel/ocaml-dune
|
||||
LIB_DEPENDS+= libfreetype.so:print/freetype2 \
|
||||
libfontconfig.so:x11-fonts/fontconfig
|
||||
|
||||
USES= gnome pkgconfig
|
||||
USE_GNOME= cairo
|
||||
USE_OCAML= yes
|
||||
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= Chris00
|
||||
GH_PROJECT= ${PKGNAMEPREFIX}${PORTNAME}
|
||||
|
||||
DOCSDIR= ${OCAML_DOCSDIR}/cairo2
|
||||
EXAMPLESDIR= ${OCAML_EXAMPLESDIR}/${PORTNAME}
|
||||
|
||||
OPTIONS_DEFINE= DOCS EXAMPLES
|
||||
|
||||
do-build:
|
||||
cd ${BUILD_WRKSRC} && dune build --verbose -j ${MAKE_JOBS_NUMBER} -p cairo2
|
||||
|
||||
do-install:
|
||||
cd ${INSTALL_WRKSRC} && dune install --destdir=${STAGEDIR} \
|
||||
--libdir=${OCAML_SITELIBDIR} cairo2
|
||||
|
||||
post-install-EXAMPLES-on:
|
||||
@(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})
|
||||
|
||||
.include <bsd.port.mk>
|
3
graphics/ocaml-cairo/distinfo
Normal file
3
graphics/ocaml-cairo/distinfo
Normal file
|
@ -0,0 +1,3 @@
|
|||
TIMESTAMP = 1669022120
|
||||
SHA256 (Chris00-ocaml-cairo-0.6.1_GH0.tar.gz) = 2d4492b62b31e714a7a98fcf54b98a46ae5f6430ebc7f1620568a9a28498ad11
|
||||
SIZE (Chris00-ocaml-cairo-0.6.1_GH0.tar.gz) = 109786
|
64
graphics/ocaml-cairo/files/patch-issue-19
Normal file
64
graphics/ocaml-cairo/files/patch-issue-19
Normal file
|
@ -0,0 +1,64 @@
|
|||
From 3c70f2ff18650c4794556049cd4ea22a58cc719e Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Troestler <Christophe.Troestler@umons.ac.be>
|
||||
Date: Sun, 27 Sep 2020 23:20:52 +0200
|
||||
Subject: [PATCH] Do not store the Caml_ba_array_val pointer during surface
|
||||
creation
|
||||
|
||||
Fixes https://github.com/Chris00/ocaml-cairo/issues/19
|
||||
---
|
||||
src/cairo_stubs.c | 3 ++-
|
||||
tests/image_create.ml | 5 +++--
|
||||
2 files changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/cairo_stubs.c b/src/cairo_stubs.c
|
||||
index 641ee2c..200abf3 100644
|
||||
--- src/cairo_stubs.c
|
||||
+++ src/cairo_stubs.c
|
||||
@@ -1580,6 +1580,7 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
|
||||
caml_cairo_image_bigarray_finalize);
|
||||
}
|
||||
|
||||
+#define b (Caml_ba_array_val(vb))
|
||||
#define SURFACE_CREATE_DATA(name) \
|
||||
CAMLexport value caml_cairo_image_surface_create_for_##name \
|
||||
(value vb, value vformat, value vwidth, value vheight, value vstride) \
|
||||
@@ -1588,7 +1589,6 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
|
||||
CAMLlocal1(vsurf); \
|
||||
cairo_surface_t* surf; \
|
||||
const int width = Int_val(vwidth); \
|
||||
- struct caml_ba_array *b = Caml_ba_array_val(vb); \
|
||||
cairo_status_t status; \
|
||||
\
|
||||
if ((b->flags & CAML_BA_MANAGED_MASK) == CAML_BA_MAPPED_FILE) \
|
||||
@@ -1610,6 +1610,7 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
|
||||
|
||||
SURFACE_CREATE_DATA(data8)
|
||||
SURFACE_CREATE_DATA(data32)
|
||||
+#undef b
|
||||
|
||||
#define SURFACE_GET_DATA(type, num_dims, dims ...) \
|
||||
CAMLexport value caml_cairo_image_surface_get_##type(value vsurf) \
|
||||
diff --git a/tests/image_create.ml b/tests/image_create.ml
|
||||
index eec98d6..b13c206 100644
|
||||
--- tests/image_create.ml
|
||||
+++ tests/image_create.ml
|
||||
@@ -10,6 +10,7 @@ let create() =
|
||||
|
||||
let () =
|
||||
let cr = create() in
|
||||
+ printf "With Cairo handle:\n%!";
|
||||
set_source_rgb cr 1. 1. 1.;
|
||||
rectangle cr 0. 0. ~w:300. ~h:300.;
|
||||
fill cr;
|
||||
@@ -21,9 +22,9 @@ let () =
|
||||
show_text cr "Hello";
|
||||
Gc.compact(); Gc.compact();
|
||||
|
||||
- eprintf "Write image\n%!";
|
||||
+ eprintf "- Write image\n%!";
|
||||
PNG.write (get_target cr) "test_image.png";
|
||||
- eprintf "Finish surface\n%!";
|
||||
+ eprintf "- Finish surface\n%!";
|
||||
Surface.finish (get_target cr);
|
||||
Gc.compact()
|
||||
|
2
graphics/ocaml-cairo/pkg-descr
Normal file
2
graphics/ocaml-cairo/pkg-descr
Normal file
|
@ -0,0 +1,2 @@
|
|||
This is an OCaml binding for the Cairo library, a 2D graphics library
|
||||
with support for multiple output devices.
|
53
graphics/ocaml-cairo/pkg-plist
Normal file
53
graphics/ocaml-cairo/pkg-plist
Normal file
|
@ -0,0 +1,53 @@
|
|||
%%OCAML_SITELIBDIR%%/cairo2/META
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.a
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cma
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmi
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmt
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmti
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmx
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmxa
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.cmxs
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.ml
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo.mli
|
||||
%%OCAML_SITELIBDIR%%/cairo2/cairo_ocaml.h
|
||||
%%OCAML_SITELIBDIR%%/cairo2/dune-package
|
||||
%%OCAML_SITELIBDIR%%/cairo2/libcairo_stubs.a
|
||||
%%OCAML_SITELIBDIR%%/cairo2/opam
|
||||
%%OCAML_SITELIBDIR%%/stublibs/dllcairo_stubs.so
|
||||
%%PORTDOCS%%%%DOCSDIR%%/CHANGES.md
|
||||
%%PORTDOCS%%%%DOCSDIR%%/LICENSE.md
|
||||
%%PORTDOCS%%%%DOCSDIR%%/README.md
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arcs.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/clip.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/curve_to.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dash.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/diagram.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/draw.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dune
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fill.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fill_stroke.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fill_style.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gradient.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/graphics_demo.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mask.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/paint.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/path_close.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pythagoras_tree.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/recording.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/set_line_cap.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/set_line_join.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setsourcegradient.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/setsourcergba.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/showtext.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/stroke.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/text.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/text_align_center.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/text_extents.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/text_rotate.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/textextents.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tips_ellipse.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tips_font.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tips_letter.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/word_cloud/cloud.ml
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/word_cloud/cloud.mli
|
||||
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/word_cloud/run.ml
|
Loading…
Reference in a new issue