protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { FramedImage?.Dispose(); } disposedValue = true; } }
/// <summary> /// Parcing images data from files to FramesImages list /// </summary> private static bool TryToParceFramedImages() { if (PathToTxtFile == string.Empty) { return(false); } try { List <FramedImage> parcedImages = new List <FramedImage>(); using (StreamReader sr = new StreamReader(PathToTxtFile)) { string currentLine; while ((currentLine = sr.ReadLine()) != null) { if (currentLine != "") { string[] splitedLine = currentLine.Split(','); List <Frame> currentFrames = new List <Frame>(); for (int indexOfStartFramePos = 1; indexOfStartFramePos <= splitedLine.Length - 4; indexOfStartFramePos += 4) { Frame frame = new Frame(); frame.TopLeftX = int.Parse(splitedLine[indexOfStartFramePos]); frame.TopLeftY = int.Parse(splitedLine[indexOfStartFramePos + 1]); frame.BottomRightX = int.Parse(splitedLine[indexOfStartFramePos + 2]); frame.BottomRightY = int.Parse(splitedLine[indexOfStartFramePos + 3]); currentFrames.Add(frame); } FramedImage currentImage = new FramedImage(); currentImage.source = splitedLine[0]; currentImage.frames = currentFrames; parcedImages.Add(currentImage); } } } FramedImages = parcedImages; return(true); } catch (Exception) { return(false); } }
private void LoadImages() { FramedImage[] arr = new FramedImage[] { // bases new FramedImage(CreateGsImage(@"Images\Bases\towerBase.png"), "towerBase", false, 0, 0), // enemies ( all enemies are animated to avoid exceptions ) new FramedImage(CreateGsImage(@"Images\Enemies\walker.png"), "walker", true, 4, 1), new FramedImage(CreateGsImage(@"Images\Enemies\biker.png"), "biker", true, 4, 1), new FramedImage(CreateGsImage(@"Images\Enemies\flapper.png"), "flapper", true, 5, 1), new FramedImage(CreateGsImage(@"Images\Enemies\glider.png"), "glider", true, 4, 1), // towers new FramedImage(CreateGsImage(@"Images\Towers\railgun.png"), "railgun", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\turret.png"), "turret", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\missileLauncher.png"), "missileLauncher", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\shockwaveGenerator.png"), "shockwaveGenerator", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\speedbump.png"), "speedbump", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\sprinkler.png"), "sprinkler", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\teslaCoil.png"), "teslaCoil", true, 5, 1), new FramedImage(CreateGsImage(@"Images\Towers\machinegun.png"), "machinegun", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\flamethrower.png"), "flamethrower", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Towers\seeker.png"), "seeker", false, 0, 0), // projectiles new FramedImage(CreateGsImage(@"Images\Projectiles\rocket.png"), "rocket", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\bullet.png"), "bullet", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\pulse.png"), "pulse", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\debri.png"), "debri", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\fragment.png"), "fragment", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\lightning.png"), "lightning", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\flame.png"), "flame", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\flamewave.png"), "flamewave", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\wave.png"), "wave", false, 0, 0), new FramedImage(CreateGsImage(@"Images\Projectiles\lockmissile.png"), "lockmissile", false, 0, 0), }; foreach (var d in arr) { images[d.Key] = d; } }
public static List <FramedImage> GetProcessedFramedImages(List <FramedImage> sourceImages, List <int> effects) { bool needCrop = effects.Contains(EditPageVM.EFFECT_CROP); bool needRotate = effects.Contains(EditPageVM.EFFECT_ROTATE); if (!needCrop && !needRotate) { return(sourceImages); } List <FramedImage> processedImages = sourceImages; int rotationCount = effects.FindAll(element => element.Equals(EditPageVM.EFFECT_ROTATE)).Count; int indent = EditPageVM.IndentToCrop; // Processing frames for (int i = 0; i < processedImages.Count; i++) { FramedImage currentImage = processedImages[i]; var source = new BitmapImage(new Uri(currentImage.source)); int width = source.PixelWidth; int height = source.PixelHeight; // Cropping frames if (needCrop) { currentImage.frames = CropFrames(width, height, indent, currentImage.frames); width -= 2 * indent; height -= 2 * indent; } // Rotating frames for (int rotation = 0; rotation < rotationCount; rotation++) { currentImage.frames = RotateFrames90(currentImage.frames, width); int temp = width; width = height; height = temp; } processedImages[i] = currentImage; } return(processedImages); }
private void LoadImages() { FramedImage[] images = new FramedImage[] { // bases new FramedImage(LoadTexture(@"Images\Bases\towerBase"), "towerBase", false, 0, 0), // enemies ( all enemies are animated to avoid exceptions ) new FramedImage(LoadTexture(@"Images\Enemies\walker"), "walker", true, 4, 1), new FramedImage(LoadTexture(@"Images\Enemies\biker"), "biker", true, 4, 1), new FramedImage(LoadTexture(@"Images\Enemies\flapper"), "flapper", true, 5, 1), new FramedImage(LoadTexture(@"Images\Enemies\glider"), "glider", true, 4, 1), // towers new FramedImage(LoadTexture(@"Images\Towers\railgun"), "railgun", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\turret"), "turret", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\missileLauncher"), "missileLauncher", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\shockwaveGenerator"), "shockwaveGenerator", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\speedbump"), "speedbump", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\sprinkler"), "sprinkler", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\teslaCoil"), "teslaCoil", true, 5, 1), new FramedImage(LoadTexture(@"Images\Towers\machinegun"), "machinegun", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\flamethrower"), "flamethrower", false, 0, 0), new FramedImage(LoadTexture(@"Images\Towers\seeker"), "seeker", false, 0, 0), // projectiles new FramedImage(LoadTexture(@"Images\Projectiles\rocket"), "rocket", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\bullet"), "bullet", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\pulse"), "pulse", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\debri"), "debri", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\fragment"), "fragment", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\lightning"), "lightning", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\flame"), "flame", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\flamewave"), "flamewave", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\wave"), "wave", false, 0, 0), new FramedImage(LoadTexture(@"Images\Projectiles\lockmissile"), "lockmissile", false, 0, 0), }; Images = images.ToDictionary(k => k.Key, v => v); }
/// <summary> /// Creates new processed marker files and images /// </summary> public async void CreateImagesAsync() { try { // Show the FolderBrowserDialog. var folderBrowserDialog = new FolderBrowserDialog(); DialogResult dialogResult = folderBrowserDialog.ShowDialog(); if (dialogResult == System.Windows.Forms.DialogResult.OK) { await Task.Run(() => { string folder = folderBrowserDialog.SelectedPath; // If framed type if (MarkerType == UserData.MARKER_TYPE_FRAME) { // Asking for a new file string caption = "Create new marker file?"; string messageBoxText = "Press 'Yes' if you want to create new marker file. Or 'No' if you want to add markers to current file."; MessageBoxButton button = MessageBoxButton.YesNoCancel; MessageBoxImage icon = MessageBoxImage.Question; MessageBoxResult messageBoxResult = System.Windows.MessageBox.Show(messageBoxText, caption, button, icon); // Setting file to write string pathToMarkerFile; if (messageBoxResult == MessageBoxResult.Yes) { pathToMarkerFile = CreateNewPath(folder, UserData.PathToTxtFile); } else { if (messageBoxResult == MessageBoxResult.No) { pathToMarkerFile = UserData.PathToTxtFile; } else { return; } } DisableViews(); List <FramedImage> processedImages = new List <FramedImage>(UserData.FramedImages); // Processing frames processedImages = FileProcess.GetProcessedFramedImages(processedImages, Effects); // Creating new processed images for (int i = 0; i < processedImages.Count; i++) { CreateImagesBTN_Content = "Saving: " + (i + 1) + "/" + processedImages.Count; FramedImage newImage = new FramedImage(); newImage.source = CreateProcessedImage(folder, processedImages[i].source); newImage.frames = processedImages[i].frames; processedImages[i] = newImage; } // Parcing to writeble format var parcedLines = FileProcess.ParceFramedImages(processedImages); // Writing processed images using (StreamWriter sw = new StreamWriter(pathToMarkerFile, true)) { sw.Write("\n"); foreach (var line in parcedLines) { sw.WriteLine(line); } } } // If masked type else { DisableViews(); // Creating new processed images int countOfParcedImages = UserData.MaskedImages.Count; for (int i = 0; i < countOfParcedImages; i++) { CreateImagesBTN_Content = "Saving: " + (i + 1) + "/" + countOfParcedImages; CreateProcessedImage(folder, UserData.MaskedImages[i].source); CreateProcessedMask(folder, UserData.MaskedImages[i]); } } GC.Collect(); }); } ValidateViewsEnablity(); } catch (Exception e) { string messageBoxText = e.Message; string caption = "Couldn't save the image"; MessageBoxButton button = MessageBoxButton.OK; MessageBoxImage icon = MessageBoxImage.Error; System.Windows.MessageBox.Show(messageBoxText, caption, button, icon); ValidateViewsEnablity(); } }
internal void ResetOffsetsToDefault() { FramedImage.ResetOffsetsToDefault(); }