diff --git a/axios/Axios_WP7.csproj b/axios/Axios_WP7.csproj index 8b2eaf3..70983a8 100644 --- a/axios/Axios_WP7.csproj +++ b/axios/Axios_WP7.csproj @@ -166,6 +166,7 @@ + diff --git a/axios/Axios_Windows.csproj b/axios/Axios_Windows.csproj index 3fa789c..9f27321 100644 --- a/axios/Axios_Windows.csproj +++ b/axios/Axios_Windows.csproj @@ -209,6 +209,7 @@ + diff --git a/axios/Axios_Xbox_360.csproj b/axios/Axios_Xbox_360.csproj index df47048..4ccbed8 100644 --- a/axios/Axios_Xbox_360.csproj +++ b/axios/Axios_Xbox_360.csproj @@ -159,6 +159,7 @@ + diff --git a/axios/Axios_settings.cs b/axios/Axios_settings.cs index 63d0b20..3e8d458 100644 --- a/axios/Axios_settings.cs +++ b/axios/Axios_settings.cs @@ -86,6 +86,7 @@ * 1.0.1.6 - 5/18/2012 * - Adding cut extension - [Author: BJD] * - Adding support for custom handling of Gleed2D items + * - Changing location of GetTexture to extensions * */ #endregion diff --git a/axios/Engine/AxiosGameScreen.cs b/axios/Engine/AxiosGameScreen.cs index 1fd0873..211795f 100644 --- a/axios/Engine/AxiosGameScreen.cs +++ b/axios/Engine/AxiosGameScreen.cs @@ -415,39 +415,6 @@ namespace Axios.Engine return true; } -#if WINDOWS -// System.Drawing is NOT avaiable on WP7 or Xbox - /* - * http://stackoverflow.com/a/7394185/195722 - * - * - * - */ - public Texture2D GetTexture(System.Drawing.Bitmap bitmap) - { - BlendState oldstate = ScreenManager.GraphicsDevice.BlendState; - ScreenManager.GraphicsDevice.BlendState = BlendState.AlphaBlend; - Texture2D tex = new Texture2D(this.ScreenManager.GraphicsDevice, bitmap.Width, bitmap.Height, true, SurfaceFormat.Color); - System.Drawing.Imaging.BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat); - - int bufferSize = data.Height * data.Stride; - - //create data buffer - byte[] bytes = new byte[bufferSize]; - - // copy bitmap data into buffer - System.Runtime.InteropServices.Marshal.Copy(data.Scan0, bytes, 0, bytes.Length); - - // copy our buffer to the texture - tex.SetData(bytes); - - // unlock the bitmap data - bitmap.UnlockBits(data); - - this.ScreenManager.GraphicsDevice.BlendState = oldstate; - return tex; - } -#endif } } diff --git a/axios/Engine/Extensions/Bitmap.cs b/axios/Engine/Extensions/Bitmap.cs new file mode 100644 index 0000000..c540362 --- /dev/null +++ b/axios/Engine/Extensions/Bitmap.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using GameStateManagement; + +namespace Axios.Engine.Extensions +{ + public static class Bitmap_extension + { +#if WINDOWS + // System.Drawing is NOT avaiable on WP7 or Xbox + /* + * http://stackoverflow.com/a/7394185/195722 + * + * + * + */ + public static Texture2D GetTexture(this System.Drawing.Bitmap bitmap, GameScreen gameScreen) + { + BlendState oldstate = gameScreen.ScreenManager.GraphicsDevice.BlendState; + gameScreen.ScreenManager.GraphicsDevice.BlendState = BlendState.AlphaBlend; + Texture2D tex = new Texture2D(gameScreen.ScreenManager.GraphicsDevice, bitmap.Width, bitmap.Height, true, SurfaceFormat.Color); + + System.Drawing.Imaging.BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat); + + int bufferSize = data.Height * data.Stride; + + //create data buffer + byte[] bytes = new byte[bufferSize]; + + // copy bitmap data into buffer + System.Runtime.InteropServices.Marshal.Copy(data.Scan0, bytes, 0, bytes.Length); + + // copy our buffer to the texture + tex.SetData(bytes); + + // unlock the bitmap data + bitmap.UnlockBits(data); + + gameScreen.ScreenManager.GraphicsDevice.BlendState = oldstate; + return tex; + } +#endif + } +}