Exemple #1
0
        public void RoundTripFiles()
        {
            var testData     = @"{ claimData: ""0x00000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f0f1275000000000000000000000000000000000000000000000000000000005f1e54b5000000000000000000000000d90fc89e89e3e5b75256b5aa617f887c583b29a2000000000000000000000000c0c84e49b0d5a82e046914d9a93f9f64bdb41ca387bca611c58e3bc397f0994a4ea54a02d054c81f21f4901eb5788f1098b2a5dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001""}";
            var dataFilePath = Path.GetTempFileName();

            var injectedImagePath = Path.Join(Path.GetTempPath(), Path.GetRandomFileName() + ".png");

            File.WriteAllText(dataFilePath, testData, Encoding.UTF8);
            var imageMaker = new ImageMaker()
            {
                ImgInputFile  = "test_input.png",
                ImgOutputFile = injectedImagePath,
                DataFile      = dataFilePath
            };

            imageMaker.Header.BitsPerPixel = 2;
            imageMaker.Header.SetWritableRange(105, 150, 165, 200);
            imageMaker.Run();

            var dataFilePath2 = Path.GetTempFileName();
            var dataMaker     = new DataMaker()
            {
                ImgInputFile = injectedImagePath,
                DataFile     = dataFilePath2
            };

            dataMaker.Run();

            var resultData = File.ReadAllText(dataFilePath2, Encoding.UTF8);

            Assert.AreEqual(testData, resultData);
        }
        /// <summary>
        /// Generates the title image for the mission.
        /// </summary>
        /// <param name="mission">The misison which requires a title image.</param>
        /// <returns>The mission title image, as an array of bytes for a JPEG file.</returns>
        private byte[] GetTitleImage(DCSMission mission)
        {
            byte[] imageBytes;


            using (ImageMaker imgMaker = new ImageMaker())
            {
                imgMaker.TextOverlay.Text      = mission.MissionName;
                imgMaker.TextOverlay.Alignment = ContentAlignment.BottomCenter;

                List <ImageMakerLayer> layers = new List <ImageMakerLayer>();
                string[] theaterImages        = Directory.GetFiles($"{BRPaths.INCLUDE_JPG}Theaters\\", $"{mission.Theater}*.jpg");
                if (theaterImages.Length == 0)
                {
                    layers.Add(new ImageMakerLayer("_default.jpg"));
                }
                else
                {
                    layers.Add(new ImageMakerLayer("Theaters\\" + Path.GetFileName(Toolbox.RandomFrom(theaterImages))));
                }

                layers.Add(new ImageMakerLayer($"Flags\\{GeneratorTools.RemoveAfterComma(mission.Coalitions[(int)mission.CoalitionPlayer])}.png", ContentAlignment.TopLeft, 8, 8, 0, .5));

                imageBytes = imgMaker.GetImageBytes(layers.ToArray());
            }

            return(imageBytes);
        }
 public MainPage()
 {
     this.InitializeComponent();
     imageMaker = new ImageMaker();
     jobManager = new JobManager(UpdateJobControl, UpdateJobUnitControl)
     {
         ImageMaker = imageMaker
     };
     StartButton.IsEnabled = PauseButton.IsEnabled = CancelButton.IsEnabled = false;
 }
Exemple #4
0
 public void Setup()
 {
     _imageMaker = new ImageMaker()
     {
         ImgInputFile = "../../test_input.png",
         DataFile     = "../../test_data.txt"
     };
     _imageMaker.Header.BitsPerPixel = 2;
     _dataMaker = new DataMaker()
     {
         ImgInputFile = "../../test_input.png",
         DataFile     = "../../test_data.txt"
     };
     _dataMaker.Header.BitsPerPixel = 2;
 }
Exemple #5
0
        public async Task MainAsync()
        {
            c.title = "KipoBot";

            string[] reqPaths = { "data", "fonts", "banners" };

            foreach (var path in reqPaths)
            {
                if (!Helpers.AssertDirectory(path))
                {
                    return;
                }
            }

            if (!ConfigurationService.AssertConfigFile())
            {
                Logger.info($"Template config file created in {Helpers.WORKING_DIRECTORY}/config.json\nEdit it and rerun Kipo.");
                return;
            }

            Logger.info("Found config!");

            ImageMaker.loadBanners($"banners/");

            using (var services = ConfigureServices())
            {
                var client      = services.GetRequiredService <DiscordSocketClient>();
                var config      = services.GetRequiredService <ConfigurationService>();
                var database    = services.GetRequiredService <DatabaseService>();
                var interactive = services.GetRequiredService <InteractiveService>();

                client.Log += LogAsync;
                services.GetRequiredService <CommandService>().Log += LogAsync;

                await client.LoginAsync(TokenType.Bot, config.token);

                await client.StartAsync();

                await services.GetRequiredService <CommandHandlingService>().InitializeAsync();

                await client.SetGameAsync(config.prefix + "help");

                startJobManager();
                await Task.Delay(-1);
            }
        }
Exemple #6
0
        private Task UserJoined(SocketGuildUser arg)
        {
            if (servers != null && servers.Count != 0)
            {
                foreach (var server in servers)
                {
                    if (server.id == arg.Guild.Id)
                    {
                        if (server.channel_id != null)
                        {
                            Stream file = ImageMaker.welcomeUser(arg.Username, server.caption, arg.Guild.Name);
                            arg.Guild.GetTextChannel(server.channel_id.Value).SendFileAsync(file, "welcome.png", $"{server.message.Replace("%MENTION%", $"{arg.Mention}").Replace("%USERNAME%", $"{arg.Username}").Replace("%SERVERNAME%", $"{arg.Guild.Name}")}");
                        }
                    }
                }
            }

            return(Task.CompletedTask);
        }
Exemple #7
0
        public void ScreenShotTaker()
        {
            int waitForPlot = 100;

            while (keepTakerFlag)
            {
                waitFlag.Reset();
                waitFlag.WaitOne();
                Thread.Sleep(waitForPlot);
                if (screenShotTarget == 0)
                {
                    ImageMaker.ViewToPng(bars, DirectoryDef.PictureTempPath);
                }
                else if (screenShotTarget == 1)
                {
                    ImageMaker.ViewToPng(PrintLineChart, DirectoryDef.PictureTempPath);
                }
                generateWaitFlag.Set();
            }
        }
Exemple #8
0
        public async Task Preview()
        {
            foreach (var server in database.servers)
            {
                if (server.id == Context.Guild.Id)
                {
                    if (server.channel_id != null)
                    {
                        Stream file = ImageMaker.welcomeUser(Context.User.Username, server.caption, Context.Guild.Name);
                        await Context.Channel.SendMessageAsync("Message will be send in channel <#" + server.channel_id + "> when new user joins.");

                        await Context.Channel.SendFileAsync(file, "welcome.png", $"{server.message.Replace("%MENTION%", $"{Context.User.Mention}").Replace("%USERNAME%", $"{Context.User.Username}").Replace("%SERVERNAME%", $"{Context.Guild.Name}")}");
                    }
                    else
                    {
                        await Context.Channel.SendMessageAsync("Enable the welcome module first!");
                    }
                }
            }
        }
Exemple #9
0
        public void RoundTripDataReadsHeader()
        {
            var testData     = new byte[] { 1, 2, 3, 4 };
            var dataToInject = new BitArray(testData);
            var bmp          = _FilledSquare(Color.White, 10, 10);
            var whitePixels  = _imageMaker.PixelsFromImage(bmp);

            var imageMaker = new ImageMaker();

            imageMaker.Header.BitsPerPixel = 2;

            var dataMaker = new DataMaker();

            dataMaker.Header.BitsPerPixel = -1;

            var injectedPixels = imageMaker.InjectData(whitePixels, dataToInject, 10, 10);

            byte[] extractedData = dataMaker.ExtractData(injectedPixels, 10, 10);

            Assert.AreEqual(testData, extractedData);
        }
Exemple #10
0
        private void CreateImageFiles(CampaignTemplate campaignTemplate, string campaignFilePath)
        {
            string baseFileName  = Path.Combine(Path.GetDirectoryName(campaignFilePath), Path.GetFileNameWithoutExtension(campaignFilePath));
            string allyFlagName  = GeneratorTools.RemoveAfterComma(campaignTemplate.GetCoalition(campaignTemplate.PlayerCoalition));
            string enemyFlagName = GeneratorTools.RemoveAfterComma(campaignTemplate.GetCoalition((Coalition)(1 - (int)campaignTemplate.PlayerCoalition)));

            using (ImageMaker imgMaker = new ImageMaker())
            {
                string   theaterImage;
                string[] theaterImages = Directory.GetFiles($"{BRPaths.INCLUDE_JPG}Theaters\\", $"{campaignTemplate.ContextTheaterID}*.jpg");
                if (theaterImages.Length == 0)
                {
                    theaterImage = "_default.jpg";
                }
                else
                {
                    theaterImage = "Theaters\\" + Path.GetFileName(Toolbox.RandomFrom(theaterImages));
                }

                // Print the name of the campaign over the campaign "title picture"
                imgMaker.TextOverlay.Text      = Path.GetFileNameWithoutExtension(campaignFilePath);
                imgMaker.TextOverlay.Alignment = ContentAlignment.TopCenter;
                File.WriteAllBytes($"{baseFileName}_Title.jpg",
                                   imgMaker.GetImageBytes(
                                       new ImageMakerLayer(theaterImage),
                                       new ImageMakerLayer($"Flags\\{enemyFlagName}.png", ContentAlignment.MiddleCenter, -32, -32),
                                       new ImageMakerLayer($"Flags\\{allyFlagName}.png", ContentAlignment.MiddleCenter, 32, 32)));

                // Reset background and text overlay
                imgMaker.BackgroundColor  = Color.Black;
                imgMaker.TextOverlay.Text = "";

                File.WriteAllBytes($"{baseFileName}_Success.jpg",
                                   imgMaker.GetImageBytes("Sky.jpg", $"Flags\\{allyFlagName}.png"));

                File.WriteAllBytes($"{baseFileName}_Failure.jpg",
                                   imgMaker.GetImageBytes("Fire.jpg", $"Flags\\{allyFlagName}.png", "Burning.png"));
            }
        }
Exemple #11
0
        public void RoundTripDataWritablePixels()
        {
            var testData     = new byte[] { 213, 214, 215, 216 };
            var dataToInject = new BitArray(testData);
            var bmp          = _FilledSquare(Color.White, 10, 10);
            var whitePixels  = _imageMaker.PixelsFromImage(bmp);

            var imageMaker = new ImageMaker();

            imageMaker.Header.BitsPerPixel = 8;
            imageMaker.Header.SetWritableRange(4, 4, 8, 8);

            var dataMaker = new DataMaker();

            var injectedPixels = imageMaker.InjectData(whitePixels, dataToInject, 10, 10);

            Dump(injectedPixels, "Injected pixels");

            byte[] extractedData = dataMaker.ExtractData(injectedPixels, 10, 10);

            Assert.AreEqual(testData, extractedData);
        }
Exemple #12
0
        public async Task memeFrom([Remainder] String text)
        {
            try
            {
                HttpClient client      = new HttpClient();
                var        attachments = Context.Message.Attachments;
                String     imageURL    = Context.Message.Attachments.ElementAt(0).Url;
                String     memeText    = text;
                var        buffer      = await client.GetByteArrayAsync(imageURL);

                MagickImage memeImg       = new MagickImage(buffer);
                String[]    memeTextSplit = memeText.Split(';');

                var composedMeme = ImageMaker.composeMeme(memeImg, memeTextSplit[0], memeTextSplit[1]);
                await Context.Channel.SendFileAsync(composedMeme, "image.png", Context.User.Mention);

                await Context.Message.DeleteAsync();
            }
            catch (Exception e)
            {
                await Context.Channel.SendMessageAsync($"Invalid format.");
            }
        }
Exemple #13
0
        private void Generate()
        {
            var elevation_settings = new MapMaker.MapSettings();

            elevation_settings.frequency      = trkFreq1.Value;
            elevation_settings.octaves        = trkOctave1.Value;
            elevation_settings.persistence    = trkPers1.Value;
            elevation_settings.redistribution = trkRedis1.Value;

            var moisture_settings = new MapMaker.MapSettings();

            moisture_settings.frequency      = trkFreq2.Value;
            moisture_settings.octaves        = trkOctave2.Value;
            moisture_settings.persistence    = trkPers2.Value;
            moisture_settings.redistribution = trkRedis2.Value;


            var mapmaker = new MapMaker();

            var map = mapmaker.CreateMap(512, 512, elevation_settings, moisture_settings);


            pictureBox1.Image = ImageMaker.CreateImage(map.colored);
        }
Exemple #14
0
 public async Task RefreshBanners()
 {
     ImageMaker.reloadBanners("banners/");
 }
Exemple #15
0
        static void Main(string[] args)
        {
            ImageMaker imageMaker = new ImageMaker();

            imageMaker.MakeWindow();
        }