public static LTexture FilterColor(string res, LColor height, Loon.Core.Graphics.Opengl.LTexture.Format format) { uint color = height.GetRGB(); LImage tmp = LImage.CreateImage(res); LImage image = LImage.CreateImage(tmp.GetWidth(), tmp.GetHeight(), true); LGraphics g = image.GetLGraphics(); g.DrawImage(tmp, 0, 0); g.Dispose(); if (tmp != null) { tmp.Dispose(); tmp = null; } Color[] pixels = image.GetPixels(); int size = pixels.Length; for (int i = 0; i < size; i++) { if (pixels[i].PackedValue == color) { pixels[i].PackedValue = LSystem.TRANSPARENT; } } image.SetFormat(format); image.SetPixels(pixels, image.GetWidth(), image.GetHeight()); LTexture texture = image.GetTexture(); if (image != null) { image.Dispose(); image = null; } return(texture); }
public LTexture Pack(Loon.Core.Graphics.Opengl.LTexture.Format format) { if (texture != null && !packing) { return(texture); } if (fileName != null) { texture = new LTexture(GLLoader.GetTextureData(fileName), format); texture.isExt = true; } else { LImage image = PackImage(); if (image == null) { return(null); } if (texture != null) { texture.Destroy(); texture = null; } if (colorMask != null) { Color[] pixels = image.GetPixels(); int size = pixels.Length; uint color = colorMask.GetRGB(); for (int i = 0; i < size; i++) { if (pixels[i].PackedValue == color) { pixels[i].PackedValue = LSystem.TRANSPARENT; } } image.SetPixels(pixels, image.GetWidth(), image.GetHeight()); } texture = new LTexture(GLLoader.GetTextureData(image), format); texture.isExt = true; if (image != null) { image.Dispose(); image = null; } } return(texture); }
public LTexture LoadBarColor(LColor c1, LColor c2, LColor c3) { if (colors.Count > 10) { lock (colors) { foreach (LTexture tex2d in colors.Values) { if (tex2d != null) { tex2d.Destroy(); } } colors.Clear(); } } int hash = 1; hash = LSystem.Unite(hash, c1.GetRGB()); hash = LSystem.Unite(hash, c2.GetRGB()); hash = LSystem.Unite(hash, c3.GetRGB()); LTexture texture = null; lock (colors) { texture = (LTexture)CollectionUtils.Get(colors, hash); } if (texture == null) { LImage image = LImage.CreateImage(8, 8, false); LGraphics g = image.GetLGraphics(); g.SetColor(c1); g.FillRect(0, 0, 4, 4); g.SetColor(c2); g.FillRect(4, 0, 4, 4); g.SetColor(c3); g.FillRect(0, 4, 4, 4); g.Dispose(); texture = image.GetTexture(); CollectionUtils.Put(colors, hash, texture); } return(this.texture = texture); }
public virtual GLEx SetTint(int r, int g, int b) { return(SetColor(LColor.GetRGB(r, g, b))); }