public static void ImportNewSprite(SpriteFolder folder, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, string filename = "", int frame = 0, int offsetX = 0, int offsetY = 0) { // ignore alpha channel if not 32 bit ARGB bool useAlphaChannel = bmp.PixelFormat != PixelFormat.Format32bppArgb ? false : alpha; // ignore palette remap options if not using an indexed palette if (bmp.PixelFormat != PixelFormat.Format8bppIndexed) { remapColours = false; useRoomBackground = false; } // do import Sprite sprite = Factory.NativeProxy.CreateSpriteFromBitmap(bmp, transparency, remapColours, useRoomBackground, useAlphaChannel); sprite.TransparentColour = transparency; sprite.RemapToGamePalette = remapColours; sprite.RemapToRoomPalette = useRoomBackground; sprite.SourceFile = Utilities.GetRelativeToProjectPath(filename); sprite.Frame = frame; sprite.OffsetX = offsetX; sprite.OffsetY = offsetY; folder.Sprites.Add(sprite); }
public SpriteImportWindow(string[] filenames, Sprite replace) { InitializeComponent(); // set defaults from the old sprite SpriteImportMethod = replace.TransparentColour; SelectionOffset = new Point(replace.OffsetX, replace.OffsetY); SelectionSize = new Size(replace.Width, replace.Height); UseAlphaChannel = replace.ImportAlphaChannel; RemapToGamePalette = replace.RemapToGamePalette; UseBackgroundSlots = replace.RemapToRoomPalette; // replace, not import folder = null; this.replace = replace; // replacement can only use one image, but you can pick // any one and make a selection from it btnImportAll.Enabled = false; cmbFilenames.Enabled = filenames.Length > 1; cmbFilenames.Items.Clear(); imageLookup = new List <string>(); foreach (string filename in filenames) { imageLookup.Add(filename); cmbFilenames.Items.Add(Path.GetFileName(filename)); } cmbFilenames.SelectedIndex = 0; OneTimeControlSetup(); PostImageLoad(); }
public static void ReplaceSprite(Sprite sprite, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, string filename = "", int frame = 0, int offsetX = 0, int offsetY = 0) { // ignore alpha channel if not 32 bit ARGB bool useAlphaChannel = bmp.PixelFormat != PixelFormat.Format32bppArgb || Factory.AGSEditor.CurrentGame.Settings.ColorDepth != GameColorDepth.TrueColor ? false : alpha; // ignore palette remap options if not using an indexed palette if (bmp.PixelFormat != PixelFormat.Format8bppIndexed) { remapColours = false; useRoomBackground = false; } // do replacement Factory.NativeProxy.ReplaceSpriteWithBitmap(sprite, bmp, transparency, remapColours, useRoomBackground, useAlphaChannel); sprite.TransparentColour = transparency; sprite.RemapToGamePalette = remapColours; sprite.RemapToRoomPalette = useRoomBackground; sprite.SourceFile = Utilities.GetRelativeToProjectPath(filename); sprite.Frame = frame; sprite.OffsetX = offsetX; sprite.OffsetY = offsetY; sprite.ImportAlphaChannel = alpha; }
public SpriteImportWindow(string[] filenames, SpriteFolder folder) { InitializeComponent(); // take some defaults from Editor preferences SpriteImportMethod = (SpriteImportTransparency)Factory.AGSEditor.Settings.SpriteImportMethod; // import, not replace this.folder = folder; replace = null; btnImportAll.Enabled = cmbFilenames.Enabled = filenames.Length > 1; cmbFilenames.Items.Clear(); imageLookup = new List <string>(); foreach (string filename in filenames) { imageLookup.Add(filename); cmbFilenames.Items.Add(Path.GetFileName(filename)); } cmbFilenames.SelectedIndex = 0; OneTimeControlSetup(); PostImageLoad(); }
public static void ImportNewSprite(SpriteFolder folder, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, string filename, int frame, Rectangle selection, bool tile) { // ignore alpha channel if not 32 bit ARGB bool useAlphaChannel = bmp.PixelFormat != PixelFormat.Format32bppArgb || Factory.AGSEditor.CurrentGame.Settings.ColorDepth != GameColorDepth.TrueColor ? false : alpha; // ignore palette remap options if not using an indexed palette if (bmp.PixelFormat != PixelFormat.Format8bppIndexed) { remapColours = false; useRoomBackground = false; } // do import Sprite sprite = Factory.NativeProxy.CreateSpriteFromBitmap(bmp, transparency, remapColours, useRoomBackground, useAlphaChannel); sprite.TransparentColour = transparency; sprite.RemapToGamePalette = remapColours; sprite.RemapToRoomPalette = useRoomBackground; sprite.SourceFile = Utilities.GetRelativeToProjectPath(filename); sprite.Frame = frame; sprite.OffsetX = selection.Left; sprite.OffsetY = selection.Top; sprite.ImportWidth = selection.Width; sprite.ImportHeight = selection.Height; sprite.ImportAlphaChannel = alpha; sprite.ImportAsTile = tile; folder.Sprites.Add(sprite); }
public static void ReplaceSprite(Sprite sprite, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, SpriteSheet spritesheet = null, int frame = 0, string filename = "") { if (spritesheet != null) { Rectangle selection = spritesheet.GetFirstSpriteSelection(new Size(bmp.Width, bmp.Height)); if (!selection.IsEmpty) { Bitmap replacement = bmp.Clone(selection, bmp.PixelFormat); ReplaceSprite(sprite, replacement, alpha, remapColours, useRoomBackground, transparency, filename, frame, selection.Left, selection.Top); replacement.Dispose(); } else { string message = String.Format("Tiled selection for sprite {0} was out-of-bounds for image '{1}'", sprite.Number, sprite.SourceFile); throw new InvalidOperationException(message); } } else { ReplaceSprite(sprite, bmp, alpha, remapColours, useRoomBackground, transparency, filename, frame); } }
public static void ReplaceSprite(Sprite sprite, string filename, int frame, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, SpriteSheet spritesheet = null) { Bitmap bmp = LoadFrameImageFromFile(filename, frame); ReplaceSprite(sprite, bmp, alpha, remapColours, useRoomBackground, transparency, spritesheet, frame, filename); bmp.Dispose(); }
Sprite IAGSEditor.CreateNewSprite(ISpriteFolder inFolder, Bitmap newImage, SpriteImportTransparency transparencyType, bool useAlphaChannel) { Sprite newSprite = Factory.NativeProxy.CreateSpriteFromBitmap(newImage, (SpriteImportMethod)((int)transparencyType), true, false, useAlphaChannel); if (newSprite.ColorDepth < 32) { newSprite.AlphaChannel = false; } newSprite.SourceFile = string.Empty; inFolder.Sprites.Add(newSprite); _agsEditor.CurrentGame.RootSpriteFolder.NotifyClientsOfUpdate(); return newSprite; }
void IAGSEditor.ChangeSpriteImage(int spriteNumber, Bitmap newImage, SpriteImportTransparency transparencyType, bool useAlphaChannel) { Sprite sprite = _agsEditor.CurrentGame.RootSpriteFolder.FindSpriteByID(spriteNumber, true); if (sprite == null) { throw new AGSEditorException("Unable to find sprite " + spriteNumber + " in any sprite folders"); } Factory.NativeProxy.ReplaceSpriteWithBitmap(sprite, newImage, (SpriteImportMethod)((int)transparencyType), true, false, useAlphaChannel); if (sprite.ColorDepth < 32) { sprite.AlphaChannel = false; } sprite.SourceFile = string.Empty; _agsEditor.CurrentGame.RootSpriteFolder.NotifyClientsOfUpdate(); }
public static void ImportNewSprites(SpriteFolder folder, string[] filenames, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, SpriteSheet spritesheet = null) { Progress progress = new Progress(filenames.Length, String.Format("Importing sprites from {0} files", filenames.Length)); progress.Show(); for (int index = 0; index < filenames.Length; index++) { progress.SetProgressValue(index); ImportNewSprites(folder, filenames[index], alpha, remapColours, useRoomBackground, transparency, spritesheet); } progress.Hide(); progress.Dispose(); }
public Sprite(XmlNode node) { _number = Convert.ToInt32(node.Attributes["Slot"].InnerText); _width = Convert.ToInt32(node.Attributes["Width"].InnerText); _height = Convert.ToInt32(node.Attributes["Height"].InnerText); _colorDepth = Convert.ToInt32(node.Attributes["ColorDepth"].InnerText); if (node.Attributes["AlphaChannel"] != null) { _alphaChannel = Convert.ToBoolean(node.Attributes["AlphaChannel"].InnerText); } if (node.Attributes["ColoursLockedToRoom"] != null) { _coloursLockedToRoom = Convert.ToInt32(node.Attributes["ColoursLockedToRoom"].InnerText); } if (node.SelectSingleNode("Source") != null) { XmlNode sourceNode = node.SelectSingleNode("Source"); try { _sourceFile = SerializeUtils.GetElementString(sourceNode, "FileName"); _offsetX = Convert.ToInt32(SerializeUtils.GetElementString(sourceNode, "OffsetX")); _offsetY = Convert.ToInt32(SerializeUtils.GetElementString(sourceNode, "OffsetY")); _frame = Convert.ToInt32(SerializeUtils.GetElementString(sourceNode, "Frame")); _remapToGamePalette = Convert.ToBoolean(SerializeUtils.GetElementString(sourceNode, "RemapToGamePalette")); _remapToRoomPalette = Convert.ToBoolean(SerializeUtils.GetElementString(sourceNode, "RemapToRoomPalette")); _tranparentColour = (SpriteImportTransparency)Enum.Parse(typeof(SpriteImportTransparency), SerializeUtils.GetElementString(sourceNode, "ImportMethod")); } catch (InvalidDataException) { // pass } try { _importAlphaChannel = Convert.ToBoolean(SerializeUtils.GetElementString(sourceNode, "ImportAlphaChannel")); } catch (InvalidDataException) { _importAlphaChannel = true; } } }
public static void ImportNewSprites(SpriteFolder folder, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, SpriteSheet spritesheet = null, int frame = 0, string filename = "") { if (spritesheet != null) { foreach (Rectangle selection in spritesheet.GetSpriteSelections(new Size(bmp.Width, bmp.Height))) { Bitmap import = bmp.Clone(selection, bmp.PixelFormat); ImportNewSprite(folder, import, alpha, remapColours, useRoomBackground, transparency, filename, frame, selection.Left, selection.Top); import.Dispose(); } } else { ImportNewSprite(folder, bmp, alpha, remapColours, useRoomBackground, transparency, filename, frame); } }
public SpriteImportWindow(Bitmap bmp, SpriteFolder folder) { InitializeComponent(); // take some defaults from Editor preferences SpriteImportMethod = (SpriteImportTransparency)Factory.AGSEditor.Settings.SpriteImportMethod; // import, not replace this.folder = folder; replace = null; image = bmp; btnImportAll.Enabled = false; cmbFilenames.Enabled = false; OneTimeControlSetup(); PostImageLoad(); }
private void OneTimeControlSetup() { bool gameUsesIndexedPalette = Factory.AGSEditor.CurrentGame.Settings.ColorDepth == AGS.Types.GameColorDepth.Palette; // if import method is for index 0 and this is not an indexed palette if (this.SpriteImportMethod == SpriteImportTransparency.PaletteIndex0 && !gameUsesIndexedPalette) { this.SpriteImportMethod = SpriteImportTransparency.LeaveAsIs; } // enable or disable things based on the colour depth chkRoomBackground.Enabled = gameUsesIndexedPalette; // if tiling direction hasn't been set yet, just take the first option if (cmbTileDirection.SelectedIndex == -1) { cmbTileDirection.SelectedIndex = 0; } }
public static void ImportNewSprites(SpriteFolder folder, string filename, bool alpha, bool remapColours, bool useRoomBackground, SpriteImportTransparency transparency, SpriteSheet spritesheet = null) { Progress progress = new Progress(GetFrameCountEstimateFromFile(filename), String.Format("Importing frames from {0}", filename)); progress.Show(); int frame = 0; foreach (Bitmap bmp in LoadSpritesFromFile(filename)) { progress.SetProgressValue(frame); ImportNewSprites(folder, bmp, alpha, remapColours, useRoomBackground, transparency, spritesheet, frame, filename); bmp.Dispose(); frame++; } progress.Hide(); progress.Dispose(); }
public SpriteImportWindow(Bitmap bmp, Sprite replace) { InitializeComponent(); // set defaults from the old sprite SpriteImportMethod = replace.TransparentColour; SelectionOffset = new Point(replace.OffsetX, replace.OffsetY); SelectionSize = new Size(replace.Width, replace.Height); UseAlphaChannel = replace.ImportAlphaChannel; RemapToGamePalette = replace.RemapToGamePalette; UseBackgroundSlots = replace.RemapToRoomPalette; // replace, not import folder = null; this.replace = replace; image = bmp; btnImportAll.Enabled = false; cmbFilenames.Enabled = false; OneTimeControlSetup(); PostImageLoad(); }
public Sprite CreateSpriteFromBitmap(Bitmap bmp, SpriteImportTransparency transparency, bool remapColours, bool useRoomBackgroundColours, bool alphaChannel) { int spriteSlot = _native.GetFreeSpriteSlot(); return(_native.SetSpriteFromBitmap(spriteSlot, bmp, (int)transparency, remapColours, useRoomBackgroundColours, alphaChannel)); }
public void ReplaceSpriteWithBitmap(Sprite spr, Bitmap bmp, SpriteImportTransparency transparency, bool remapColours, bool useRoomBackgroundColours, bool alphaChannel) { _native.ReplaceSpriteWithBitmap(spr, bmp, (int)transparency, remapColours, useRoomBackgroundColours, alphaChannel); }