diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-03 06:24:28 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-03 06:24:28 +0100 |
| commit | 0f0cb8dcc87bda217a405e9899ef6ccf1eaf6ac0 (patch) | |
| tree | 35a8267069cf01da6ef85b39a0012c3940b0b19b /src/Mono.Cairo | |
| parent | 726fe4f0acdee5bce7371c8db6b835668d95df17 (diff) | |
cairo mesh pattern, docker tests
Diffstat (limited to 'src/Mono.Cairo')
| -rw-r--r-- | src/Mono.Cairo/MeshPattern.cs | 98 | ||||
| -rw-r--r-- | src/Mono.Cairo/NativeMethods.cs | 45 | ||||
| -rw-r--r-- | src/Mono.Cairo/PatternType.cs | 2 |
3 files changed, 145 insertions, 0 deletions
diff --git a/src/Mono.Cairo/MeshPattern.cs b/src/Mono.Cairo/MeshPattern.cs new file mode 100644 index 00000000..b14c709b --- /dev/null +++ b/src/Mono.Cairo/MeshPattern.cs @@ -0,0 +1,98 @@ +// +// Mono.Cairo.Pattern.cs +// +// Author: Jordi Mas (jordi@ximian.com) +// Hisham Mardam Bey (hisham.mardambey@gmail.com) +// (C) Ximian Inc, 2004. +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; + +namespace Cairo { + + public class MeshPattern : Pattern + { + internal MeshPattern (IntPtr handle, bool owned) : base (handle, owned) + { + } + + public MeshPattern () + : base (NativeMethods.cairo_pattern_create_mesh(), true) + { + } + + //no idea why this is here, the base one is identical, but we can't remove it now + public new Extend Extend { + set { NativeMethods.cairo_pattern_set_extend (Handle, value); } + get { return NativeMethods.cairo_pattern_get_extend (Handle); } + } + + public Filter Filter { + set { NativeMethods.cairo_pattern_set_filter (Handle, value); } + get { return NativeMethods.cairo_pattern_get_filter (Handle); } + } + + public void BeginPatch(){ + NativeMethods.cairo_mesh_pattern_begin_patch (Handle); + } + public void EndPatch(){ + NativeMethods.cairo_mesh_pattern_end_patch (Handle); + } + public void MoveTo(double x, double y){ + NativeMethods.cairo_mesh_pattern_move_to (Handle, x, y); + } + public void LineTo(double x, double y){ + NativeMethods.cairo_mesh_pattern_line_to (Handle, x, y); + } + public void CurveTo(double x1, double y1, double x2, double y2, double x3, double y3) + { + NativeMethods.cairo_mesh_pattern_curve_to (Handle, x1, y1, x2, y2, x3, y3); + } + public void SetControlPoint(uint point_num, double x, double y){ + NativeMethods.cairo_mesh_pattern_set_control_point (Handle, point_num, x, y); + } + public void SetCornerColorRGB(uint corner_num, double r, double g, double b){ + NativeMethods.cairo_mesh_pattern_set_corner_color_rgb (Handle, corner_num, r, g, b); + } + public void SetCornerColorRGBA(uint corner_num, double r, double g, double b, double a){ + NativeMethods.cairo_mesh_pattern_set_corner_color_rgba (Handle, corner_num, r, g, b, a); + } + public uint PatchCount { + get { + uint count = 0; + NativeMethods.cairo_mesh_pattern_get_patch_count(Handle, out count); + return count; + } + } + public Path GetPath(uint patch_num){ + return new Path(NativeMethods.cairo_mesh_pattern_get_path(Handle, patch_num)); + } + public void GetControlPoint(){ + } + public void GetCornerColorRGBA(){ + + } + } +} + diff --git a/src/Mono.Cairo/NativeMethods.cs b/src/Mono.Cairo/NativeMethods.cs index 8286e2c2..53501369 100644 --- a/src/Mono.Cairo/NativeMethods.cs +++ b/src/Mono.Cairo/NativeMethods.cs @@ -445,6 +445,51 @@ namespace Cairo [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_pattern_status (IntPtr pattern); + + //mesh pattern + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_pattern_create_mesh (); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_begin_patch (IntPtr pattern); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_end_patch (IntPtr pattern); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_move_to (IntPtr pattern, double x, double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_line_to (IntPtr pattern, double x, double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_curve_to (IntPtr pattern, double x1, double y1, + double x2, double y2, double x3, double y3); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_set_control_point (IntPtr pattern, uint point_num, double x, double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_set_corner_color_rgb (IntPtr pattern, uint corner_num, + double r, double g, double b); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_mesh_pattern_set_corner_color_rgba (IntPtr pattern, uint corner_num, + double r, double g, double b, double a); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_mesh_pattern_get_patch_count (IntPtr pattern, out uint count); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_mesh_pattern_get_path (IntPtr pattern, uint patch_num); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_mesh_pattern_get_control_point (IntPtr pattern, + uint patch_num, uint point_num, out double x, out double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_mesh_pattern_get_corner_color_rgba (IntPtr pattern, + uint patch_num, uint point_num, out double r, out double g, out double b, out double a); #endregion #region PdfSurface diff --git a/src/Mono.Cairo/PatternType.cs b/src/Mono.Cairo/PatternType.cs index 002469ff..8fe2d85d 100644 --- a/src/Mono.Cairo/PatternType.cs +++ b/src/Mono.Cairo/PatternType.cs @@ -37,6 +37,8 @@ namespace Cairo { Surface, Linear, Radial, + Mesh, + RasterSource } } |