From: jp Date: Sat, 23 Jul 2016 14:50:32 +0000 (+0200) Subject: implement Crow.LoadFromStream and filenotfound catch X-Git-Tag: v0.4~39 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=216fa1608767774b0db1d31551dfee25fcbcddbd;p=jp%2Fcrow.git implement Crow.LoadFromStream and filenotfound catch modifié : Tests/OpenGL/Texture.cs debug window resize bugs modifié : src/GraphicObjects/GraphicObject.cs modifié : src/GraphicObjects/Window.cs --- diff --git a/Tests/OpenGL/Texture.cs b/Tests/OpenGL/Texture.cs index 5e3a350a..ce24808b 100644 --- a/Tests/OpenGL/Texture.cs +++ b/Tests/OpenGL/Texture.cs @@ -37,30 +37,31 @@ namespace Crow 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); + } } } diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 59b4be18..2838f6cd 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -239,6 +239,10 @@ namespace Crow set { if (_width == value) return; + if (value.IsFixed) { + if (value < MinimumSize.Width || (value > MaximumSize.Width && MaximumSize.Width > 0)) + return; + } _width = value; NotifyValueChanged ("Width", _width); @@ -253,6 +257,10 @@ namespace Crow set { if (_height == value) return; + if (value.IsFixed) { + if (value < MinimumSize.Height || (value > MaximumSize.Height && MaximumSize.Height > 0)) + return; + } _height = value; NotifyValueChanged ("Height", _height); @@ -1239,6 +1247,8 @@ namespace Crow } } 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); diff --git a/src/GraphicObjects/Window.cs b/src/GraphicObjects/Window.cs index 7b5f7c9a..afb4f4f2 100644 --- a/src/GraphicObjects/Window.cs +++ b/src/GraphicObjects/Window.cs @@ -101,20 +101,18 @@ namespace Crow } 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; @@ -132,38 +130,44 @@ namespace Crow 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;