/*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); }
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)); }
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)); }