Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
        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, "", "");
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 private async Task InjectScript(string path)
 {
     var scriptContent = File.ReadAllText(path);
     await AssetControl.InvokeScriptAsync("eval", new string[] { scriptContent });
 }