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); }
public void To_SciterValue() { _sciterImage = SciterImage.Create(1, 1, false); var value = _sciterImage.ToSciterValue(); Assert.NotNull(value); Assert.IsTrue(value.IsResource); }
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); }
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)); }
public void Dimensions() { _sciterImage = SciterImage.Create(1, 1, true); var dimensions = _sciterImage.Dimensions; Assert.AreEqual(1, dimensions.Width); Assert.AreEqual(1, dimensions.Height); }
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]); }
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); }
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]); }
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); }
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); }
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); }
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); } }
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); }
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); }
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); }
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"); }
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); }
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); }
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); }
public void Create_width_height_withAlpha(int width, int height, bool withAlpha) { _sciterImage = SciterImage.Create(width, height, withAlpha); Assert.NotNull(_sciterImage); }