Пример #1
0
        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);
        }
Пример #2
0
        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();
        }
Пример #3
0
        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;
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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();
        }
Пример #8
0
 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;
 }
Пример #9
0
        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();
        }
Пример #10
0
        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();
        }
Пример #11
0
        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();
        }
Пример #12
0
        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;
                }
            }
        }
Пример #13
0
 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);
     }
 }
Пример #14
0
        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();
        }
Пример #15
0
        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;
            }
        }
Пример #16
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();
        }
Пример #17
0
        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();
        }
Пример #18
0
        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));
        }
Пример #19
0
 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;
 }
Пример #20
0
 public void ReplaceSpriteWithBitmap(Sprite spr, Bitmap bmp, SpriteImportTransparency transparency, bool remapColours, bool useRoomBackgroundColours, bool alphaChannel)
 {
     _native.ReplaceSpriteWithBitmap(spr, bmp, (int)transparency, remapColours, useRoomBackgroundColours, alphaChannel);
 }