Ejemplo n.º 1
0
        public static void ColorTableColorFilter(SKCanvas canvas, int width, int height)
        {
            canvas.Clear(SKColors.White);

            var assembly  = typeof(Demos).GetTypeInfo().Assembly;
            var imageName = assembly.GetName().Name + ".baboon.png";

            var ct = new byte[256];

            for (int i = 0; i < 256; ++i)
            {
                var x = (i - 96) * 255 / 64;
                ct[i] = x < 0 ? (byte)0 : x > 255 ? (byte)255 : (byte)x;
            }

            // load the image from the embedded resource stream
            using (var resource = assembly.GetManifestResourceStream(imageName))
                using (var stream = new SKManagedStream(resource))
                    using (var bitmap = SKBitmap.Decode(stream))
                        using (var cf = SKColorFilter.CreateTable(null, ct, ct, ct))
                            using (var paint = new SKPaint())
                            {
                                paint.ColorFilter = cf;

                                canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint);
                            }
        }
Ejemplo n.º 2
0
		// WithColorFilter

		public SKShader WithColorFilter (SKColorFilter filter)
		{
			if (filter == null)
				throw new ArgumentNullException (nameof (filter));

			return GetObject (SkiaApi.sk_shader_with_color_filter (Handle, filter.Handle));
		}
Ejemplo n.º 3
0
 public static SKImageFilter CreateColorFilter(SKColorFilter cf, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
 {
     if (cf == null)
     {
         throw new ArgumentNullException(nameof(cf));
     }
     return(GetObject <SKImageFilter>(SkiaApi.sk_imagefilter_new_color_filter(cf.Handle, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle)));
 }
Ejemplo n.º 4
0
		public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter)
		{
			if (shader == null)
				throw new ArgumentNullException (nameof (shader));
			if (filter == null)
				throw new ArgumentNullException (nameof (filter));
			return GetObject<SKShader> (SkiaApi.sk_shader_new_color_filter (shader.Handle, filter.Handle));
		}
Ejemplo n.º 5
0
		public static SKColorFilter CreateCompose(SKColorFilter outer, SKColorFilter inner)
		{
			if (outer == null)
				throw new ArgumentNullException(nameof(outer));
			if (inner == null)
				throw new ArgumentNullException(nameof(inner));
			return GetObject<SKColorFilter>(SkiaApi.sk_colorfilter_new_compose(outer.Handle, inner.Handle));
		}
Ejemplo n.º 6
0
		// CreateColorFilter

		public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter)
		{
			if (shader == null)
				throw new ArgumentNullException (nameof (shader));
			if (filter == null)
				throw new ArgumentNullException (nameof (filter));

			return shader.WithColorFilter (filter);
		}
Ejemplo n.º 7
0
        private SKColorFilter ToColorFilter(SKData uniforms, SKShader[] children)
        {
            var uniformsHandle = uniforms?.Handle ?? IntPtr.Zero;

            using var childrenHandles = Utils.RentHandlesArray(children, true);

            fixed(IntPtr *ch = childrenHandles)
            {
                return(SKColorFilter.GetObject(SkiaApi.sk_runtimeeffect_make_color_filter(Handle, uniformsHandle, ch, (IntPtr)childrenHandles.Length)));
            }
        }
Ejemplo n.º 8
0
 public static SKShader CreateColorFilter(SKShader shader, SKColorFilter filter)
 {
     if (shader == null)
     {
         throw new ArgumentNullException(nameof(shader));
     }
     if (filter == null)
     {
         throw new ArgumentNullException(nameof(filter));
     }
     return(GetObject <SKShader> (SkiaApi.sk_shader_new_color_filter(shader.Handle, filter.Handle)));
 }
Ejemplo n.º 9
0
 public static SKColorFilter CreateCompose(SKColorFilter outer, SKColorFilter inner)
 {
     if (outer == null)
     {
         throw new ArgumentNullException(nameof(outer));
     }
     if (inner == null)
     {
         throw new ArgumentNullException(nameof(inner));
     }
     return(GetObject <SKColorFilter>(SkiaApi.sk_colorfilter_new_compose(outer.Handle, inner.Handle)));
 }
Ejemplo n.º 10
0
        public static void XferModeColorFilter(SKCanvas canvas, int width, int height)
        {
            canvas.Clear(SKColors.White);

            var assembly  = typeof(Demos).GetTypeInfo().Assembly;
            var imageName = assembly.GetName().Name + ".baboon.png";

            // load the image from the embedded resource stream
            using (var resource = assembly.GetManifestResourceStream(imageName))
                using (var stream = new SKManagedStream(resource))
                    using (var bitmap = SKBitmap.Decode(stream))
                        using (var cf = SKColorFilter.CreateXferMode(SKColors.Red, SKXferMode.ColorDodge))
                            using (var paint = new SKPaint())
                            {
                                paint.ColorFilter = cf;

                                canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint);
                            }
        }
Ejemplo n.º 11
0
        public static void ColorMatrixColorFilter(SKCanvas canvas, int width, int height)
        {
            canvas.Clear(SKColors.White);

            var assembly  = typeof(Demos).GetTypeInfo().Assembly;
            var imageName = assembly.GetName().Name + ".baboon.png";

            // load the image from the embedded resource stream
            using (var resource = assembly.GetManifestResourceStream(imageName))
                using (var stream = new SKManagedStream(resource))
                    using (var bitmap = SKBitmap.Decode(stream))
                    {
                        var f = new Action <SKRect, float[]>((rect, colorMatrix) =>
                        {
                            using (var cf = SKColorFilter.CreateColorMatrix(colorMatrix))
                                using (var paint = new SKPaint())
                                {
                                    paint.ColorFilter = cf;

                                    canvas.DrawBitmap(bitmap, rect, paint);
                                }
                        });

                        var colorMatrix1 = new float[20] {
                            0f, 1f, 0f, 0f, 0f,
                            0f, 0f, 1f, 0f, 0f,
                            1f, 0f, 0f, 0f, 0f,
                            0f, 0f, 0f, 1f, 0f
                        };
                        var grayscale = new float[20] {
                            0.21f, 0.72f, 0.07f, 0.0f, 0.0f,
                            0.21f, 0.72f, 0.07f, 0.0f, 0.0f,
                            0.21f, 0.72f, 0.07f, 0.0f, 0.0f,
                            0.0f, 0.0f, 0.0f, 1.0f, 0.0f
                        };
                        var colorMatrix3 = new float[20] {
                            -1f, 1f, 1f, 0f, 0f,
                            1f, -1f, 1f, 0f, 0f,
                            1f, 1f, -1f, 0f, 0f,
                            0f, 0f, 0f, 1f, 0f
                        };
                        var colorMatrix4 = new float[20] {
                            0.0f, 0.5f, 0.5f, 0f, 0f,
                            0.5f, 0.0f, 0.5f, 0f, 0f,
                            0.5f, 0.5f, 0.0f, 0f, 0f,
                            0.0f, 0.0f, 0.0f, 1f, 0f
                        };
                        var highContrast = new float[20] {
                            4.0f, 0.0f, 0.0f, 0.0f, -4.0f * 255f / (4.0f - 1f),
                            0.0f, 4.0f, 0.0f, 0.0f, -4.0f * 255f / (4.0f - 1f),
                            0.0f, 0.0f, 4.0f, 0.0f, -4.0f * 255f / (4.0f - 1f),
                            0.0f, 0.0f, 0.0f, 1.0f, 0.0f
                        };
                        var colorMatrix6 = new float[20] {
                            0f, 0f, 1f, 0f, 0f,
                            1f, 0f, 0f, 0f, 0f,
                            0f, 1f, 0f, 0f, 0f,
                            0f, 0f, 0f, 1f, 0f
                        };
                        var sepia = new float[20] {
                            0.393f, 0.769f, 0.189f, 0.0f, 0.0f,
                            0.349f, 0.686f, 0.168f, 0.0f, 0.0f,
                            0.272f, 0.534f, 0.131f, 0.0f, 0.0f,
                            0.0f, 0.0f, 0.0f, 1.0f, 0.0f
                        };
                        var inverter = new float[20] {
                            -1f, 0f, 0f, 0f, 255f,
                            0f, -1f, 0f, 0f, 255f,
                            0f, 0f, -1f, 0f, 255f,
                            0f, 0f, 0f, 1f, 0f
                        };

                        var matices = new[] {
                            colorMatrix1, grayscale, highContrast, sepia,
                            colorMatrix3, colorMatrix4, colorMatrix6, inverter
                        };

                        var cols = width < height ? 2 : 4;
                        var rows = (matices.Length - 1) / cols + 1;
                        var w    = (float)width / cols;
                        var h    = (float)height / rows;

                        for (int y = 0; y < rows; y++)
                        {
                            for (int x = 0; x < cols; x++)
                            {
                                f(SKRect.Create(x * w, y * h, w, h), matices[y * cols + x]);
                            }
                        }
                    }
        }
Ejemplo n.º 12
0
 public static SKShader CreateColorFilter(SKShader shader, SKColorFilter filter)
 {
     return(GetObject <SKShader> (SkiaApi.sk_shader_new_color_filter(shader.Handle, filter.Handle)));
 }
Ejemplo n.º 13
0
		public static SKImageFilter CreateColorFilter(SKColorFilter cf, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
		{
			if (cf == null)
				throw new ArgumentNullException(nameof(cf));
			return GetObject<SKImageFilter>(SkiaApi.sk_imagefilter_new_color_filter(cf.Handle, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle));
		}