Skip to content

Commit

Permalink
Expand support for Cairo patterns
Browse files Browse the repository at this point in the history
  • Loading branch information
timholy committed Nov 27, 2013
1 parent 3d38413 commit 2fb3809
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/Cairo.jl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export
creategc, getgc, save, restore, show_page, width, height,

# drawing attribute manipulation
pattern_set_filter, set_antialias, get_antialias,
pattern_set_filter, pattern_set_extend, set_antialias, get_antialias,
set_fill_type, set_line_width, set_dash,
set_source_rgb, set_source_rgba, set_source_surface, set_line_type,
set_operator, set_source,
Expand Down Expand Up @@ -509,6 +509,28 @@ type CairoPattern
ptr::Ptr{Void}
end

function CairoPattern(s::CairoSurface)
ptr = ccall((:cairo_pattern_create_for_surface, _jl_libcairo),
Ptr{Void}, (Ptr{Void},), s.ptr)
status = ccall((:cairo_pattern_status, _jl_libcairo),
Cint, (Ptr{Void},), s.ptr)
if status != 0
error("Error creating Cairo pattern: ", bytestring(
ccall((:cairo_status_to_string, _jl_libcairo),
Ptr{Uint8}, (Cint,), status)))
end
pattern = CairoPattern(ptr)
finalizer(pattern, CairoPatternDestroy)
pattern
end

CairoPatternDestroy(p::CairoPattern) = ccall((:cairo_pattern_destroy, _jl_libcairo),
Void, (Ptr{Void},), p.ptr)

set_source(dest::CairoContext, src::CairoPattern) =
ccall((:cairo_set_source, _jl_libcairo),
Void, (Ptr{Void}, Ptr{Void}), dest.ptr, src.ptr)

function get_source(ctx::CairoContext)
CairoPattern(ccall((:cairo_get_source,_jl_libcairo),
Ptr{Void}, (Ptr{Void},), ctx.ptr))
Expand All @@ -519,6 +541,11 @@ function pattern_set_filter(p::CairoPattern, f)
(Ptr{Void},Int32), p.ptr, f)
end

function pattern_set_extend(p::CairoPattern, val)
ccall((:cairo_pattern_set_extend,_jl_libcairo), Void,
(Ptr{Void},Int32), p.ptr, val)
end

set_antialias(ctx::CairoContext, a) =
ccall((:cairo_set_antialias,_jl_libcairo), Void,
(Ptr{Void},Cint), ctx.ptr, a)
Expand Down
5 changes: 5 additions & 0 deletions src/constants.jl
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ const FILTER_NEAREST = 3
const FILTER_BILINEAR = 4
const FILTER_GAUSSIAN = 5

const EXTEND_NONE = 0
const EXTEND_REPEAT = 1
const EXTEND_REFLECT = 2
const EXTEND_PAD = 3

const ANTIALIAS_DEFAULT = 0
const ANTIALIAS_NONE = 1
const ANTIALIAS_GRAY = 2
Expand Down

0 comments on commit 2fb3809

Please sign in to comment.