public Texture(string _mapPath, bool flipY = true)
{
- if (!File.Exists (_mapPath))
- throw new FileNotFoundException ("Texture not found", _mapPath);
- try {
- Map = _mapPath;
+ using (Stream s = Interface.GetStreamFromPath (_mapPath)) {
- Bitmap bitmap = new Bitmap(_mapPath);
+ try {
+ Map = _mapPath;
- if(flipY)
- bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
+ Bitmap bitmap = new Bitmap (s);
- BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
- ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
+ if (flipY)
+ bitmap.RotateFlip (RotateFlipType.RotateNoneFlipY);
- createTexture (data.Scan0, data.Width, data.Height);
+ BitmapData data = bitmap.LockBits (new System.Drawing.Rectangle (0, 0, bitmap.Width, bitmap.Height),
+ ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
- bitmap.UnlockBits(data);
+ createTexture (data.Scan0, data.Width, data.Height);
- GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear);
- GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
+ bitmap.UnlockBits (data);
- GL.GenerateMipmap(GenerateMipmapTarget.Texture2D);
+ GL.TexParameter (TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear);
+ GL.TexParameter (TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
- } catch (Exception ex) {
- Debug.WriteLine ("Error loading texture: " + Map + ":" + ex.Message);
+ GL.GenerateMipmap (GenerateMipmapTarget.Texture2D);
+
+ } catch (Exception ex) {
+ Debug.WriteLine ("Error loading texture: " + Map + ":" + ex.Message);
+ }
}
}
set {
if (_width == value)
return;
+ if (value.IsFixed) {
+ if (value < MinimumSize.Width || (value > MaximumSize.Width && MaximumSize.Width > 0))
+ return;
+ }
_width = value;
NotifyValueChanged ("Width", _width);
set {
if (_height == value)
return;
+ if (value.IsFixed) {
+ if (value < MinimumSize.Height || (value > MaximumSize.Height && MaximumSize.Height > 0))
+ return;
+ }
_height = value;
NotifyValueChanged ("Height", _height);
}
}
void applyStyle(){
+ //The first place searched for a style is in the style propery of this instance
+ //this field may contains the path to a Style file for the object.
if (string.IsNullOrEmpty (style))
return;
Stream s = Interface.GetStreamFromPath (style);
}
if (this.HasFocus) {
-
- if (e.Mouse.IsButtonDown (MouseButton.Left)) {
-
+ if (e.Mouse.IsButtonDown (MouseButton.Left)) {
int currentLeft = this.Left;
int currentTop = this.Top;
int currentWidth, currentHeight;
if (currentLeft == 0) {
currentLeft = this.Slot.Left;
- //this.Left = currentLeft;
+ this.Left = currentLeft;
}
if (currentTop == 0) {
currentTop = this.Slot.Top;
- //this.Top = currentTop;
+ this.Top = currentTop;
}
if (this.Width.IsFixed)
currentWidth = this.Width;
this.Top = currentTop + e.YDelta;
break;
case Direction.N:
- this.Top = currentTop + e.YDelta;
this.Height = currentHeight - e.YDelta;
+ if (this.Height == currentHeight - e.YDelta)
+ this.Top = currentTop + e.YDelta;
break;
case Direction.S:
this.Height = currentHeight + e.YDelta;
break;
case Direction.W:
- this.Left = currentLeft + e.XDelta;
this.Width = currentWidth - e.XDelta;
+ if (this.Width == currentWidth - e.XDelta)
+ this.Left = currentLeft + e.XDelta;
break;
case Direction.E:
this.Width = currentWidth + e.XDelta;
break;
case Direction.NW:
- this.Left = currentLeft + e.XDelta;
- this.Top = currentTop + e.YDelta;
- this.Width = currentWidth - e.XDelta;
this.Height = currentHeight - e.YDelta;
+ if (this.Height == currentHeight - e.YDelta)
+ this.Top = currentTop + e.YDelta;
+ this.Width = currentWidth - e.XDelta;
+ if (this.Width == currentWidth - e.XDelta)
+ this.Left = currentLeft + e.XDelta;
break;
case Direction.NE:
- this.Width = currentWidth + e.XDelta;
- this.Top = currentTop + e.YDelta;
this.Height = currentHeight - e.YDelta;
+ if (this.Height == currentHeight - e.YDelta)
+ this.Top = currentTop + e.YDelta;
+ this.Width = currentWidth + e.XDelta;
break;
case Direction.SW:
- this.Left = currentLeft + e.XDelta;
this.Width = currentWidth - e.XDelta;
+ if (this.Width == currentWidth - e.XDelta)
+ this.Left = currentLeft + e.XDelta;
this.Height = currentHeight + e.YDelta;
break;
case Direction.SE:
- this.Width = currentWidth + e.XDelta;
this.Height = currentHeight + e.YDelta;
+ this.Width = currentWidth + e.XDelta;
break;
}
return;