Example #1
0
        protected override bool OnDraw(SciterElement se, SciterXBehaviors.DRAW_PARAMS prms)
        {
            if (prms.cmd == SciterXBehaviors.DRAW_EVENTS.DRAW_CONTENT)
            {
                var pngExporter = new PngExporter()
                {
                    Width      = prms.area.Width,
                    Height     = prms.area.Height,
                    Background = OxyColors.Transparent
                };

                using (var ms = new MemoryStream())
                {
                    var bmp = pngExporter.ExportToBitmap(Host._model);

                    using (var img = new SciterImage(bmp))
                    {
                        new SciterGraphics(prms.gfx).BlendImage(img, prms.area.left, prms.area.top);
                    }
                }

                return(true);
            }
            return(false);
        }
Example #2
0
        public void To_SciterValue()
        {
            _sciterImage = SciterImage.Create(1, 1, false);

            var value = _sciterImage.ToSciterValue();

            Assert.NotNull(value);
            Assert.IsTrue(value.IsResource);
        }
Example #3
0
        public void From_byte_array(byte[] buffer)
        {
            _sciterImage = SciterImage.Create(buffer);
            var dimensions = _sciterImage.Dimensions;

            Assert.NotNull(_sciterImage);
            Assert.AreEqual(1, dimensions.Width);
            Assert.AreEqual(1, dimensions.Height);
        }
Example #4
0
        protected override ScriptEventResult OnScriptCall(SciterElement element, MethodInfo method, SciterValue[] args)
        {
            var r = SciterImage.Create(args[0]);
            var b = r.Save(ImageEncoding.Png);

            File.WriteAllBytes("d:/test.png", b);

            return(ScriptEventResult.Successful());
        }
        public static SciterImage ToSciterImage(this SKBitmap bitmap)
        {
            if (bitmap.ColorType != SKColorType.Bgra8888)
            {
                throw new InvalidOperationException($"Please use `{nameof(SKColorType)}.{nameof(SKColorType.Bgra8888)}`");
            }

            return(SciterImage.Create(bitmap.GetPixels(), (uint)bitmap.Width, (uint)bitmap.Height, true));
        }
Example #6
0
        public void Dimensions()
        {
            _sciterImage = SciterImage.Create(1, 1, true);

            var dimensions = _sciterImage.Dimensions;

            Assert.AreEqual(1, dimensions.Width);
            Assert.AreEqual(1, dimensions.Height);
        }
Example #7
0
        public void Save_a_valid_raw_image(int width, int height, bool withAlpha)
        {
            _sciterImage = SciterImage.Create(width, height, withAlpha);
            var buffer = _sciterImage.Save(ImageEncoding.Raw);

            Assert.NotNull(_sciterImage);
            Assert.AreEqual(width * height * 4, buffer.Length);
            Assert.AreEqual(withAlpha ? 0 : 255, buffer[3]);
        }
Example #8
0
        protected override bool OnScriptCall(SciterElement se, string name, SciterValue[] args, out SciterValue result)
        {
            var r = new SciterImage(args[0]);
            var b = r.Save(SciterXGraphics.SCITER_IMAGE_ENCODING.SCITER_IMAGE_ENCODING_PNG);

            File.WriteAllBytes("d:/test.png", b);

            result = null;
            return(true);
        }
Example #9
0
        public void Try_save_a_valid_raw_image(int width, int height, bool withAlpha)
        {
            _sciterImage = SciterImage.Create(width, height, withAlpha);
            var result = _sciterImage.TrySave(out var buffer, ImageEncoding.Raw);

            Assert.NotNull(_sciterImage);
            Assert.IsTrue(result);
            Assert.AreEqual(width * height * 4, buffer.Length);
            Assert.AreEqual(withAlpha ? 0 : 255, buffer[3]);
        }
Example #10
0
        public void Create_and_clear_image(byte r, byte g, byte b, byte alpha)
        {
            _sciterImage = SciterImage.Create(1, 1, true);
            _sciterImage.Clear(SciterColor.Create(r: r, g: g, b: b, alpha: alpha));

            var buffer = _sciterImage.Save(ImageEncoding.Raw);

            Assert.NotNull(_sciterImage);
            Assert.AreEqual(1 * 1 * 4, buffer.Length);
            Assert.AreEqual(new byte[] { (byte)(r / (byte.MaxValue / alpha)), (byte)(g / (byte.MaxValue / alpha)), (byte)(b / (byte.MaxValue / alpha)), alpha }, buffer);
        }
Example #11
0
        public void Try_get_dimensions()
        {
            _sciterImage = SciterImage.Create(1, 1, true);

            var result = _sciterImage.TryGetDimensions(out var dimensions);

            Assert.NotNull(_sciterImage);
            Assert.IsTrue(result);
            Assert.AreEqual(1, dimensions.Width);
            Assert.AreEqual(1, dimensions.Height);
        }
Example #12
0
        public void From_SciterValue()
        {
            var sciterImage = SciterImage.Create(1, 1, false);
            var sciterValue = sciterImage.ToSciterValue();

            _sciterImage = SciterImage.Create(sciterValue);
            var dimensions = _sciterImage.Dimensions;

            Assert.NotNull(_sciterImage);
            Assert.AreEqual(sciterImage.Handle, _sciterImage.Handle);
            Assert.AreEqual(1, dimensions.Width);
            Assert.AreEqual(1, dimensions.Height);
        }
Example #13
0
        public void From_Bitmap()
        {
            using (var bitmap = new Bitmap(1, 1, PixelFormat.Format32bppArgb))
            {
                _sciterImage = SciterImage.Create(bitmap);

                var dimensions = _sciterImage.Dimensions;

                Assert.NotNull(_sciterImage);
                Assert.AreEqual(1, dimensions.Width);
                Assert.AreEqual(1, dimensions.Height);
            }
        }
Example #14
0
        public void Save_a_valid_jpg_image_in_jfif_format()
        {
            _sciterImage = SciterImage.Create(10, 10, false);
            var buffer = _sciterImage.Save(ImageEncoding.Jpg);

            var headerBuffer = new byte[4];

            Array.Copy(buffer, headerBuffer, Math.Min(headerBuffer.Length, buffer.Length));

            Assert.NotNull(_sciterImage);
            Assert.GreaterOrEqual(buffer.Length, headerBuffer.Length);
            Assert.AreEqual(new byte[] { 255, 216, 255, 224 }, headerBuffer);
        }
Example #15
0
        public void Save_a_valid_png_image()
        {
            _sciterImage = SciterImage.Create(10, 10, false);
            var buffer = _sciterImage.Save(ImageEncoding.Png);

            var headerBuffer = new byte[8];

            Array.Copy(buffer, headerBuffer, Math.Min(headerBuffer.Length, buffer.Length));

            Assert.NotNull(_sciterImage);
            Assert.GreaterOrEqual(buffer.Length, headerBuffer.Length);
            Assert.AreEqual(new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 }, headerBuffer);
        }
Example #16
0
        public void Saves_a_valid_webp_image_in_riff_format()
        {
            _sciterImage = SciterImage.Create(10, 10, false);
            var buffer = _sciterImage.Save(ImageEncoding.WebP);

            var headerBuffer = new byte[4];

            Array.Copy(buffer, headerBuffer, Math.Min(headerBuffer.Length, buffer.Length));

            Assert.NotNull(_sciterImage);
            Assert.GreaterOrEqual(buffer.Length, headerBuffer.Length);
            Assert.AreEqual(System.Text.Encoding.UTF8.GetBytes("RIFF"), headerBuffer);
        }
Example #17
0
        protected override void Attached(SciterElement se)
        {
            int width  = 400;
            int height = 400;

            byte[] data = new byte[width * height * 4];
            var    ctx  = new CGBitmapContext(data, width, height, 8, width * 4, CGColorSpace.CreateGenericRgb(), CGImageAlphaInfo.PremultipliedLast);

            ctx.SetFillColor(new CGColor(100, 0, 0));
            ctx.SetStrokeColor(new CGColor(0, 0, 100));
            ctx.SetLineWidth(2);

            //ctx.AddPath(_svg._cgpath);
            //ctx.DrawPath(CGPathDrawingMode.FillStroke);

            _simg = new SciterImage(ctx.ToImage());
            //se.SetStyle("width", img.Width + "px");
            //se.SetStyle("height", img.Height + "px");
        }
Example #18
0
        public void From_IntPtr(byte[] buffer)
        {
            var data = Marshal.AllocHGlobal(buffer.Length);

            Marshal.Copy(buffer, 0, data, buffer.Length);

            try
            {
                _sciterImage = SciterImage.Create(data, 1, 1, true);

                var dimensions = _sciterImage.Dimensions;

                Assert.NotNull(_sciterImage);
                Assert.AreEqual(1, dimensions.Width);
                Assert.AreEqual(1, dimensions.Height);
            }
            finally
            {
                Marshal.FreeHGlobal(data);
            }
        }
        protected override bool OnDraw(SciterElement se, SciterXBehaviors.DRAW_PARAMS prms)
        {
            var b = new Bitmap(406, 400);

            using (var g = Graphics.FromImage(b))
            {
                LinearGradientBrush linGrBrush = new LinearGradientBrush(
                    new Point(0, 10),
                    new Point(200, 10),
                    Color.FromArgb(255, 255, 0, 0),                       // Opaque red
                    Color.FromArgb(255, 0, 0, 255));                      // Opaque blue
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.FillEllipse(linGrBrush, 0, 30, 200, 100);
            }

            var img = new SciterImage(b);
            var gfx = new SciterGraphics(prms.gfx);

            gfx.BlendImage(img, 0, 0);
            return(true);
        }
 /// <summary>
 /// Save this image to png/jpeg/WebP stream of bytes
 /// </summary>
 /// <param name="encoding">The output image type</param>
 /// <param name="quality">png: 0, jpeg/WebP: 10 - 100</param>
 public static byte[] Save(this SciterImage sciterImage, ImageEncoding encoding, uint quality = 0)
 {
     return(sciterImage?.SaveInternal(encoding: encoding, quality: quality));
 }
 public static SciterSize GetDimensions(this SciterImage sciterImage)
 {
     return(sciterImage?.GetDimensionsInternal() ?? default);
 }
 public static void Clear(this SciterImage sciterImage, SciterColor color)
 {
     sciterImage?.ClearInternal(color);
 }
 public static bool TryGetDimensions(this SciterImage sciterImage, out SciterSize size)
 {
     size = default;
     return(sciterImage?.TryGetDimensionsInternal(out size) == true);
 }
Example #24
0
 public void Invalid_size_returns_null(int width, int height, bool withAlpha)
 {
     _sciterImage = SciterImage.Create(width, height, withAlpha);
     Assert.IsNull(_sciterImage);
 }
 public static bool TryClear(this SciterImage sciterImage, SciterColor color)
 {
     return(sciterImage?.TryClearInternal(color) == true);
 }
Example #26
0
 public static SciterImage ToSciterImage(this SKBitmap bitmap)
 {
     return(SciterImage.Create(bitmap.GetPixels(), (uint)bitmap.Width, (uint)bitmap.Height, true));
 }
 /// <summary>
 /// Save this image to png/jpeg/WebP stream of bytes
 /// </summary>
 /// <param name="encoding">The output image type</param>
 /// <param name="quality">png: 0, jpeg/WebP: 10 - 100</param>
 public static bool TrySave(this SciterImage sciterImage, out byte[] buffer, ImageEncoding encoding, uint quality = 0)
 {
     buffer = null;
     return(sciterImage?.TrySaveInternal(buffer: out buffer, encoding: encoding, quality: quality) == true);
 }
Example #28
0
        public void Create_width_height_withAlpha(int width, int height, bool withAlpha)
        {
            _sciterImage = SciterImage.Create(width, height, withAlpha);

            Assert.NotNull(_sciterImage);
        }