Ejemplo n.º 1
0
        static void Go(string instructionsPath)
        {
            var instructionsDir = Path.GetDirectoryName(instructionsPath);
            var instructions    = JObjectX.FromFile(instructionsPath);
            var directions      = new Directions(((JArray)instructions["Images"]).ToObject <List <JObject> >());
            var imagesToPrint   = directions.ExtractImages(new ImageDetails(instructionsDir));
            var pageNumber      = 1;
            var pages           = new List <Page> {
                new Page(1)
            };

            imagesToPrint.ForEach(x => Enumerable.Range(0, x.Count).ForEach(_ =>
            {
                if (!pages.Last().CanAdd(x))
                {
                    pages.Add(new Page(++pageNumber));
                }
                pages.Last().Add(x);
            }));
            pages.ForEach(x => x.Create(PathX.Build(instructionsDir, instructions.GetPropertyValue("SavePath")), instructions.GetPropertyValue("SaveName")));
            imagesToPrint.ForEach(x => x.Dispose());
        }
Ejemplo n.º 2
0
        static void Go(string instructionsPath)
        {
            var instructionsDir = Path.GetDirectoryName(instructionsPath);
            var instructions    = JObjectX.FromFile(instructionsPath);
            var savePath        = instructions.GetPropertyValue("SavePath");
            var decks           = ((JArray)instructions["Decks"]).ToObject <List <JObject> >();

            decks.ForEach(deck =>
            {
                var cards      = new DirectoryInfo(PathX.Build(instructionsDir, deck.GetPropertyValue("Path"))).GetFiles("*.png").ToList();
                var sampleCard = Image.FromFile(cards[0].FullName);
                var width      = sampleCard.Width;
                var height     = sampleCard.Height;
                sampleCard.Dispose();
                var deckSheets = new List <List <FileInfo> >();
                for (int i = 0; i < cards.Count; i += 70)
                {
                    deckSheets.Add(cards.GetRange(i, Math.Min(70, cards.Count - i)));
                }

                for (var deckIndex = 0; deckIndex < deckSheets.Count; deckIndex++)
                {
                    var deckSheet = deckSheets[deckIndex];
                    var bitmap    = new Bitmap(width * 10, height * 7);
                    bitmap.WithGraphics(g =>
                    {
                        for (var cardIndex = 0; cardIndex < deckSheet.Count; cardIndex++)
                        {
                            using (var cardImage = Image.FromFile(deckSheet[cardIndex].FullName))
                                g.DrawImage(cardImage, new Point(cardIndex % 10 * width, (int)Math.Floor((decimal)cardIndex / 10) * height));
                        }
                        g.Flush();
                        var result = deck.ContainsKey("Scale") ? ResizeImage(bitmap, (int)(bitmap.Width * (decimal)deck["Scale"]), (int)(bitmap.Height * (decimal)deck["Scale"])) : bitmap;
                        result.Save(PathX.Build(instructionsDir, savePath, deck.GetPropertyValue("Name") + deckIndex + ".png"), ImageFormat.Png);
                    });
                }
                SaveCardBack(width, height, instructionsDir, deck, savePath);
            });
        }
Ejemplo n.º 3
0
        private static void Go(string instructionsPath)
        {
            var instructionsDir      = Path.GetDirectoryName(instructionsPath);
            var instructions         = JObjectX.FromFile(instructionsPath);
            var propertyInstructions = ((JArray)instructions["Properties"]).Select(x => new PropertyInstruction((JObject)x)).ToList();
            var itemProcessor        = new JObjectBuilder(propertyInstructions);
            var spreadsheetID        = instructions.GetPropertyValue("SpreadSheetID");
            var range            = instructions.GetPropertyValue("Range");
            var unprocessedItems = GetDataFromGoogleSheets(spreadsheetID, range);
            var items            = unprocessedItems.Select(x => itemProcessor.Build(x)).ToList();

            if (instructions.ContainsKey("Sort"))
            {
                items.Sort((a, b) => a.GetPropertyValue(instructions.GetPropertyValue("Sort")).CompareTo(b.GetPropertyValue(instructions.GetPropertyValue("Sort"))));
            }
            var     jArray  = new JArray(items);
            dynamic jObject = new JObject();

            jObject.Items = jArray;
            var output = instructions.GetPropertyValue("Output");

            File.WriteAllText(PathX.Build(instructionsDir, output), jObject.ToString());
        }