diff --git a/src/azure-c.cpp b/src/azure-c.cpp index 999118a..f451f4e 100644 --- a/src/azure-c.cpp +++ b/src/azure-c.cpp @@ -287,12 +287,19 @@ AzDrawTargetFill(AzDrawTargetRef aDrawTarget, AzPathRef aPath, } extern "C" void -AzDrawTargetPushClip(AzDrawTargetRef aDrawTarget, const AzPathRef *aPath) { +AzDrawTargetPushClip(AzDrawTargetRef aDrawTarget, AzPathRef aPath) { gfx::DrawTarget *gfxDrawTarget = static_cast(aDrawTarget); const gfx::Path *gfxPath = reinterpret_cast(aPath); gfxDrawTarget->PushClip(gfxPath); } +extern "C" void +AzDrawTargetPushClipRect(AzDrawTargetRef aDrawTarget, const AzRect *aRect) { + gfx::DrawTarget *gfxDrawTarget = static_cast(aDrawTarget); + const gfx::Rect *gfxRect = reinterpret_cast(aRect); + gfxDrawTarget->PushClipRect(*gfxRect); +} + extern "C" void AzDrawTargetPopClip(AzDrawTargetRef aDrawTarget) { gfx::DrawTarget *gfxDrawTarget = static_cast(aDrawTarget); diff --git a/src/azure-c.h b/src/azure-c.h index 6841d1a..c6dc6e5 100644 --- a/src/azure-c.h +++ b/src/azure-c.h @@ -369,6 +369,9 @@ AzGradientStopsRef AzDrawTargetCreateGradientStops(AzDrawTargetRef aDrawTarget, AzGradientStop *aStops, uint32_t aNumStops, AzExtendMode aExtendMode); +void AzDrawTargetPushClip(AzDrawTargetRef aDrawTarget, AzPathRef aPath); +void AzDrawTargetPushClipRect(AzDrawTargetRef aDrawTarget, const AzRect *aRect); +void AzDrawTargetPopClip(AzDrawTargetRef aDrawTarget); void AzReleaseSourceSurface(AzSourceSurfaceRef aSurface); AzIntSize AzSourceSurfaceGetSize(AzSourceSurfaceRef aSurface); diff --git a/src/azure.rs b/src/azure.rs index 0b77920..a5ce168 100644 --- a/src/azure.rs +++ b/src/azure.rs @@ -381,6 +381,8 @@ pub fn AzDrawTargetFill(aDrawTarget: AzDrawTargetRef, aPath: AzPathRef, aPattern pub fn AzDrawTargetPushClip(aDrawTarget: AzDrawTargetRef, aPath: AzPathRef); +pub fn AzDrawTargetPushClipRect(aDrawTarget: AzDrawTargetRef, aRect: *const AzRect); + pub fn AzDrawTargetPopClip(aDrawTarget: AzDrawTargetRef); pub fn AzDrawTargetFillGlyphs(aDrawTarget: AzDrawTargetRef, aFont: AzScaledFontRef, aGlyphBuffer: *mut AzGlyphBuffer, aPattern: AzPatternRef, aOptions: *mut AzDrawOptions, aRenderingOptions: AzGlyphRenderingOptionsRef); diff --git a/src/azure_hl.rs b/src/azure_hl.rs index 3c7a455..ccebfb6 100644 --- a/src/azure_hl.rs +++ b/src/azure_hl.rs @@ -32,7 +32,7 @@ use azure::{AzCreatePathBuilder, AzPathBuilderRef, AzPathBuilderMoveTo, AzPathBu use azure::{AzPathBuilderArc, AzPathBuilderFinish, AzReleasePathBuilder}; use azure::{AzDrawTargetFill, AzPathRef, AzReleasePath, AzDrawTargetPushClip, AzDrawTargetPopClip}; use azure::{AzGLNativeContextRef, AzLinearGradientPatternRef, AzMatrix, AzPatternRef}; -use azure::{AzCreateLinearGradientPattern}; +use azure::{AzCreateLinearGradientPattern, AzDrawTargetPushClipRect}; use sync::Arc; use geom::matrix2d::Matrix2D; @@ -620,6 +620,12 @@ impl DrawTarget { } } + pub fn push_clip_rect(&self, rect: &Rect) { + unsafe { + AzDrawTargetPushClipRect(self.azure_draw_target, &rect.as_azure_rect()); + } + } + pub fn pop_clip(&self) { unsafe { AzDrawTargetPopClip(self.azure_draw_target);