예제 #1
0
파일: Host.cs 프로젝트: zcwfeng/IconDrop
        /*public bool Host_IsUpdateAvailable(SciterElement el, SciterValue[] args, out SciterValue result)
         * {
         *      var version = UpdateControl.IsUpdateAvailable();
         *      if(version != null)
         *              args[0].Call(new SciterValue(version));
         *      result = null;
         *      return true;
         * }*/

        public bool Host_SaveTempSVG(SciterElement el, SciterValue[] args, out SciterValue result)
        {
            string iconhash = args[0].Get("");
            bool   white    = args[1].Get(false);
            Icon   icn      = Joiner._iconsByHash[iconhash];

            string filepath;

            if (icn.kind == EIconKind.LIBRARY)
            {
                var svg    = SvgXML.FromIcon(icn);
                var factor = 75f / (float)icn.bounds.w;
                svg.Scale(factor);
                var xml = svg.ToXML(white);

                string fname = icn.arr_tags[0].Replace("/", "").Replace("\\", "");
                filepath = _tmp_dir + fname + ".svg";
                File.WriteAllText(filepath, xml);
            }
            else
            {
                filepath = icn.path;
            }

            Debug.Assert(File.Exists(filepath));
            result = new SciterValue(filepath);
            return(true);
        }
예제 #2
0
파일: Host.cs 프로젝트: realcome/IconDrop
        protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld)
        {
            if (sld.uri.StartsWith("svg:"))
            {
                if (sld.uri.Contains("?rnd="))
                {
                    sld.uri = sld.uri.Split('?')[0];
                }
                int    length = sld.uri.Length - 8;
                string hash   = sld.uri.Substring(4, length);
                var    icn    = Joiner._iconsByHash[hash];
                switch (icn.kind)
                {
                case EIconKind.COLLECTION:
                    try
                    {
                        byte[] bytess = File.ReadAllBytes(icn.path);
                        _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length);
                    }
                    catch (Exception)
                    {
                    }
                    break;

                case EIconKind.LIBRARY:
                    string xml   = SvgXML.FromIcon(icn).ToXML();
                    byte[] bytes = Encoding.UTF8.GetBytes(xml);
                    _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length);
                    break;
                }
                return(SciterXDef.LoadResult.LOAD_OK);
            }
            return(base.OnLoadData(sld));
        }
예제 #3
0
파일: Host.cs 프로젝트: zcwfeng/IconDrop
        protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld)
        {
            if (sld.uri.StartsWith("tmp:tmp.svg"))
            {
                var icn  = Joiner._iconsByHash.ToList()[1200].Value;
                var path = SvgParser.FromPath(icn.arr_svgpath[0]);
                //path.NormalizeToSize(100);

                string xml   = SvgXML.FromSvgParser(path).ToXML();
                byte[] bytes = Encoding.UTF8.GetBytes(xml);
                _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length);
                return(SciterXDef.LoadResult.LOAD_OK);
            }
            else if (sld.uri.StartsWith("svg:"))
            {
                if (sld.uri.Contains("?rnd="))
                {
                    sld.uri = sld.uri.Split('?')[0];
                }
                int    length = sld.uri.Length - 8;
                string hash   = sld.uri.Substring(4, length);
                var    icn    = Joiner._iconsByHash[hash];
                switch (icn.kind)
                {
                case EIconKind.COLLECTION:
                    try
                    {
                        byte[] bytess = File.ReadAllBytes(icn.path);
                        _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length);
                    }
                    catch (Exception)
                    {
                    }
                    break;

                case EIconKind.LIBRARY:
                    string xml   = SvgXML.FromIcon(icn).ToXML();
                    byte[] bytes = Encoding.UTF8.GetBytes(xml);
                    _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length);
                    break;

                case EIconKind.STORE:
                    if (Store.IsIconLoaded(icn))
                    {
                        byte[] bytess = File.ReadAllBytes(icn.path);
                        _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length);
                        return(SciterXDef.LoadResult.LOAD_OK);
                    }
                    else
                    {
                        Store.LoadIcon(icn).ContinueWith((t) =>
                        {
                            if (t.Status == TaskStatus.RanToCompletion)
                            {
                                byte[] bytess = File.ReadAllBytes(icn.path);
                                _api.SciterDataReadyAsync(sld.hwnd, sld.uri, bytess, (uint)bytess.Length, sld.requestId);
                            }
                        });
                        return(SciterXDef.LoadResult.LOAD_DELAYED);
                    }
                }
                return(SciterXDef.LoadResult.LOAD_OK);
            }
            return(base.OnLoadData(sld));
        }