Hello colleagues,
i'm trying to get further interfacing to libcairo, but i somehow run into
problems for matching c structures.
My example
using Cairo
i = CairoImageSurface(100,100,Cairo.FORMAT_RGB24)
cr = CairoContext(i)
select_font_face (cr, "Sans", Cairo.FONT_SLANT_NORMAL,
Cairo.FONT_WEIGHT_BOLD);
set_font_size (cr, 90.0);
move_to (cr, 10.0, 135.0);
text_path (cr, "5");
# typedef struct cairo_path {
# cairo_status_t status;
# cairo_path_data_t *data;
# int num_data;
# } cairo_path_t;
type Pdata
status::Cairo.status_t
data::Ptr{Uint32}
num_data::Uint32
end
function pdata_copy_path(ctx::CairoContext)
ccall((:cairo_copy_path, Cairo._jl_libcairo),
Pdata, (Ptr{Void},),ctx.ptr)
end
p = pdata_copy_path(cr);
returns, here:
lobi@orange4:~/juliarepo$ ../julia/julia
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "help()" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.3.9 (2015-05-30 11:24 UTC)
_/ |\__'_|_|_|\__'_| |
|__/ | x86_64-linux-gnu
julia> include("cairop2.jl")
Pdata(87413648,Ptr{Uint32} @0x000000000000004f,0x0387dd54)
julia>
which i do not consider correct, as i know the cairo status (first entry in
Pdata) should be 0, the following pointer to data is the number of entries
(i have a correctly working c program for the same example).
I spare you the details, but the same code run with a v0.4.0-dev+5208
segfaults...
How do i get my 3 entries in the path data structure (see cairo.h
definition in comment inline) correct (and version independent)?
Wishing a happy day,
Andreas