UltimateZoneBuilder/Source/Core/Data/TexturePatch.cs
MaxED 15b2adfe30 Texture Browser Form: swapped foreground and background colors of texture size labels.
Fixed, Texture Browser Form: well, I broke "Tab" key functionality again (in previous commit)...
Maintenance: changed curly braces style to match DB2 one (hopefully not breaking anything in the process...).
Maintenance: changed private method names casing to match DB2 one.
2014-12-03 23:15:26 +00:00

111 lines
2.9 KiB
C#

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System.IO;
using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.ZDoom;
#endregion
namespace CodeImp.DoomBuilder.Data
{
public enum TexturePathRenderStyle
{
Copy,
Blend,
Add,
Subtract,
ReverseSubtract,
Modulate,
CopyAlpha,
CopyNewAlpha, //mxd
Overlay, //mxd
}
public enum TexturePathBlendStyle //mxd
{
None,
Blend,
Tint
}
internal struct TexturePatch
{
public readonly string lumpname;
public readonly int x;
public readonly int y;
public readonly bool flipx;
public readonly bool flipy;
public readonly bool haslongname; //mxd
public readonly int rotate;
public PixelColor blend;
public readonly float alpha;
public readonly TexturePathRenderStyle style;
public readonly TexturePathBlendStyle blendstyle; //mxd
public readonly float tintammount;//mxd
// Constructor for simple patches
public TexturePatch(string lumpname, int x, int y)
{
// Initialize
this.lumpname = lumpname;
this.x = x;
this.y = y;
this.flipx = false;
this.flipy = false;
this.rotate = 0;
this.blend = new PixelColor(0, 0, 0, 0);
this.alpha = 1.0f;
this.style = TexturePathRenderStyle.Copy;
this.blendstyle = TexturePathBlendStyle.None;//mxd
this.tintammount = 0; //mxd
this.haslongname = false; //mxd
}
//mxd. Constructor for hires patches
public TexturePatch(PatchStructure patch)
{
// Initialize
this.lumpname = patch.Name.ToUpperInvariant();
this.x = patch.OffsetX;
this.y = patch.OffsetY;
this.flipx = patch.FlipX;
this.flipy = patch.FlipY;
this.rotate = patch.Rotation;
this.blend = patch.BlendColor;
this.alpha = patch.Alpha;
this.style = patch.RenderStyle;
this.blendstyle = patch.BlendStyle;
this.tintammount = patch.TintAmmount;
this.haslongname = (Path.GetFileNameWithoutExtension(this.lumpname) != this.lumpname);
//mxd. Check data so we don't perform unneeded operations later on
if(this.alpha == 1.0f)
{
if(this.style == TexturePathRenderStyle.Blend
|| this.style == TexturePathRenderStyle.CopyAlpha
|| this.style == TexturePathRenderStyle.CopyNewAlpha
|| this.style == TexturePathRenderStyle.Overlay)
this.style = TexturePathRenderStyle.Copy;
}
//mxd. and get rid of render styles we don't support
if(this.style == TexturePathRenderStyle.Overlay) this.style = TexturePathRenderStyle.Copy;
}
}
}