private static void RecalculateThumbnailWidth(DependencyObject d, DependencyPropertyChangedEventArgs e) { AssetControl assetControl = (AssetControl)d; if (assetControl.Thumbnail is null) { return; } double proportion = assetControl.Thumbnail.Width / assetControl.Thumbnail.Height; if (proportion > 4 || proportion < 0.6) { assetControl.ThumbnailStretch = Stretch.Uniform; } proportion = Math.Min(assetControl.MaximumWidthToHeightRatio, proportion); var newWidth = assetControl.ThumbnailSize * proportion; if (assetControl.ImageWidth != newWidth) { assetControl.ImageWidth = newWidth; } }
private async void AssetControl_NavigationCompleted(object sender, WebViewControlNavigationCompletedEventArgs e) { await InjectScript("pdfHelper.js"); var pdfContent = Convert.ToBase64String(File.ReadAllBytes("test.pdf")); AssetControl.InvokeScript("openPdf", pdfContent, "", ""); }
public MainWindow() { InitializeComponent(); AssetControl.DOMContentLoaded += AssetControl_DOMContentLoaded; AssetControl.NavigationCompleted += AssetControl_Navigated; AssetControl.NavigationCompleted += AssetControl_NavigationCompleted; var pdfTemplate = "<script src='https://mozilla.github.io/pdf.js/es5/build/pdf.js'></script><div style='text-align: center;'><button id='prev' style='position: fixed; top: 50%; left:5;background-color: transparent;border: none;height: 72px; width: 72px; display:none; cursor: pointer;'><svg viewBox='0 0 20 20' fit='' height='100%' width='100%' preserveAspectRatio='xMidYMid meet' focusable='false'><path d='M14.1808094,17.9991455 L14.1799354,18 C13.8644451,18.3084794 13.3586178,18.3027959 13.0501385,17.9873057 L13.0493966,17.986546 L5.80573614,10.5585334 C5.50273367,10.2478195 5.50273367,9.75218056 5.80573614,9.44146664 L13.0493966,2.01345408 C13.3574564,1.69755413 13.8632757,1.69119843 14.1791757,1.99925822 L14.1799354,2.00000004 L14.1808094,2.00085462 C14.4963777,2.30941029 14.5024479,2.81523899 14.1943752,3.13127874 L7.49880606,10 L14.1943752,16.8687213 C14.5024479,17.1847611 14.4963777,17.6905898 14.1808094,17.9991455 Z'></path></svg></button><canvas id='the-canvas' width='1123px' height='558px'></canvas><button id='next' style='position: fixed; top: 50%; right:5; background-color: transparent;border: none;height: 72px; width: 72px; display:none; cursor: pointer;'><svg viewBox='0 0 20 20' fit='' height='100%' width='100%' preserveAspectRatio='xMidYMid meet' focusable='false' style='color:transparent;'><path d='M5.81919054,17.9991455 C5.50362224,17.6905898 5.49755199,17.1847611 5.80562475,16.8687213 L12.5011939,10 L5.80562475,3.13127874 C5.49755199,2.81523899 5.50362224,2.30941029 5.81919054,2.00085462 L5.82006454,2.00000004 C5.82031761,1.9997526 5.82057084,1.99950532 5.82082423,1.99925822 C6.13672418,1.69119843 6.64254349,1.69755413 6.95060328,2.01345408 L14.1942638,9.44146664 C14.4972662,9.75218056 14.4972662,10.2478195 14.1942638,10.5585334 L6.95060328,17.986546 C6.95035617,17.9867994 6.9501089,17.9870526 6.94986145,17.9873057 C6.6413821,18.3027959 6.13555479,18.3084794 5.82006454,18 L5.81919054,17.9991455 Z'></path></svg></button></div>"; AssetControl.NavigateToString(pdfTemplate); }
static async System.Threading.Tasks.Task Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Environment.CurrentDirectory) .AddJsonFile("LoruleConfig.json"); var config = builder.Build(); var editorSettings = config.GetSection("Editor").Get <EditorOptions>(); var assetLocation = Path.Combine(editorSettings.Location, "Assets", "Bitmaps", "legend"); if (!Directory.Exists(assetLocation)) { Directory.CreateDirectory(assetLocation); } Dictionary <string, Palette> pals = new Dictionary <string, Palette>(); foreach (var palfile in Directory.GetFiles(editorSettings.Location + @"\Extractions\setoa", "*.pal")) { var pallete = Palette.FromFile(palfile); pals[Path.GetFileNameWithoutExtension(palfile)] = pallete; } Palette palette = null; foreach (var file in Directory.GetFiles(editorSettings.Location + @"\Extractions\setoa", "*.*").OrderBy(i => i.Length).ToArray()) { if (Path.GetExtension(file) == ".epf") { var epf = EPFImage.FromFile(file); var palleteName = File.Exists(Path.GetFileNameWithoutExtension(file) + ".pal") ? Path.GetFileNameWithoutExtension(file) : "legend"; palette = pals[palleteName]; foreach (var frame in epf.Frames) { if (frame.RawData.Length > 0 && palette != null) { var bitmap = frame.Render(frame.Width, frame.Height, frame.RawData, palette, EPFFrame.ImageType.EPF); bitmap.Save( Path.Combine(assetLocation, Path.GetFileNameWithoutExtension(file) + ".bmp"), ImageFormat.Bmp); } } } if (Path.GetExtension(file) == ".spf") { var spf = SpfFile.FromFile(file); foreach (var frame in spf.Frames) { frame.FrameBitmap?.Save( Path.Combine(assetLocation, Path.GetFileNameWithoutExtension(spf.FileName) + $"{spf.FrameCount}.bmp"), ImageFormat.Bmp); } } if (Path.GetExtension(file) == ".txt") { var data = await File.ReadAllLinesAsync(file); if (data != null && data.Length > 0) { AssetControl control = new AssetControl(); for (var index = 0; index < data.Length; index++) { var line = data[index]; if (line == "<CONTROL>") { control.Name = data[index + 1].Replace("<NAME>", string.Empty).Replace("\"", "").Trim(); control.Type = data[index + 2].Replace("<TYPE>", string.Empty).Replace("\"", "").Trim(); var rect = data[index + 3].Replace("<RECT>", string.Empty).Replace("\"", "").Trim(); var rectparts = rect.Split(" "); if (rectparts.Length == 4) { TryParse(rectparts[0], out var x); TryParse(rectparts[1], out var y); TryParse(rectparts[2], out var w); TryParse(rectparts[3], out var h); control.Rect = new Rectangle(x, y, w, h); } if (data[index + 4] == "\t<IMAGE>") { var imageparts = data[index + 5].Replace("\t\t", string.Empty).Replace("\"", "") .Trim().Split(" "); if (imageparts.Length == 2) { control.Image = imageparts[0]; control.FrameCount = imageparts[1]; } else { control.Image = imageparts[0]; } } } if (line == "<ENDCONTROL>") { ControiAssetControls.Add(control); control = new AssetControl(); } } } } } List <AssetControl> saveableControls = new List <AssetControl>(); foreach (var control in ControiAssetControls) { if (!string.IsNullOrEmpty(control.Image) && Path.GetExtension(control.Image) == ".spf") { var path = Path.GetRelativePath(Path.Combine(assetLocation, editorSettings.Location), assetLocation); if (File.Exists(path)) { control.Image = path; saveableControls.Add(control); } } } var jsonFile = JsonConvert.SerializeObject(saveableControls); File.WriteAllText(assetLocation + "\\metafile.json", jsonFile); }
private async Task InjectScript(string path) { var scriptContent = File.ReadAllText(path); await AssetControl.InvokeScriptAsync("eval", new string[] { scriptContent }); }