Beispiel #1
0
        public FREObject Predict(FREContext ctx, uint argc, FREObject[] argv)
        {
            if (argv[0] == FREObject.Zero)
            {
                return(FREObject.Zero);
            }
            if (argv[1] == FREObject.Zero)
            {
                return(FREObject.Zero);
            }
            var modelPath = argv[1].AsString();
            var bmd       = new FreBitmapDataSharp(argv[0]);

            bmd.Acquire();
            var ptr        = bmd.Bits32;
            var byteBuffer = new byte[bmd.LineStride32 * bmd.Height * 4];

            Marshal.Copy(ptr, byteBuffer, 0, byteBuffer.Length);
            bmd.Release();
            try {
                EvaluteImageAsync(byteBuffer.AsBuffer(), bmd.Width, bmd.Height, modelPath);
            }
            catch (Exception e) {
                return(new FreException(e).RawValue);
            }

            return(FREObject.Zero);
        }
Beispiel #2
0
        private FREObject Capture(FREContext ctx, uint argc, FREObject[] argv)
        {
            var rect = new WinApi.Rect();

            WinApi.GetWindowRect(_cefWindow, ref rect);
            if (Environment.Is64BitProcess)
            {
                Trace("Capture is not yet available on 64bit Windows.");
                return(FREObject.Zero);
            }
            try {
                var freX = argv[0].AsInt();
                var freY = argv[1].AsInt();
                var freW = argv[2].AsInt();
                var freH = argv[3].AsInt();

                var width  = freW > 0 ? freW : rect.right - rect.left;
                var height = freH > 0 ? freH : rect.bottom - rect.top;

                var bmp      = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                var graphics = Graphics.FromImage(bmp);
                graphics.CopyFromScreen(rect.left + freX, rect.top + freY, 0, 0, new Size(width, height),
                                        CopyPixelOperation.SourceCopy);
                var ret = new FreBitmapDataSharp(bmp);
                return(ret.RawValue);
            }
            catch (Exception e) {
                return(new FreException(e).RawValue);
            }
        }
Beispiel #3
0
        private static void SepiaTone(FreBitmapDataSharp freBitmapDataSharp)
        {
            freBitmapDataSharp.Acquire();
            var ptr        = freBitmapDataSharp.Bits32;
            var byteBuffer = new byte[freBitmapDataSharp.LineStride32 * freBitmapDataSharp.Height * 4];

            Marshal.Copy(ptr, byteBuffer, 0, byteBuffer.Length);
            const byte maxValue = 255;

            for (var k = 0; k < byteBuffer.Length; k += 4)
            {
                var r = byteBuffer[k] * 0.189f + byteBuffer[k + 1] * 0.769f + byteBuffer[k + 2] * 0.393f;
                var g = byteBuffer[k] * 0.168f + byteBuffer[k + 1] * 0.686f + byteBuffer[k + 2] * 0.349f;
                var b = byteBuffer[k] * 0.131f + byteBuffer[k + 1] * 0.534f + byteBuffer[k + 2] * 0.272f;

                byteBuffer[k + 2] = r > maxValue ? maxValue : (byte)r;
                byteBuffer[k + 1] = g > maxValue ? maxValue : (byte)g;
                byteBuffer[k]     = b > maxValue ? maxValue : (byte)b;
            }

            Marshal.Copy(byteBuffer, 0, ptr, byteBuffer.Length);
            freBitmapDataSharp.InvalidateBitmapDataRect(0, 0, Convert.ToUInt32(freBitmapDataSharp.Width),
                                                        Convert.ToUInt32(freBitmapDataSharp.Height));
            freBitmapDataSharp.Release();
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rawValue"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public static object GetAsObject(FREObject rawValue)
        {
            switch (GetType(rawValue))
            {
            case FreObjectTypeSharp.Object:
            case FreObjectTypeSharp.Class:
                return(GetAsDictionary(rawValue));

            case FreObjectTypeSharp.Number:
                return(GetAsDouble(rawValue));

            case FreObjectTypeSharp.String:
                return(GetAsString(rawValue));

            case FreObjectTypeSharp.Bytearray:
                var ba = new FreByteArraySharp(rawValue);
                ba.Acquire();
                var byteData = ba.Bytes;
                ba.Release();
                return(byteData);

            case FreObjectTypeSharp.Array:
            case FreObjectTypeSharp.Vector:
                var arrFre = new FREArray(rawValue);
                return(arrFre.AsArrayList());

            case FreObjectTypeSharp.Bitmapdata:
                var bmdFre = new FreBitmapDataSharp(rawValue);
                return(bmdFre.AsBitmap());

            case FreObjectTypeSharp.Boolean:
                return(GetAsBool(rawValue));

            case FreObjectTypeSharp.Null:
                return(null);

            case FreObjectTypeSharp.Int:
                return(GetAsInt(rawValue));

            case FreObjectTypeSharp.Rectangle:
                return(new FreRectangleSharp(rawValue).Value);

            case FreObjectTypeSharp.Point:
                return(new FrePointSharp(rawValue).Value);

            case FreObjectTypeSharp.Date:
                return(GetAsDateTime(rawValue));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="freObjectSharp"></param>
        public FreNativeImage(FreObjectSharp freObjectSharp)
        {
            var bitmap = new FreBitmapDataSharp(freObjectSharp.GetProperty("bitmapData").RawValue).GetAsBitmap();

            Width  = bitmap.Width;
            Height = bitmap.Height;
            HorizontalAlignment = HorizontalAlignment.Left;
            VerticalAlignment   = VerticalAlignment.Top;
            Source = BitmapUtils.BitmapToSource(bitmap);

            X          = Convert.ToDouble(freObjectSharp.GetProperty("x").Value);
            Y          = Convert.ToDouble(freObjectSharp.GetProperty("y").Value);
            Visibility = Convert.ToBoolean(freObjectSharp.GetProperty("visible").Value)
                ? Visibility.Visible
                : Visibility.Hidden;
            RenderTransform = new TranslateTransform(X, Y);
            Opacity         = Convert.ToDouble(freObjectSharp.GetProperty("alpha").Value);
        }
Beispiel #6
0
        private FREObject Capture(FREContext ctx, uint argc, FREObject[] argv)
        {
            var rect = new WinApi.Rect();

            WinApi.GetWindowRect(_cefWindow, ref rect);

            var freX = Convert.ToInt32(new FreObjectSharp(argv[0]).Value);
            var freY = Convert.ToInt32(new FreObjectSharp(argv[1]).Value);
            var freW = Convert.ToInt32(new FreObjectSharp(argv[2]).Value);
            var freH = Convert.ToInt32(new FreObjectSharp(argv[3]).Value);

            var width  = freW > 0 ? freW : rect.right - rect.left;
            var height = freH > 0 ? freW : rect.bottom - rect.top;

            var bmp      = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            var graphics = Graphics.FromImage(bmp);

            graphics.CopyFromScreen(rect.left + freX, rect.top + freY, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
            var ret = new FreBitmapDataSharp(bmp);

            return(ret.RawValue);
        }
Beispiel #7
0
        private FREObject RunBitmapTests(FREContext ctx, uint argc, FREObject[] argv)
        {
            Trace("***********Start Bitmap test***********");
            var inFre = argv[0];

            if (inFre == FREObject.Zero)
            {
                return(FREObject.Zero);
            }

            try {
                var bmd = new FreBitmapDataSharp(inFre);
                SepiaTone(bmd);
                //var bmp = bmd.GetAsBitmap(); //makes a bitmap copy
            }
            catch (Exception e) {
                Trace(e.GetType());
                Trace(e.Message);
                Trace(e.Source);
                Trace(e.StackTrace);
            }
            return(FREObject.Zero);
        }
Beispiel #8
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ArrayList GetAsArrayList()
        {
            var al  = new ArrayList();
            var len = Length;

            if (len <= 0)
            {
                return(al);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm  = At(i);
                var type = itm.Type();
                switch (type)
                {
                case FreObjectTypeSharp.String:
                    al.Add(FreSharpHelper.GetAsString(itm));
                    break;

                case FreObjectTypeSharp.Bytearray:
                    var ba = new FreByteArraySharp(itm);
                    ba.Acquire();
                    var baTarget = new byte[ba.Length];
                    ba.Bytes.CopyTo(baTarget, 0);
                    al.Add(baTarget);
                    ba.Release();
                    break;

                case FreObjectTypeSharp.Array:
                case FreObjectTypeSharp.Vector:
                    var arrFre = new FREArray(itm);
                    al.Add(arrFre.GetAsArrayList());
                    break;

                case FreObjectTypeSharp.Bitmapdata:
                    var bmdFre = new FreBitmapDataSharp(itm);
                    al.Add(bmdFre.GetAsBitmap());
                    break;

                case FreObjectTypeSharp.Boolean:
                    al.Add(FreSharpHelper.GetAsBool(itm));
                    break;

                case FreObjectTypeSharp.Null:
                    break;

                case FreObjectTypeSharp.Int:
                    al.Add(FreSharpHelper.GetAsInt(itm));
                    break;

                case FreObjectTypeSharp.Object:
                case FreObjectTypeSharp.Class:
                    al.Add(FreSharpHelper.GetAsDictionary(itm));
                    break;

                case FreObjectTypeSharp.Number:
                    al.Add(FreSharpHelper.GetAsDouble(itm));
                    break;

                case FreObjectTypeSharp.Rectangle:
                    var rectFre = new FreRectangleSharp(itm);
                    al.Add(rectFre.Value);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            return(al);
        }