public void ReassemblySize(string imagename) { var til = new TesselatedImageLoader(); var sft = new Basic16Tesselator(); var loaded_image = til.LoadFromImagelibrary(imagename, sft); var assembled_image = loaded_image.AssembleFragments(); var expected_width = loaded_image.OriginalImage().Size.Width; var expected_height = loaded_image.OriginalImage().Size.Height; if (expected_width % 16 != 0) { expected_width = expected_width - (expected_width % 16); } if (expected_height % 16 != 0) { expected_height = expected_height - (expected_height % 16); } var expected_size = new Size { Width = expected_width, Height = expected_height }; Assert.AreEqual(assembled_image.Size, expected_size); }
public void BasicExchangeEngineTest() { var tsfinder = new TileSetRepo.TileSetRepo(); tsfinder.Discover(); var tileset_stars = (IHueMatchingTileset)tsfinder.ByName("Stars (16x16)")[0]; var tileset_para16 = (IHueMatchingTileset)tsfinder.ByName("16 pastels (8x8)")[0]; var loader = new TesselatedImageLoader(); var tesser = new Basic16Tesselator(); var loaded_image = loader.LoadFromImagelibrary("green_leaf.jpg", tesser); var writer = new ImageWriter(); var output_path = UserSettings.GetDefaultPath("output_path"); var assembled_bitmap_pre = loaded_image.AssembleFragments(); writer.WriteBitmap(assembled_bitmap_pre, System.IO.Path.Combine(output_path, "green_leaf_unchanged.jpg")); new BasicExchangeEngine(tileset_stars, loaded_image).run(); var assembled_bitmap_stars = loaded_image.AssembleFragments(); writer.WriteBitmap(assembled_bitmap_stars, System.IO.Path.Combine(output_path, "stars_leaf_output.jpg")); new BasicExchangeEngine(tileset_para16, loaded_image).run(); var assembled_bitmap_para16 = loaded_image.AssembleFragments(); writer.WriteBitmap(assembled_bitmap_para16, System.IO.Path.Combine(output_path, "parametric_leaf_output.jpg")); }
// Lazy. protected void LazyUpdate() { if (!NeedsUpdate) { return; } if (InputImageName is null || TileSet is null || !File.Exists(InputImageName)) { NeedsUpdate = false; return; } System.Console.WriteLine("TSR loaded {0} tilesets.", tsr.NumberOfTilesets()); try { var buffer = System.IO.File.ReadAllBytes(InputImageName); var pixbuf = new Gdk.Pixbuf(buffer); var image = new Gtk.Image(pixbuf); foreach (var win in update_targets) { win.SetInputPixbuf(pixbuf); } } catch (Exception exx) { System.Console.WriteLine("LazyUpdate could not update image, caused exception {0} for {1} ", exx.ToString(), InputImageName); } try { var tesser = new Basic16Tesselator(); var loader = new TesselatedImageLoader(); var loaded_image = loader.LoadFromImagelibrary(InputImageName, tesser); var writer = new ImageWriter(); new TileExchange.BasicExchangeEngine((IHueMatchingTileset)TileSet, loaded_image).run(); var assembled_bitmap_pre = loaded_image.AssembleFragments(); writer.WriteBitmap(assembled_bitmap_pre, System.IO.Path.Combine("/tmp", "foo.png")); MemoryStream ms = new MemoryStream(); assembled_bitmap_pre.Save(ms, ImageFormat.Png); ms.Position = 0; var pixbuf = new Gdk.Pixbuf(ms); update_targets[0].SetOutputPixbuf(pixbuf); } catch (Exception exx) { System.Console.WriteLine("LazyUpdate could not generate image, caused exception {0} for {1} ", exx.ToString(), InputImageName); } }
public void SingleFragmentImages(string imagename, int width, int height) { var til = new TesselatedImageLoader(); var sft = new SingleFragmentTesselator(); var loaded_image = til.LoadFromImagelibrary(imagename, sft); var fragments = loaded_image.GetImageFragments(); Assert.AreEqual(1, fragments.Count); var fragment = fragments[0]; Assert.AreEqual(width, fragment.GetReplacementFragment().GetSize().Width); Assert.AreEqual(height, fragment.GetReplacementFragment().GetSize().Height); }
public void BasicFragmentation() { var til = new TesselatedImageLoader(); var sft = new Basic16Tesselator(); var loaded_image = til.LoadFromImagelibrary("red_blue_transitions.jpg", sft); var fragments = loaded_image.GetImageFragments(); Assert.AreEqual(28 * 28, fragments.Count); Assert.AreNotEqual(fragments[0].GetPosition(), fragments[1].GetPosition()); var bottom_corner = from fragment in fragments where fragment.GetPosition().X > 175 && fragment.GetPosition().Y > 275 select fragment.GetPosition(); // [288, 304, 320, 336, 352, 368, 384, 400, 416, 432] <- 10 // [176, 192, 208, 224, 240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432] <- 17 Assert.AreEqual(10 * 17, bottom_corner.Count()); }
public void DocumentationImage() { var tsfinder = new TileSetRepo.TileSetRepo(); tsfinder.Discover(UserSettings.GetDefaultPath("tileset_path"), false); var tileset = (IHueMatchingTileset)tsfinder.ByName("Noisy Pastels (16x16)")[0]; var loader = new TesselatedImageLoader(); var tesser = new Basic16Tesselator(); var loaded_image = loader.LoadFromImagelibrary("Polse.jpg", tesser); var writer = new ImageWriter(); var output_path = UserSettings.GetDefaultPath("output_path"); new BasicExchangeEngine(tileset, loaded_image).run(); var assembled_bitmap_pre = loaded_image.AssembleFragments(); writer.WriteBitmap(assembled_bitmap_pre, System.IO.Path.Combine(output_path, "Pastellized Polse.png")); }