1
0
mirror of synced 2024-11-27 17:00:50 +01:00

Tons more layout editor improvements.

- The UI has been completely redone. It's far much more clean and intuitive to edit with.
- All major pane types can be created now. Part panes are not supported but will be added in a future update due to being more complex to mess with.
- Window panes can be fully customized now, with custom frame adjusting, adding, and editing materials per frame and content regions.
- Picture panes have improved UV editing, and vertex color editing (which can set by corner or all at once).
- Text boxes will have a dialog for selecting the font file. These also can be switchted in the text editor.
- Improved pane deleting signifcantly. Material references are removed, and undo/redo works perfectly fine.
- Fixed many flags for properties which didn't get set correctly if edited.
- Fixed layout saving for text boxes with using the wrong encoding. Also some padding fixes.
- Text panes now auto calculate the text length and allow restricted lengths to be edited.
- Properties can now be scrolled down, and kept at that state when refocused.
- Add a selection box for selecting multiple panes at once
- Textures can be added, removed and edited in editor. Make sure these are in the same archive!!!
 Wii U auto does it in the same archive opened, switch must have a bntx in it. Automatic creaton of these will come
 - Picture panes can be generated via textures. Drag and drop one from a list. Also keeps the original image sizes.
 - Fixed window pane rendering with 1 frame and flipping textures.
 - Materials can add textures, and have new custom blend and alpha modes.
 when i finish the new layout export dialog.
- Added an edit option for image editor to gamma fix smash ultimate bntx.
This commit is contained in:
KillzXGaming 2019-10-13 21:02:39 -04:00
parent 9c0dbc8815
commit 04eec01042
130 changed files with 606003 additions and 817 deletions

View File

@ -1290,7 +1290,7 @@ namespace FirstPlugin
HasTextures = true;
}
}
if (IsTex1 && HasTextures)
{
STFileSaver.SaveFileFormat(this, FileName);
@ -1345,8 +1345,12 @@ namespace FirstPlugin
foreach (FTEX tex in ((BFRESGroupNode)group).Nodes)
{
Console.WriteLine("tex " + tex.Text + (resFileTex2.Textures.ContainsKey(tex.Text))) ;
if (resFileTex2.Textures.ContainsKey(tex.Text))
{
Console.WriteLine("NoMips " + tex.texture.MipData == null || tex.texture.MipData.Length <= 0);
if (tex.texture.MipData == null || tex.texture.MipData.Length <= 0)
{
progressBar.Task = $"Generating Mipmaps for {tex.Text}";

View File

@ -417,18 +417,19 @@ namespace Bfres.Structs
}
//For tex2
public static void GenerateMipmaps(uint MipCount, TEX_FORMAT Format, Bitmap bitmap, Texture texture)
public static void GenerateMipmaps(uint mipCount, TEX_FORMAT Format, Bitmap bitmap, Texture texture)
{
if (bitmap == null)
return; //Image is likely disposed and not needed to be applied
texture.MipCount = MipCount;
texture.MipOffsets = new uint[MipCount];
Console.WriteLine(texture.Name + " mipCount "+ mipCount);
texture.MipCount = mipCount;
texture.MipOffsets = new uint[mipCount];
try
{
//Create image block from bitmap first
var data = GenerateMipsAndCompress(bitmap, MipCount, Format);
var data = GenerateMipsAndCompress(bitmap, mipCount, Format);
bitmap.Dispose();

View File

@ -310,11 +310,54 @@ namespace FirstPlugin
var TextureGlyph = FontInfo.TextureGlyph;
var textPane = (LayoutBXLYT.ITextPane)pane;
int fontWidth = (int)textPane.FontSize.X;
int fontHeight = (int)textPane.FontSize.Y;
if (textPane.FontSize.X > 2)
{
fontWidth = (int)textPane.FontSize.X - 2;
fontHeight = (int)textPane.FontSize.Y - 2;
}
float XScale = (fontWidth / TextureGlyph.CellWidth);
float YScale = (fontHeight / TextureGlyph.CellWidth);
float height = (TextureGlyph.SheetHeight - 2) / TextureGlyph.LinesCount;
/* int pos = 0;
for (int i = 0; i < text.Length; i++)
{
char character = text[i];
int charWidth = (int)FontInfo.DefaultCharWidth;
int glyphWidth = (int)FontInfo.DefaultGlyphWidth;
int leftWidth = (int)FontInfo.DefaultLeftWidth;
if (FontInfo.CodeMapDictionary.ContainsKey(character))
{
var idx = FontInfo.CodeMapDictionary[character];
if (idx == 0xFFFF) continue;
var charWidthInfo = GetCharWidthInfoByIndex(FontInfo, (ushort)idx);
charWidth = charWidthInfo.CharWidth;
glyphWidth = charWidthInfo.GlyphWidth;
leftWidth = charWidthInfo.Left;
}
/* Bitmap b = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(b))
{
g.DrawImage();
}
}*/
if (bitmapFont == null)
bitmapFont = GetBitmapFont(true);
return bitmapFont.PrintToBitmap(text, new BitmapFont.FontRenderSettings()
{
TopColor = textPane.FontTopColor.Color,
BottomColor = textPane.FontBottomColor.Color,
CharSpacing = (int)textPane.CharacterSpace,
XScale = (textPane.FontSize.X / TextureGlyph.CellWidth),
YScale = (textPane.FontSize.Y / TextureGlyph.CellHeight),

View File

@ -72,7 +72,7 @@ namespace LayoutBXLYT
stColors[3].Color,
};
var mat = pic1Pane.Material;
var mat = pic1Pane.Material as BFLYT.Material;
if (mat.Shader == null)
{
mat.Shader = new BflytShader(mat);
@ -107,7 +107,7 @@ namespace LayoutBXLYT
pic1Pane.ColorTopLeft.Color,
};
var mat = pic1Pane.Material;
var mat = pic1Pane.Material as BCLYT.Material;
if (mat.Shader == null)
{
mat.Shader = new BclytShader(mat);
@ -142,7 +142,7 @@ namespace LayoutBXLYT
pic1Pane.ColorTopLeft.Color,
};
var mat = pic1Pane.Material;
var mat = pic1Pane.Material as BRLYT.Material;
if (mat.Shader == null)
{
mat.Shader = new BrlytShader(mat);
@ -167,7 +167,7 @@ namespace LayoutBXLYT
mat.Shader.Disable();
}
GL.Disable(EnableCap.Texture2D);
GL.BindTexture(TextureTarget.Texture2D, 0);
GL.PopAttrib();
GL.UseProgram(0);
@ -198,7 +198,7 @@ namespace LayoutBXLYT
color,
};
BxlytToGL.DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha);
BxlytToGL.DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
}
@ -262,6 +262,8 @@ namespace LayoutBXLYT
public static void DrawTextbox(BasePane pane, bool gameWindow, Bitmap fontBitmap, byte effectiveAlpha,
Dictionary<string, STGenericTexture> Textures, List<BasePane> SelectedPanes, bool updateBitmap, bool isSelected)
{
GL.Enable(EnableCap.Texture2D);
var textBox = (ITextPane)pane;
if (updateBitmap)
@ -299,16 +301,17 @@ namespace LayoutBXLYT
};
Color[] Colors = new Color[] {
textBox.FontBottomColor.Color,
textBox.FontBottomColor.Color,
textBox.FontTopColor.Color,
textBox.FontTopColor.Color,
Color.White,
Color.White,
Color.White,
Color.White,
};
DrawRectangle(pane, gameWindow, pane.Rectangle, texCoords, Colors, false, effectiveAlpha, isSelected);
// mat.Shader.Disable();
// mat.Shader.Disable();
GL.Disable(EnableCap.Texture2D);
GL.BindTexture(TextureTarget.Texture2D, 0);
GL.PopAttrib();
GL.UseProgram(0);
@ -475,6 +478,8 @@ namespace LayoutBXLYT
float contentWidth = ((window.StretchLeft + (pane.Width - frameLeft)) - frameRight) + window.StretchRight;
float contentHeight = ((window.StretchTop + (pane.Height - frameTop)) - frameBottom) + window.StretchBottm;
if (window.WindowKind == WindowKind.Horizontal)
contentHeight = pane.Height;
//Apply pane alpha
for (int i = 0; i < colors.Length; i++)
@ -486,11 +491,22 @@ namespace LayoutBXLYT
if (!window.NotDrawnContent && window.WindowKind != WindowKind.HorizontalNoContent)
{
SetupShaders(pane, window.Content.Material, Textures);
DrawQuad(gameWindow, dX + frameLeft - window.StretchLeft,
dY - frameTop + window.StretchTop,
contentWidth,
contentHeight,
texCoords, colors);
if (window.WindowKind == WindowKind.Horizontal)
{
DrawQuad(gameWindow, dX + frameLeft - window.StretchLeft,
dY,
contentWidth,
contentHeight,
texCoords, colors);
}
else
{
DrawQuad(gameWindow, dX + frameLeft - window.StretchLeft,
dY - frameTop + window.StretchTop,
contentWidth,
contentHeight,
texCoords, colors);
}
}
//After the content is draw, check this
@ -505,7 +521,7 @@ namespace LayoutBXLYT
};
}
bool hasTextures = true;
switch (window.FrameCount)
{
@ -515,6 +531,10 @@ namespace LayoutBXLYT
var windowFrame = window.WindowFrames[0];
SetupShaders(pane, windowFrame.Material, Textures);
windowFrame.Material.Shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
//2 sides, no corners
if (window.WindowKind == WindowKind.Horizontal)
{
@ -535,12 +555,16 @@ namespace LayoutBXLYT
window.Content.ColorBottomRight.Color,
};
DrawQuad(gameWindow, dX + frameRight + contentWidth, dY, frameRight, pane.Height, texCoords, colors);
DrawQuad(gameWindow, dX + frameRight + contentWidth, dY, frameRight, pane.Height, texCoords, colors, hasTextures);
//Right
if (window.FrameCount == 2)
{
SetupShaders(pane, window.WindowFrames[1].Material, Textures);
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
}
texCoords = new Vector2[]
{
@ -557,12 +581,14 @@ namespace LayoutBXLYT
window.Content.ColorBottomLeft.Color,
};
DrawQuad(gameWindow, dX, dY, frameLeft, pane.Height, texCoords, colors);
DrawQuad(gameWindow, dX, dY, frameLeft, pane.Height, texCoords, colors, hasTextures);
}
else if (window.WindowKind == WindowKind.HorizontalNoContent)
{
//Right
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
texCoords = new Vector2[]
{
new Vector2((pane.Width - frameRight) / frameRight, 0),
@ -589,12 +615,15 @@ namespace LayoutBXLYT
window.Content.ColorBottomRight.Color,
};
DrawQuad(gameWindow, dX + frameLeft, dY, pane.Width - frameLeft, pane.Height, texCoords, colors);
DrawQuad(gameWindow, dX + frameLeft, dY, pane.Width - frameLeft, pane.Height, texCoords, colors, hasTextures);
//Left
if (window.FrameCount == 2)
{
SetupShaders(pane, window.WindowFrames[1].Material, Textures);
hasTextures = window.WindowFrames[1].Material.TextureMaps?.Length > 0;
}
colors = new Color[] {
//Top Left
@ -621,10 +650,11 @@ namespace LayoutBXLYT
new Vector2(0, 1),
};
DrawQuad(gameWindow, dX, dY, pane.Width - frameLeft, pane.Height, texCoords, colors);
DrawQuad(gameWindow, dX, dY, pane.Width - frameLeft, pane.Height, texCoords, colors, hasTextures);
}
else if (window.WindowKind == WindowKind.Around)
{
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
// top left
float pieceWidth = pane.Width - frameRight;
@ -638,7 +668,7 @@ namespace LayoutBXLYT
new Vector2(0, 1),
};
DrawQuad(gameWindow, dX, dY, pieceWidth, pieceHeight, texCoords, colors);
DrawQuad(gameWindow, dX, dY, pieceWidth, pieceHeight, texCoords, colors, hasTextures);
// top right
pieceWidth = frameRight;
@ -652,7 +682,7 @@ namespace LayoutBXLYT
new Vector2(1,(pane.Height - frameTop) / frameTop),
};
DrawQuad(gameWindow, dX + pane.Width - frameRight, dY, pieceWidth, pieceHeight, texCoords, colors);
DrawQuad(gameWindow, dX + pane.Width - frameRight, dY, pieceWidth, pieceHeight, texCoords, colors, hasTextures);
// bottom left
pieceWidth = frameLeft;
@ -666,7 +696,7 @@ namespace LayoutBXLYT
new Vector2(0, 0),
};
DrawQuad(gameWindow, dX, dY - frameTop, pieceWidth, pieceHeight, texCoords, colors);
DrawQuad(gameWindow, dX, dY - frameTop, pieceWidth, pieceHeight, texCoords, colors, hasTextures);
// bottom right
pieceWidth = pane.Width - frameLeft;
@ -680,7 +710,7 @@ namespace LayoutBXLYT
new Vector2((pane.Width - frameLeft) / frameLeft, 0),
};
DrawQuad(gameWindow, dX + frameLeft, dY - pane.Height + frameBottom, pieceWidth, pieceHeight, texCoords, colors);
DrawQuad(gameWindow, dX + frameLeft, dY - pane.Height + frameBottom, pieceWidth, pieceHeight, texCoords, colors, hasTextures);
}
}
break;
@ -941,6 +971,10 @@ namespace LayoutBXLYT
if (!Runtime.LayoutEditor.IsGamePreview && !gameWindow)
DrawSelectionBox(pane, isSelected);
}
GL.Disable(EnableCap.Texture2D);
GL.BindTexture(TextureTarget.Texture2D, 0);
GL.UseProgram(0);
}
public static void DrawSelectionBox(BasePane pane, bool isSelected)
@ -1024,10 +1058,11 @@ namespace LayoutBXLYT
}
}
private static void DrawQuad(bool gameWindow, float x, float y, float w, float h, Vector2[] texCoords, Color[] colors)
private static void DrawQuad(bool gameWindow, float x, float y, float w, float h, Vector2[] texCoords, Color[] colors, bool hasTextures = true)
{
if (!gameWindow && !Runtime.LayoutEditor.IsGamePreview)
{
GL.Disable(EnableCap.Texture2D);
GL.Disable(EnableCap.AlphaTest);
GL.Disable(EnableCap.Blend);
@ -1043,22 +1078,35 @@ namespace LayoutBXLYT
GL.Enable(EnableCap.AlphaTest);
GL.Enable(EnableCap.Blend);
GL.Enable(EnableCap.Texture2D);
}
GL.Begin(PrimitiveType.Quads);
GL.Color4(colors[0]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[0].X, texCoords[0].Y);
GL.Vertex2(x, y);
GL.Color4(colors[1]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[1].X, texCoords[1].Y);
GL.Vertex2(x + w, y);
GL.Color4(colors[2]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[2].X, texCoords[2].Y);
GL.Vertex2(x + w, y - h);
GL.Color4(colors[3]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[3].X, texCoords[3].Y);
GL.Vertex2(x, y - h);
GL.End();
if (!hasTextures && !gameWindow)
{
GL.Begin(PrimitiveType.LineLoop);
GL.Vertex2(x, y);
GL.Vertex2(x + w, y);
GL.Vertex2(x + w, y - h);
GL.Vertex2(x, y - h);
GL.End();
}
else
{
GL.Begin(PrimitiveType.Quads);
GL.Color4(colors[0]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[0].X, texCoords[0].Y);
GL.Vertex2(x, y);
GL.Color4(colors[1]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[1].X, texCoords[1].Y);
GL.Vertex2(x + w, y);
GL.Color4(colors[2]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[2].X, texCoords[2].Y);
GL.Vertex2(x + w, y - h);
GL.Color4(colors[3]);
GL.MultiTexCoord2(TextureUnit.Texture0, texCoords[3].X, texCoords[3].Y);
GL.Vertex2(x, y - h);
GL.End();
}
}
enum FrameType
@ -1188,42 +1236,42 @@ namespace LayoutBXLYT
}
public static BlendingFactor ConvertBlendFactor(BlendMode.GX2BlendFactor blendFactor)
public static BlendingFactor ConvertBlendFactor(BxlytBlendMode.GX2BlendFactor blendFactor)
{
switch (blendFactor)
{
case BlendMode.GX2BlendFactor.DestAlpha: return BlendingFactor.DstAlpha;
case BlendMode.GX2BlendFactor.DestColor: return BlendingFactor.DstColor;
case BlendMode.GX2BlendFactor.DestInvAlpha: return BlendingFactor.OneMinusDstAlpha;
case BlendMode.GX2BlendFactor.DestInvColor: return BlendingFactor.OneMinusDstColor;
case BlendMode.GX2BlendFactor.Factor0: return BlendingFactor.Zero;
case BlendMode.GX2BlendFactor.Factor1: return BlendingFactor.One;
case BlendMode.GX2BlendFactor.SourceAlpha: return BlendingFactor.SrcAlpha;
case BlendMode.GX2BlendFactor.SourceColor: return BlendingFactor.SrcColor;
case BlendMode.GX2BlendFactor.SourceInvAlpha: return BlendingFactor.OneMinusSrcAlpha;
case BlendMode.GX2BlendFactor.SourceInvColor: return BlendingFactor.OneMinusSrcColor;
case BxlytBlendMode.GX2BlendFactor.DestAlpha: return BlendingFactor.DstAlpha;
case BxlytBlendMode.GX2BlendFactor.DestColor: return BlendingFactor.DstColor;
case BxlytBlendMode.GX2BlendFactor.DestInvAlpha: return BlendingFactor.OneMinusDstAlpha;
case BxlytBlendMode.GX2BlendFactor.DestInvColor: return BlendingFactor.OneMinusDstColor;
case BxlytBlendMode.GX2BlendFactor.Factor0: return BlendingFactor.Zero;
case BxlytBlendMode.GX2BlendFactor.Factor1: return BlendingFactor.One;
case BxlytBlendMode.GX2BlendFactor.SourceAlpha: return BlendingFactor.SrcAlpha;
case BxlytBlendMode.GX2BlendFactor.SourceColor: return BlendingFactor.SrcColor;
case BxlytBlendMode.GX2BlendFactor.SourceInvAlpha: return BlendingFactor.OneMinusSrcAlpha;
case BxlytBlendMode.GX2BlendFactor.SourceInvColor: return BlendingFactor.OneMinusSrcColor;
default: return BlendingFactor.Zero;
}
}
public static LogicOp ConvertLogicOperation(BlendMode.GX2LogicOp blendOp)
public static LogicOp ConvertLogicOperation(BxlytBlendMode.GX2LogicOp blendOp)
{
switch (blendOp)
{
case BlendMode.GX2LogicOp.And: return LogicOp.And;
case BlendMode.GX2LogicOp.Clear: return LogicOp.Clear;
case BlendMode.GX2LogicOp.Copy: return LogicOp.Copy;
case BlendMode.GX2LogicOp.Equiv: return LogicOp.Equiv;
case BlendMode.GX2LogicOp.Inv: return LogicOp.Invert;
case BlendMode.GX2LogicOp.Nand: return LogicOp.Nand;
case BlendMode.GX2LogicOp.NoOp: return LogicOp.Noop;
case BlendMode.GX2LogicOp.Nor: return LogicOp.Nor;
case BlendMode.GX2LogicOp.Or: return LogicOp.Or;
case BlendMode.GX2LogicOp.RevAnd: return LogicOp.AndReverse;
case BlendMode.GX2LogicOp.RevOr: return LogicOp.OrReverse;
case BlendMode.GX2LogicOp.Set: return LogicOp.Set;
case BlendMode.GX2LogicOp.Xor: return LogicOp.Xor;
case BlendMode.GX2LogicOp.Disable:
case BxlytBlendMode.GX2LogicOp.And: return LogicOp.And;
case BxlytBlendMode.GX2LogicOp.Clear: return LogicOp.Clear;
case BxlytBlendMode.GX2LogicOp.Copy: return LogicOp.Copy;
case BxlytBlendMode.GX2LogicOp.Equiv: return LogicOp.Equiv;
case BxlytBlendMode.GX2LogicOp.Inv: return LogicOp.Invert;
case BxlytBlendMode.GX2LogicOp.Nand: return LogicOp.Nand;
case BxlytBlendMode.GX2LogicOp.NoOp: return LogicOp.Noop;
case BxlytBlendMode.GX2LogicOp.Nor: return LogicOp.Nor;
case BxlytBlendMode.GX2LogicOp.Or: return LogicOp.Or;
case BxlytBlendMode.GX2LogicOp.RevAnd: return LogicOp.AndReverse;
case BxlytBlendMode.GX2LogicOp.RevOr: return LogicOp.OrReverse;
case BxlytBlendMode.GX2LogicOp.Set: return LogicOp.Set;
case BxlytBlendMode.GX2LogicOp.Xor: return LogicOp.Xor;
case BxlytBlendMode.GX2LogicOp.Disable:
GL.Disable(EnableCap.ColorLogicOp);
return LogicOp.Noop;
default: return LogicOp.Noop;
@ -1247,16 +1295,16 @@ namespace LayoutBXLYT
}
}
public static BlendEquationMode ConvertBlendOperation(BlendMode.GX2BlendOp blendOp)
public static BlendEquationMode ConvertBlendOperation(BxlytBlendMode.GX2BlendOp blendOp)
{
switch (blendOp)
{
case BlendMode.GX2BlendOp.Add: return BlendEquationMode.FuncAdd;
case BlendMode.GX2BlendOp.ReverseSubtract: return BlendEquationMode.FuncReverseSubtract;
case BlendMode.GX2BlendOp.SelectMax: return BlendEquationMode.Max;
case BlendMode.GX2BlendOp.SelectMin: return BlendEquationMode.Min;
case BlendMode.GX2BlendOp.Subtract: return BlendEquationMode.FuncSubtract;
case BlendMode.GX2BlendOp.Disable:
case BxlytBlendMode.GX2BlendOp.Add: return BlendEquationMode.FuncAdd;
case BxlytBlendMode.GX2BlendOp.ReverseSubtract: return BlendEquationMode.FuncReverseSubtract;
case BxlytBlendMode.GX2BlendOp.SelectMax: return BlendEquationMode.Max;
case BxlytBlendMode.GX2BlendOp.SelectMin: return BlendEquationMode.Min;
case BxlytBlendMode.GX2BlendOp.Subtract: return BlendEquationMode.FuncSubtract;
case BxlytBlendMode.GX2BlendOp.Disable:
GL.Disable(EnableCap.Blend);
return BlendEquationMode.FuncAdd;
default: return BlendEquationMode.FuncAdd;
@ -1348,7 +1396,7 @@ namespace LayoutBXLYT
GL.End();
}
if (!Runtime.LayoutEditor.IsGamePreview && !gameWindow)
if (!gameWindow)
{
DrawSelectionBox(pane, selectionOutline);
}

View File

@ -209,7 +209,6 @@ namespace LayoutBXLYT.Cafe
if (!textures.ContainsKey(bflim.FileName))
textures.Add(bflim.FileName, bflim);
}
Console.WriteLine("file " + file);
if (Utils.GetExtension(file) == ".bntx")
{
BNTX bntx = (BNTX)STFileLoader.OpenFileFormat(file);
@ -218,6 +217,10 @@ namespace LayoutBXLYT.Cafe
if (!textures.ContainsKey(tex.Key))
textures.Add(tex.Key, tex.Value);
}
string fileName = Path.GetFileName(file);
if (!header.TextureManager.BinaryContainers.ContainsKey(fileName))
header.TextureManager.BinaryContainers.Add(fileName, bntx);
}
}
}
@ -233,6 +236,9 @@ namespace LayoutBXLYT.Cafe
foreach (var tex in bntx.Textures)
if (!textures.ContainsKey(tex.Key))
textures.Add(tex.Key, tex.Value);
if (!header.TextureManager.BinaryContainers.ContainsKey($"{archive.FileName}.bntx"))
header.TextureManager.BinaryContainers.Add($"{archive.FileName}.bntx", bntx);
}
if (Utils.GetExtension(file.FileName) == ".bflim")
{
@ -242,6 +248,9 @@ namespace LayoutBXLYT.Cafe
textures.Add(bflim.FileName, bflim);
}
}
if (!header.TextureManager.ArchiveFile.ContainsKey(archive.FileName))
header.TextureManager.ArchiveFile.Add(archive.FileName, archive);
}
return textures;
@ -277,6 +286,105 @@ namespace LayoutBXLYT.Cafe
[Browsable(false)]
public CNT1 Container { get; set; }
public override short AddMaterial(BxlytMaterial material, ushort index)
{
if (material == null) return -1;
if (MaterialList.Materials.Count > index)
MaterialList.Materials.Insert(index, (Material)material);
else
MaterialList.Materials.Add((Material)material);
if (material.NodeWrapper == null)
material.NodeWrapper = new MatWrapper(material.Name)
{
Tag = material,
ImageKey = "material",
SelectedImageKey = "material",
};
MaterialFolder.Nodes.Insert(index, material.NodeWrapper);
return (short)MaterialList.Materials.IndexOf((Material)material);
}
public override int AddFont(string name)
{
if (!FontList.Fonts.Contains(name))
FontList.Fonts.Add(name);
return FontList.Fonts.IndexOf(name);
}
/// <summary>
/// Adds the given texture if not found. Returns the index of the texture
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public override int AddTexture(string name)
{
if (!TextureList.Textures.Contains(name))
TextureList.Textures.Add(name);
return TextureList.Textures.IndexOf(name);
}
public override void RemoveTexture(string name)
{
if (!TextureList.Textures.Contains(name))
TextureList.Textures.Remove(name);
}
public override short AddMaterial(BxlytMaterial material)
{
if (material == null) return -1;
if (!MaterialList.Materials.Contains((Material)material))
MaterialList.Materials.Add((Material)material);
if (material.NodeWrapper == null)
material.NodeWrapper = new MatWrapper(material.Name)
{
Tag = material,
ImageKey = "material",
SelectedImageKey = "material",
};
if (!MaterialFolder.Nodes.Contains(material.NodeWrapper))
MaterialFolder.Nodes.Add(material.NodeWrapper);
return (short)MaterialList.Materials.IndexOf((Material)material);
}
public override List<int> AddMaterial(List<BxlytMaterial> materials)
{
List<int> indices = new List<int>();
foreach (var material in materials)
indices.Add(AddMaterial(material));
return indices;
}
public override void TryRemoveMaterial(BxlytMaterial material)
{
if (material == null) return;
material.RemoveNodeWrapper();
if (MaterialList.Materials.Contains((Material)material))
MaterialList.Materials.Remove((Material)material);
}
public override void TryRemoveMaterial(List<BxlytMaterial> materials)
{
foreach (var material in materials)
{
if (material == null) continue;
material.RemoveNodeWrapper();
if (MaterialList.Materials.Contains((Material)material))
MaterialList.Materials.Remove((Material)material);
}
}
//As of now this should be empty but just for future proofing
private List<SectionCommon> UnknownSections = new List<SectionCommon>();
@ -386,6 +494,18 @@ namespace LayoutBXLYT.Cafe
IsBigEndian = reader.ByteOrder == Syroot.BinaryData.ByteOrder.BigEndian;
if (!IsBigEndian)
{
if (VersionMajor == 3)
TextureManager.Platform = TextureManager.PlatformType.ThreeDS;
else
TextureManager.Platform = TextureManager.PlatformType.Switch;
}
else
TextureManager.Platform = TextureManager.PlatformType.WiiU;
TextureManager.ArchiveParent = FileInfo.IFileInfo.ArchiveParent;
bool setRoot = false;
bool setGroupRoot = false;
@ -685,13 +805,59 @@ namespace LayoutBXLYT.Cafe
public class TXT1 : PAN1, ITextPane
{
private Header layoutFile;
public override string Signature { get; } = "txt1";
public List<string> GetFonts
{
get
{
return layoutFile.Fonts;
}
}
public TXT1() : base()
{
}
public TXT1(BFLYT.Header header, string name) {
LoadDefaults();
Name = name;
layoutFile = header;
//Add new material
var mat = new Material(this.Name, header);
header.MaterialList.Materials.Add(mat);
MaterialIndex = (ushort)header.MaterialList.Materials.IndexOf(mat);
Material = mat;
FontIndex = 0;
FontName = "";
TextLength = 4;
MaxTextLength = 4;
TextAlignment = 0;
LineAlignment = LineAlign.Unspecified;
ItalicTilt = 0;
FontTopColor = STColor8.White;
FontBottomColor = STColor8.White;
FontSize = new Vector2F(92,101);
CharacterSpace = 0;
LineSpace = 0;
ShadowXY = new Vector2F(1, -1);
ShadowXYSize = new Vector2F(1,1);
ShadowBackColor = STColor8.Black;
ShadowForeColor = STColor8.Black;
ShadowItalic = 0;
}
public void LoadFontData(FFNT bffnt)
{
FontSize = new Vector2F(
bffnt.FontSection.Width,
bffnt.FontSection.Height);
}
[Browsable(false)]
public Toolbox.Library.Rendering.RenderableTex RenderableFont { get; set; }
@ -707,9 +873,9 @@ namespace LayoutBXLYT.Cafe
}
[DisplayName("Vertical Alignment"), CategoryAttribute("Font")]
public OriginX VerticalAlignment
public OriginY VerticalAlignment
{
get { return (OriginX)((TextAlignment) & 0x3); }
get { return (OriginY)((TextAlignment) & 0x3); }
set
{
TextAlignment &= unchecked((byte)(~0x3));
@ -717,6 +883,19 @@ namespace LayoutBXLYT.Cafe
}
}
[Browsable(false)]
public ushort RestrictedLength
{
get { //Divide by 2 due to 2 characters taking up 2 bytes
//Subtract 1 due to padding
return (ushort)((TextLength / 2) - 1);
}
set
{
TextLength = (ushort)((value * 2) + 1);
}
}
[Browsable(false)]
public ushort TextLength { get; set; }
[Browsable(false)]
@ -771,8 +950,18 @@ namespace LayoutBXLYT.Cafe
[DisplayName("Text Box Name"), CategoryAttribute("Text Box")]
public string TextBoxName { get; set; }
private string text;
[DisplayName("Text"), CategoryAttribute("Text Box")]
public string Text { get; set; }
public string Text
{
get { return text; }
set
{
text = value;
UpdateTextRender();
}
}
[DisplayName("Per Character Transform"), CategoryAttribute("Font")]
public bool PerCharTransform
@ -798,6 +987,21 @@ namespace LayoutBXLYT.Cafe
private byte _flags;
private void UpdateTextRender()
{
if (RenderableFont == null) return;
System.Drawing.Bitmap bitmap = null;
foreach (var fontFile in FirstPlugin.PluginRuntime.BxfntFiles)
{
if (Utils.CompareNoExtension(fontFile.Name, FontName))
bitmap = fontFile.GetBitmap(Text, false, this);
}
if (bitmap != null)
RenderableFont.UpdateFromBitmap(bitmap);
}
public TXT1(FileReader reader, Header header) : base(reader, header)
{
long startPos = reader.Position - 84;
@ -851,9 +1055,16 @@ namespace LayoutBXLYT.Cafe
{
long pos = writer.Position - 8;
var textLength = TextLength;
if (!RestrictedTextLengthEnabled && text != null)
textLength = (ushort)((text.Length * 2) + 2);
base.Write(writer, header);
writer.Write(TextLength);
writer.Write(MaxTextLength);
writer.Write(textLength);
if (!RestrictedTextLengthEnabled)
writer.Write(textLength);
else
writer.Write(MaxTextLength);
writer.Write(MaterialIndex);
writer.Write(FontIndex);
writer.Write(TextAlignment);
@ -875,7 +1086,7 @@ namespace LayoutBXLYT.Cafe
writer.Write(ShadowForeColor.ToBytes());
writer.Write(ShadowBackColor.ToBytes());
writer.Write(ShadowItalic);
if (header.VersionMajor == 9)
if (header.VersionMajor == 8)
{
writer.Write(0);
writer.Write(0);
@ -885,9 +1096,9 @@ namespace LayoutBXLYT.Cafe
{
writer.WriteUint32Offset(_ofsTextPos, pos);
if (RestrictedTextLengthEnabled)
writer.WriteString(Text, MaxTextLength, Encoding.BigEndianUnicode);
writer.WriteString(Text, MaxTextLength, Encoding.Unicode);
else
writer.WriteString(Text, TextLength, Encoding.BigEndianUnicode);
writer.WriteString(Text, TextLength, Encoding.Unicode);
writer.Align(4);
}
@ -902,6 +1113,8 @@ namespace LayoutBXLYT.Cafe
public class WND1 : PAN1, IWindowPane
{
public Header layoutHeader;
public override string Signature { get; } = "wnd1";
public WND1() : base()
@ -909,6 +1122,97 @@ namespace LayoutBXLYT.Cafe
}
public WND1(Header header, string name)
{
layoutHeader = header;
LoadDefaults();
Name = name;
Content = new WindowContent(header, this.Name);
UseOneMaterialForAll = true;
UseVertexColorForAll = true;
WindowKind = WindowKind.Around;
NotDrawnContent = false;
StretchLeft = 0;
StretchRight = 0;
StretchTop = 0;
StretchBottm = 0;
Width = 70;
Height = 80;
FrameElementLeft = 16;
FrameElementRight = 16;
FrameElementTop = 16;
FrameElementBottm = 16;
FrameCount = 1;
WindowFrames = new List<BxlytWindowFrame>();
SetFrames(header);
}
public void ReloadFrames() {
SetFrames(layoutHeader);
}
public void SetFrames(Header header)
{
if (WindowFrames == null)
WindowFrames = new List<BxlytWindowFrame>();
switch (FrameCount)
{
case 1:
if (WindowFrames.Count == 0)
WindowFrames.Add(new WindowFrame(header,$"{Name}_LT"));
break;
case 2:
if (WindowFrames.Count == 0)
WindowFrames.Add(new WindowFrame(header, $"{Name}_L"));
if (WindowFrames.Count == 1)
WindowFrames.Add(new WindowFrame(header, $"{Name}_R"));
break;
case 4:
if (WindowFrames.Count == 0)
WindowFrames.Add(new WindowFrame(header, $"{Name}_LT"));
if (WindowFrames.Count == 1)
WindowFrames.Add(new WindowFrame(header, $"{Name}_RT"));
if (WindowFrames.Count == 2)
WindowFrames.Add(new WindowFrame(header, $"{Name}_LB"));
if (WindowFrames.Count == 3)
WindowFrames.Add(new WindowFrame(header, $"{Name}_RB"));
break;
case 8:
if (WindowFrames.Count == 0)
WindowFrames.Add(new WindowFrame(header, $"{Name}_LT"));
if (WindowFrames.Count == 1)
WindowFrames.Add(new WindowFrame(header, $"{Name}_RT"));
if (WindowFrames.Count == 2)
WindowFrames.Add(new WindowFrame(header, $"{Name}_LB"));
if (WindowFrames.Count == 3)
WindowFrames.Add(new WindowFrame(header, $"{Name}_RB"));
if (WindowFrames.Count == 4)
WindowFrames.Add(new WindowFrame(header, $"{Name}_T"));
if (WindowFrames.Count == 5)
WindowFrames.Add(new WindowFrame(header, $"{Name}_B"));
if (WindowFrames.Count == 6)
WindowFrames.Add(new WindowFrame(header, $"{Name}_R"));
if (WindowFrames.Count == 7)
WindowFrames.Add(new WindowFrame(header, $"{Name}_L"));
break;
}
//Now search for invalid unused materials and remove them
for (int i = 0; i < WindowFrames.Count; i++)
{
if (i >= FrameCount)
layoutHeader.TryRemoveMaterial(WindowFrames[i].Material);
else if (!layoutHeader.MaterialList.ContainsMat((Material)WindowFrames[i].Material))
layoutHeader.AddMaterial(WindowFrames[i].Material);
}
}
public bool UseOneMaterialForAll
{
get { return Convert.ToBoolean(_flag & 1); }
@ -921,15 +1225,11 @@ namespace LayoutBXLYT.Cafe
set { }
}
public WindowKind WindowKind
{
get { return (WindowKind)((_flag >> 2) & 3); }
set { }
}
public WindowKind WindowKind { get; set; }
public bool NotDrawnContent
{
get { return Convert.ToBoolean((_flag >> 4) & 1); }
get { return (_flag & 8) == 16; }
set { }
}
@ -941,9 +1241,18 @@ namespace LayoutBXLYT.Cafe
public ushort FrameElementRight { get; set; }
public ushort FrameElementTop { get; set; }
public ushort FrameElementBottm { get; set; }
public byte FrameCount { get; set; }
private byte _flag;
private byte frameCount;
public byte FrameCount
{
get { return frameCount; }
set
{
frameCount = value;
}
}
public System.Drawing.Color[] GetVertexColors()
{
return new System.Drawing.Color[4]
@ -1011,6 +1320,7 @@ namespace LayoutBXLYT.Cafe
public WND1(FileReader reader, Header header) : base(reader, header)
{
layoutHeader = header;
WindowFrames = new List<BxlytWindowFrame>();
long pos = reader.Position - 0x54;
@ -1029,6 +1339,8 @@ namespace LayoutBXLYT.Cafe
uint contentOffset = reader.ReadUInt32();
uint frameOffsetTbl = reader.ReadUInt32();
WindowKind = (WindowKind)((_flag >> 2) & 3);
reader.SeekBegin(pos + contentOffset);
Content = new WindowContent(reader, header);
@ -1071,8 +1383,8 @@ namespace LayoutBXLYT.Cafe
writer.WriteUint32Offset(_ofsContentPos + 4, pos);
//Reserve space for frame offsets
long _ofsFramePos = writer.Position;
writer.Write(new uint[WindowFrames.Count]);
for (int i = 0; i < WindowFrames.Count; i++)
writer.Write(new uint[FrameCount]);
for (int i = 0; i < FrameCount; i++)
{
writer.WriteUint32Offset(_ofsFramePos + (i * 4), pos);
((WindowFrame)WindowFrames[i]).Write(writer);
@ -1084,6 +1396,20 @@ namespace LayoutBXLYT.Cafe
{
private Header LayoutFile;
public WindowContent(Header header, string name) {
LayoutFile = header;
ColorTopLeft = STColor8.White;
ColorTopRight = STColor8.White;
ColorBottomLeft = STColor8.White;
ColorBottomRight = STColor8.White;
TexCoords.Add(new TexCoord());
//Add new material
Material = new Material($"{name}_C", header);
MaterialIndex = (ushort)header.AddMaterial(Material);
}
public WindowContent(FileReader reader, Header header)
{
LayoutFile = header;
@ -1129,6 +1455,15 @@ namespace LayoutBXLYT.Cafe
public class WindowFrame : BxlytWindowFrame
{
public WindowFrame(Header header, string materialName)
{
TextureFlip = WindowFrameTexFlip.None;
var mat = new Material(materialName, header);
MaterialIndex = (ushort)header.AddMaterial(mat);
Material = mat;
}
public WindowFrame(FileReader reader, Header header)
{
MaterialIndex = reader.ReadUInt16();
@ -1191,9 +1526,13 @@ namespace LayoutBXLYT.Cafe
{
public override string Signature { get; } = "bnd1";
public BND1() : base()
{
public BND1() : base() {
LoadDefaults();
}
public BND1(Header header, string name) : base() {
LoadDefaults();
Name = name;
}
public BND1(FileReader reader, Header header) : base(reader, header)
@ -1284,7 +1623,7 @@ namespace LayoutBXLYT.Cafe
}
}
public class PRT1 : PAN1,IPartPane
public class PRT1 : PAN1, IPartPane
{
public override string Signature { get; } = "prt1";
@ -1305,7 +1644,7 @@ namespace LayoutBXLYT.Cafe
public List<PartProperty> Properties { get; set; }
[DisplayName("External Layout File"), CategoryAttribute("Parts")]
public string LayoutFile { get; set; }
public string LayoutFileName { get; set; }
private BFLYT ExternalLayout;
@ -1362,7 +1701,7 @@ namespace LayoutBXLYT.Cafe
string folder = Path.GetDirectoryName(path);
foreach (var file in Directory.GetFiles(folder))
{
if (file.Contains(LayoutFile))
if (file.Contains(LayoutFileName))
{
if (Utils.GetExtension(file) == ".szs")
{
@ -1421,7 +1760,7 @@ namespace LayoutBXLYT.Cafe
if (openedFile is IArchiveFile)
SearchArchive((IArchiveFile)openedFile, ref layoutFile);
}
else if (file.FileName.Contains(LayoutFile))
else if (file.FileName.Contains(LayoutFileName))
{
var openedFile = file.OpenFile();
if (openedFile is IArchiveFile)
@ -1453,7 +1792,7 @@ namespace LayoutBXLYT.Cafe
for (int i = 0; i < properyCount; i++)
Properties.Add(new PartProperty(reader, header, StartPosition));
LayoutFile = reader.ReadZeroTerminatedString();
LayoutFileName = reader.ReadZeroTerminatedString();
}
public override void Write(FileWriter writer, LayoutHeader header)
@ -1467,7 +1806,7 @@ namespace LayoutBXLYT.Cafe
for (int i = 0; i < Properties.Count; i++)
Properties[i].Write(writer, header, startPos);
writer.WriteString(LayoutFile);
writer.WriteString(LayoutFileName);
writer.Align(4);
for (int i = 0; i < Properties.Count; i++)
@ -1571,6 +1910,11 @@ namespace LayoutBXLYT.Cafe
public class USD1 : UserData
{
public USD1()
{
Entries = new List<UserDataEntry>();
}
public USD1(FileReader reader, Header header) : base()
{
long startPos = reader.Position - 8;
@ -1712,13 +2056,7 @@ namespace LayoutBXLYT.Cafe
public ushort MaterialIndex { get; set; }
[TypeConverter(typeof(ExpandableObjectConverter))]
public Material Material
{
get
{
return ParentLayout.MaterialList.Materials[MaterialIndex];
}
}
public BxlytMaterial Material { get; set; }
[Browsable(false)]
public string GetTexture(int index)
@ -1728,16 +2066,24 @@ namespace LayoutBXLYT.Cafe
private BFLYT.Header ParentLayout;
public PIC1(BFLYT.Header header) : base() {
public PIC1() : base() {
LoadDefaults();
}
public PIC1(Header header, string name) : base() {
LoadDefaults();
Name = name;
ParentLayout = header;
ColorTopLeft = STColor8.White;
ColorTopRight = STColor8.White;
ColorBottomLeft = STColor8.White;
ColorBottomRight = STColor8.White;
MaterialIndex = 0;
TexCoords = new TexCoord[1];
TexCoords[0] = new TexCoord();
Material = new Material(name, header);
}
public PIC1(FileReader reader, BFLYT.Header header) : base(reader, header)
@ -1763,6 +2109,8 @@ namespace LayoutBXLYT.Cafe
BottomRight = reader.ReadVec2SY(),
};
}
Material = header.MaterialList.Materials[MaterialIndex];
}
public override void Write(FileWriter writer, LayoutHeader header)
@ -1821,10 +2169,10 @@ namespace LayoutBXLYT.Cafe
[DisplayName("Origin X"), CategoryAttribute("Origin")]
public override OriginX originX
{
get { return (OriginX)(origin & 3); }
get { return (OriginX)(origin & 0x3); }
set
{
origin &= unchecked((byte)(~3));
origin &= unchecked((byte)(~0x3));
origin |= (byte)value;
}
}
@ -1832,11 +2180,11 @@ namespace LayoutBXLYT.Cafe
[DisplayName("Origin Y"), CategoryAttribute("Origin")]
public override OriginY originY
{
get { return (OriginY)((origin >> 2) & 3); }
get => (OriginY)((origin & 0xC0) >> 6);
set
{
origin |= (byte)((byte)value << 2);
origin &= unchecked((byte)(~3));
origin &= unchecked((byte)(~0xC0));
origin |= (byte)((byte)value << 6);
}
}
@ -1846,8 +2194,8 @@ namespace LayoutBXLYT.Cafe
get { return (OriginX)((origin >> 4) & 3); }
set
{
origin |= (byte)((byte)value << 4);
origin &= unchecked((byte)(~3));
origin |= (byte)((byte)value << 4);
}
}
@ -1857,8 +2205,8 @@ namespace LayoutBXLYT.Cafe
get { return (OriginY)((origin >> 6) & 3); }
set
{
origin |= (byte)((byte)value << 6);
origin &= unchecked((byte)(~3));
origin |= (byte)((byte)value << 6);
}
}
@ -1877,8 +2225,12 @@ namespace LayoutBXLYT.Cafe
public PAN1(Header header, string name) : base() {
LoadDefaults();
List<string> names = header.PaneLookup.Values.ToList().Select(o => o.Name).ToList();
Name = Utils.RenameDuplicateString(names, name);
Name = name;
}
public override UserData CreateUserData()
{
return new USD1();
}
public void LoadDefaults()
@ -1959,6 +2311,15 @@ namespace LayoutBXLYT.Cafe
Materials = new List<Material>();
}
public bool ContainsMat(Material material)
{
var matches = Materials.Any(p => p.Name == material.Name);
if (Materials.Contains(material) || matches)
return true;
else
return false;
}
public MAT1(FileReader reader, Header header) : base()
{
Materials = new List<Material>();
@ -2001,8 +2362,30 @@ namespace LayoutBXLYT.Cafe
//https://github.com/shibbo/flyte/blob/master/flyte/lyt/common/MAT1.cs
public class Material : BxlytMaterial
{
private string name;
[DisplayName("Name"), CategoryAttribute("General")]
public override string Name { get; set; }
public override string Name
{
get { return name; }
set
{
name = value;
if (NodeWrapper != null)
NodeWrapper.Text = name;
}
}
public override void AddTexture(string texture)
{
Console.WriteLine("TextureMaps AddTexture");
int index = ParentLayout.AddTexture(texture);
TextureRef textureRef = new TextureRef();
textureRef.ID = (short)index;
textureRef.Name = texture;
TextureMaps = TextureMaps.AddToArray(textureRef);
TextureTransforms = TextureTransforms.AddToArray(new TextureTransform());
}
[DisplayName("Thresholding Alpha Interpolation"), CategoryAttribute("Alpha")]
public override bool ThresholdingAlphaInterpolation
@ -2011,13 +2394,10 @@ namespace LayoutBXLYT.Cafe
}
[DisplayName("Black Color"), CategoryAttribute("Color")]
public STColor8 BlackColor { get; set; }
public override STColor8 BlackColor { get; set; }
[DisplayName("White Color"), CategoryAttribute("Color")]
public STColor8 WhiteColor { get; set; }
[DisplayName("Texture Transforms"), CategoryAttribute("Texture")]
public TextureTransform[] TextureTransforms { get; set; }
public override STColor8 WhiteColor { get; set; }
[DisplayName("Texture Coordinate Params"), CategoryAttribute("Texture")]
public TexCoordGen[] TexCoords { get; set; }
@ -2025,18 +2405,6 @@ namespace LayoutBXLYT.Cafe
[DisplayName("Tev Stages"), CategoryAttribute("Tev")]
public TevStage[] TevStages { get; set; }
[DisplayName("Alpha Compare"), CategoryAttribute("Alpha")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public AlphaCompare AlphaCompare { get; set; }
[DisplayName("Blend Mode"), CategoryAttribute("Blend")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public BlendMode BlendMode { get; set; }
[DisplayName("Blend Mode Logic"), CategoryAttribute("Blend")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public BlendMode BlendModeLogic { get; set; }
[DisplayName("Indirect Parameter"), CategoryAttribute("Texture")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public IndirectParameter IndParameter { get; set; }
@ -2051,19 +2419,26 @@ namespace LayoutBXLYT.Cafe
private uint flags;
private int unknown;
private BFLYT.Header ParentLayout;
public string GetTexture(int index)
{
if (TextureMaps[index].ID != -1)
return ParentLayout.TextureList.Textures[TextureMaps[index].ID];
return ((Header)ParentLayout).TextureList.Textures[TextureMaps[index].ID];
else
return "";
}
public Material()
public Material(string name, BxlytHeader header)
{
ParentLayout = header;
Name = name;
TextureMaps = new TextureRef[0];
TextureTransforms = new TextureTransform[0];
TexCoords = new TexCoordGen[0];
TevStages = new TevStage[0];
ProjTexGenParams = new ProjectionTexGenParam[0];
BlackColor = new STColor8(0, 0, 0, 0);
WhiteColor = STColor8.White;
}
public Material(FileReader reader, Header header) : base()
@ -2088,6 +2463,8 @@ namespace LayoutBXLYT.Cafe
flags = reader.ReadUInt32();
}
Bit.ExtractBits(1, 2, 30);
uint texCount = Convert.ToUInt32(flags & 3);
uint mtxCount = Convert.ToUInt32(flags >> 2) & 3;
uint texCoordGenCount = Convert.ToUInt32(flags >> 4) & 3;
@ -2100,6 +2477,12 @@ namespace LayoutBXLYT.Cafe
var projTexGenParamCount = Convert.ToUInt32((flags >> 15) & 0x3);
var hasFontShadowParam = Convert.ToBoolean((flags >> 17) & 0x1);
EnableAlphaCompare = hasAlphaCompare;
EnableBlend = hasBlendMode;
EnableBlendLogic = seperateBlendMode;
EnableIndParams = hasIndParam;
EnableFontShadowParams = hasFontShadowParam;
TextureMaps = new TextureRef[texCount];
TextureTransforms = new TextureTransform[mtxCount];
TexCoords = new TexCoordGen[texCoordGenCount];
@ -2119,11 +2502,11 @@ namespace LayoutBXLYT.Cafe
TevStages[i] = new TevStage(reader, header);
if (hasAlphaCompare)
AlphaCompare = new AlphaCompare(reader, header);
AlphaCompare = new BxlytAlphaCompare(reader, header);
if (hasBlendMode)
BlendMode = new BlendMode(reader, header);
BlendMode = new BxlytBlendMode(reader, header);
if (seperateBlendMode)
BlendModeLogic = new BlendMode(reader, header);
BlendModeLogic = new BxlytBlendMode(reader, header);
if (hasIndParam)
IndParameter = new IndirectParameter(reader, header);
@ -2136,9 +2519,11 @@ namespace LayoutBXLYT.Cafe
public void Write(FileWriter writer, LayoutHeader header)
{
long flagPos = 0;
writer.WriteString(Name, 0x1C);
if (header.VersionMajor >= 8)
{
flagPos = writer.Position;
writer.Write(flags);
writer.Write(unknown);
writer.Write(BlackColor);
@ -2148,35 +2533,73 @@ namespace LayoutBXLYT.Cafe
{
writer.Write(BlackColor);
writer.Write(WhiteColor);
flagPos = writer.Position;
writer.Write(flags);
}
flags = 0;
for (int i = 0; i < TextureMaps.Length; i++)
{
flags += Bit.BitInsert(1,1,2,30);
((TextureRef)TextureMaps[i]).Write(writer);
}
for (int i = 0; i < TextureTransforms.Length; i++)
TextureTransforms[i].Write(writer);
{
flags += Bit.BitInsert(1, 1, 2, 28);
((TextureTransform)TextureTransforms[i]).Write(writer);
}
for (int i = 0; i < TexCoords.Length; i++)
{
flags += Bit.BitInsert(1, 1, 2, 26);
TexCoords[i].Write(writer);
}
for (int i = 0; i < TevStages.Length; i++)
{
flags += Bit.BitInsert(1, 1, 2, 24);
TevStages[i].Write(writer);
}
if (AlphaCompare != null)
if (AlphaCompare != null && EnableAlphaCompare)
{
flags += Bit.BitInsert(1, 1, 2, 22);
AlphaCompare.Write(writer);
if (BlendMode != null)
}
if (BlendMode != null && EnableBlend)
{
flags += Bit.BitInsert(1, 1, 2, 20);
BlendMode.Write(writer);
if (BlendModeLogic != null)
}
if (BlendModeLogic != null && EnableBlendLogic)
{
flags += Bit.BitInsert(1, 1, 2, 18);
BlendModeLogic.Write(writer);
if (IndParameter != null)
}
if (IndParameter != null && EnableIndParams)
{
flags += Bit.BitInsert(1, 1, 1, 17);
IndParameter.Write(writer);
}
for (int i = 0; i < ProjTexGenParams.Length; i++)
{
flags += Bit.BitInsert(1, 1, 2, 15);
ProjTexGenParams[i].Write(writer);
}
if (FontShadowParameter != null)
if (FontShadowParameter != null && EnableFontShadowParams)
{
flags += Bit.BitInsert(1, 1, 1, 14);
FontShadowParameter.Write(writer);
}
using (writer.TemporarySeek(flagPos, SeekOrigin.Begin))
{
writer.Write(flags);
}
}
}

View File

@ -112,9 +112,18 @@ namespace LayoutBXLYT
SetInt("tevTexMode", 0);
SetInt($"texCoords0GenType", 0);
SetInt($"texCoords0Source", 0);
SetInt("hasTexture0", 0);
SetInt("hasTexture1", 0);
SetInt("hasTexture2", 0);
SetInt("textures0", 0);
SetInt("textures1", 0);
SetInt("textures2", 0);
BindTextureUniforms();
if (material.TextureMaps.Length > 0 || Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.UVTestPattern)
GL.Enable(EnableCap.Texture2D);
int id = 1;
for (int i = 0; i < material.TextureMaps.Length; i++)
{
@ -180,7 +189,7 @@ namespace LayoutBXLYT
GL.Disable(EnableCap.ColorLogicOp);
GL.LogicOp(LogicOp.Noop);
if (material.BlendMode != null)
if (material.BlendMode != null && material.EnableBlend)
{
var srcFactor = BxlytToGL.ConvertBlendFactor(material.BlendMode.SourceFactor);
var destFactor = BxlytToGL.ConvertBlendFactor(material.BlendMode.DestFactor);
@ -193,7 +202,7 @@ namespace LayoutBXLYT
GL.BlendEquation(blendOp);
GL.LogicOp(logicOp);
}
if (material.BlendModeLogic != null)
if (material.BlendModeLogic != null && material.EnableBlendLogic)
{
var srcFactor = BxlytToGL.ConvertBlendFactor(material.BlendModeLogic.SourceFactor);
var destFactor = BxlytToGL.ConvertBlendFactor(material.BlendModeLogic.DestFactor);
@ -207,7 +216,7 @@ namespace LayoutBXLYT
GL.LogicOp(logicOp);
}
if (material.AlphaCompare != null)
if (material.AlphaCompare != null && material.EnableAlphaCompare)
{
var alphaFunc = BxlytToGL.ConvertAlphaFunc(material.AlphaCompare.CompareMode);
GL.AlphaFunc(alphaFunc, material.AlphaCompare.Value);
@ -229,6 +238,13 @@ namespace LayoutBXLYT
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, BxlytToGL.ConvertMagFilterMode(tex.MaxFilterMode));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, BxlytToGL.ConvertMinFilterMode(tex.MinFilterMode));
}
else
{
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureParameterName.ClampToEdge);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureParameterName.ClampToEdge);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
}
}
public override string VertexShader

View File

@ -1,24 +0,0 @@
using Toolbox.Library.IO;
namespace LayoutBXLYT.Cafe
{
public class AlphaCompare
{
public GfxAlphaFunction CompareMode { get; set; }
public float Value { get; set; }
public AlphaCompare(FileReader reader, BFLYT.Header header)
{
CompareMode = reader.ReadEnum<GfxAlphaFunction>(false);
reader.ReadBytes(0x3);
Value = reader.ReadSingle();
}
public void Write(FileWriter writer)
{
writer.Write(CompareMode, false);
writer.Seek(3);
writer.Write(Value);
}
}
}

View File

@ -1,73 +0,0 @@
using Toolbox.Library.IO;
namespace LayoutBXLYT.Cafe
{
public class BlendMode
{
public GX2BlendOp BlendOp { get; set; }
public GX2BlendFactor SourceFactor { get; set; }
public GX2BlendFactor DestFactor { get; set; }
public GX2LogicOp LogicOp { get; set; }
public BlendMode(FileReader reader, BFLYT.Header header)
{
BlendOp = (GX2BlendOp)reader.ReadByte();
SourceFactor = (GX2BlendFactor)reader.ReadByte();
DestFactor = (GX2BlendFactor)reader.ReadByte();
LogicOp = (GX2LogicOp)reader.ReadByte();
}
public void Write(FileWriter writer)
{
writer.Write(BlendOp, false);
writer.Write(SourceFactor, false);
writer.Write(DestFactor, false);
writer.Write(LogicOp, false);
}
public enum GX2BlendFactor : byte
{
Factor0 = 0,
Factor1 = 1,
DestColor = 2,
DestInvColor = 3,
SourceAlpha = 4,
SourceInvAlpha = 5,
DestAlpha = 6,
DestInvAlpha = 7,
SourceColor = 8,
SourceInvColor = 9
}
public enum GX2BlendOp : byte
{
Disable = 0,
Add = 1,
Subtract = 2,
ReverseSubtract = 3,
SelectMin = 4,
SelectMax = 5
}
public enum GX2LogicOp : byte
{
Disable = 0,
NoOp = 1,
Clear = 2,
Set = 3,
Copy = 4,
InvCopy = 5,
Inv = 6,
And = 7,
Nand = 8,
Or = 9,
Nor = 10,
Xor = 11,
Equiv = 12,
RevAnd = 13,
InvAd = 14,
RevOr = 15,
InvOr = 16
}
}
}

View File

@ -10,11 +10,19 @@ namespace LayoutBXLYT.Cafe
public override WrapMode WrapModeU
{
get { return (WrapMode)(flag1 & 0x3); }
set {
flag1 &= unchecked((byte)(~0x3));
flag1 |= (byte)value;
}
}
public override WrapMode WrapModeV
{
get { return (WrapMode)(flag2 & 0x3); }
set {
flag2 &= unchecked((byte)(~0x3));
flag2 |= (byte)value;
}
}
public override FilterMode MinFilterMode
@ -27,7 +35,9 @@ namespace LayoutBXLYT.Cafe
get { return (FilterMode)((flag2 >> 2) & 0x3); }
}
public TextureRef() { }
public TextureRef() : base()
{
}
public TextureRef(FileReader reader, BFLYT.Header header)
{

View File

@ -5,7 +5,8 @@ namespace LayoutBXLYT.Cafe
{
public class TextureTransform : BxlytTextureTransform
{
public TextureTransform() { }
public TextureTransform() : base()
{ }
public TextureTransform(FileReader reader)
{

View File

@ -618,6 +618,8 @@ namespace LayoutBXLYT
public class PRT1 : PAN1, IPartPane
{
public string LayoutFileName { get; set; }
public PRT1() : base()
{
@ -663,12 +665,13 @@ namespace LayoutBXLYT
public ushort MaterialIndex { get; set; }
[TypeConverter(typeof(ExpandableObjectConverter))]
public Material Material
public BxlytMaterial Material
{
get
{
return ParentLayout.MaterialList.Materials[MaterialIndex];
}
set { }
}
[Browsable(false)]

View File

@ -57,8 +57,33 @@ namespace LayoutBXLYT
get { return name; }
set
{
if (name != null && LayoutFile != null && LayoutFile.PaneLookup.ContainsKey(name))
LayoutFile.PaneLookup.Remove(name);
//Adjust necessary parameters if the user changes the name
if (name != null && LayoutFile != null)
{
//Adjust name table entry
if (LayoutFile != null && LayoutFile.PaneLookup.ContainsKey(name))
LayoutFile.PaneLookup.Remove(name);
//Adjust material reference
if (this is IPicturePane)
((IPicturePane)this).Material.SetName(name, value);
else if (this is ITextPane)
((ITextPane)this).Material.SetName(name, value);
else if (this is IWindowPane)
{
var wnd = this as IWindowPane;
wnd.Content?.Material?.SetName(name, value);
if (wnd.WindowFrames != null)
{
foreach (var frame in wnd.WindowFrames)
{
if (frame.Material == null) continue;
frame.Material.SetName(name, value);
}
}
}
}
name = value;
@ -114,6 +139,11 @@ namespace LayoutBXLYT
ParentOriginY = OriginY.Center;
}
public virtual UserData CreateUserData()
{
return new UserData();
}
public bool IsNullPane
{
get
@ -176,19 +206,56 @@ namespace LayoutBXLYT
Console.WriteLine("pickMouseX " + pickMouseX);
float pickWidth = pickMouseX;
float pickHeight = pickMouseY;
Vector2F pos = new Vector2F();
switch (pickAction)
{
case LayoutViewer.PickAction.DragLeft:
Width += pickMouseX;
posX = Translate.X - (pickMouseX / 2);
if (originX == OriginX.Left)
posX = Translate.X - pickMouseX;
else if (originX == OriginX.Right)
posX = Translate.X + pickMouseX;
else
posX = Translate.X - (pickMouseX / 2);
break;
case LayoutViewer.PickAction.DragRight:
Width -= pickMouseX;
posX = Translate.X - (pickMouseX / 2);
if (originX == OriginX.Right)
{
Width -= pickMouseX;
posX = Translate.X + pickMouseX;
}
else if (originX == OriginX.Left)
{
Width -= pickMouseX;
posX = Translate.X + pickMouseX;
}
else
{
Width -= pickMouseX;
posX = Translate.X - (pickMouseX / 2);
}
break;
case LayoutViewer.PickAction.DragTop:
Height -= pickMouseY;
posY = Translate.Y - (pickMouseY / 2);
if (originY == OriginY.Top)
{
Height -= pickMouseY;
posY = Translate.Y - pickMouseY;
}
else if (originY == OriginY.Bottom)
{
Height -= pickMouseY;
posY = Translate.Y - pickMouseY;
}
else
{
Height -= pickMouseY;
posY = Translate.Y - (pickMouseY / 2);
}
break;
case LayoutViewer.PickAction.DragBottom:
Height += pickMouseY;
@ -223,6 +290,35 @@ namespace LayoutBXLYT
Translate = new Vector3F(posX, posY, posZ);
}
private Vector2F SetOrientation(float pickWidth, float pickHeight)
{
float posX = 0;
float posY = 0;
switch (originX)
{
case OriginX.Left:
Width += pickWidth;
posX = pickWidth;
break;
default:
Width += pickWidth;
posX = pickWidth / 2;
break;
}
switch (originY)
{
case OriginY.Top:
Height += pickHeight;
posY = pickHeight;
break;
default:
Height += pickHeight;
posY = pickHeight / 2;
break;
}
return new Vector2F(posX, posY);
}
public CustomRectangle CreateRectangle()
{
//Do origin transforms
@ -331,6 +427,20 @@ namespace LayoutBXLYT
return new Vector4(left, right, top, bottom);
}
public bool IsHit(CustomRectangle selectionBox)
{
var rect = CreateRectangle();
var transformed = rect.GetTransformedRectangle(Parent, Translate, Rotate, Scale);
if ((selectionBox.LeftPoint < transformed.RightPoint) &&
(selectionBox.RightPoint > transformed.LeftPoint) &&
(selectionBox.TopPoint > transformed.BottomPoint) &&
(selectionBox.BottomPoint < transformed.TopPoint))
return true;
else
return false;
}
public bool IsHit(int X, int Y)
{
var rect = CreateRectangle();
@ -434,6 +544,109 @@ namespace LayoutBXLYT
public virtual FilterMode MaxFilterMode { get; set; }
}
public class BxlytAlphaCompare
{
public GfxAlphaFunction CompareMode { get; set; }
public float Value { get; set; }
public BxlytAlphaCompare()
{
CompareMode = GfxAlphaFunction.Always;
Value = 0;
}
public BxlytAlphaCompare(FileReader reader, BxlytHeader header)
{
CompareMode = reader.ReadEnum<GfxAlphaFunction>(false);
reader.ReadBytes(0x3);
Value = reader.ReadSingle();
}
public void Write(FileWriter writer)
{
writer.Write(CompareMode, false);
writer.Seek(3);
writer.Write(Value);
}
}
public class BxlytBlendMode
{
public GX2BlendOp BlendOp { get; set; }
public GX2BlendFactor SourceFactor { get; set; }
public GX2BlendFactor DestFactor { get; set; }
public GX2LogicOp LogicOp { get; set; }
public BxlytBlendMode()
{
BlendOp = GX2BlendOp.Add;
SourceFactor = GX2BlendFactor.SourceAlpha;
DestFactor = GX2BlendFactor.SourceInvAlpha;
LogicOp = GX2LogicOp.Disable;
}
public BxlytBlendMode(FileReader reader, BxlytHeader header)
{
BlendOp = (GX2BlendOp)reader.ReadByte();
SourceFactor = (GX2BlendFactor)reader.ReadByte();
DestFactor = (GX2BlendFactor)reader.ReadByte();
LogicOp = (GX2LogicOp)reader.ReadByte();
}
public void Write(FileWriter writer)
{
writer.Write(BlendOp, false);
writer.Write(SourceFactor, false);
writer.Write(DestFactor, false);
writer.Write(LogicOp, false);
}
public enum GX2BlendFactor : byte
{
Factor0 = 0,
Factor1 = 1,
DestColor = 2,
DestInvColor = 3,
SourceAlpha = 4,
SourceInvAlpha = 5,
DestAlpha = 6,
DestInvAlpha = 7,
SourceColor = 8,
SourceInvColor = 9
}
public enum GX2BlendOp : byte
{
Disable = 0,
Add = 1,
Subtract = 2,
ReverseSubtract = 3,
SelectMin = 4,
SelectMax = 5
}
public enum GX2LogicOp : byte
{
Disable = 0,
NoOp = 1,
Clear = 2,
Set = 3,
Copy = 4,
InvCopy = 5,
Inv = 6,
And = 7,
Nand = 8,
Or = 9,
Nor = 10,
Xor = 11,
Equiv = 12,
RevAnd = 13,
InvAd = 14,
RevOr = 15,
InvOr = 16
}
}
public class UserData : SectionCommon
{
public List<UserDataEntry> Entries { get; set; }
@ -724,7 +937,16 @@ namespace LayoutBXLYT
public interface IPicturePane
{
System.Drawing.Color[] GetVertexColors();
ushort MaterialIndex { get; set; }
BxlytMaterial Material { get; set; }
TexCoord[] TexCoords { get; set; }
STColor8 ColorTopLeft { get; set; }
STColor8 ColorTopRight { get; set; }
STColor8 ColorBottomLeft { get; set; }
STColor8 ColorBottomRight { get; set; }
}
public interface IBoundryPane
@ -734,12 +956,17 @@ namespace LayoutBXLYT
public interface ITextPane
{
ushort MaterialIndex { get; set; }
string Text { get; set; }
OriginX HorizontalAlignment { get; set; }
OriginX VerticalAlignment { get; set; }
OriginY VerticalAlignment { get; set; }
List<string> GetFonts { get; }
ushort TextLength { get; set; }
ushort MaxTextLength { get; set; }
ushort RestrictedLength { get; }
BxlytMaterial Material { get; set; }
Toolbox.Library.Rendering.RenderableTex RenderableFont { get; set; }
@ -770,17 +997,19 @@ namespace LayoutBXLYT
bool RestrictedTextLengthEnabled { get; set; }
bool ShadowEnabled { get; set; }
string FontName { get; set; }
ushort FontIndex { get; set; }
}
public interface IPartPane
{
string LayoutFileName { get; set; }
}
public interface IWindowPane
{
System.Drawing.Color[] GetVertexColors();
void ReloadFrames();
bool UseOneMaterialForAll { get; set; }
bool UseVertexColorForAll { get; set; }
WindowKind WindowKind { get; set; }
@ -848,6 +1077,9 @@ namespace LayoutBXLYT
public class LayoutHeader : IDisposable
{
[Browsable(false)]
public TextureManager TextureManager = new TextureManager();
public PartsManager PartsManager = new PartsManager();
[Browsable(false)]
@ -915,6 +1147,7 @@ namespace LayoutBXLYT
public void Dispose()
{
PartsManager?.Dispose();
TextureManager?.Dispose();
FileInfo.Unload();
}
}
@ -1252,6 +1485,15 @@ namespace LayoutBXLYT
public class BxlytHeader : LayoutHeader
{
[Browsable(false)]
public System.Windows.Forms.TreeNode MaterialFolder;
[Browsable(false)]
public System.Windows.Forms.TreeNode TextureFolder;
[Browsable(false)]
public System.Windows.Forms.TreeNode FontFolder;
[Browsable(false)]
public Dictionary<string, BasePane> PaneLookup = new Dictionary<string, BasePane>();
@ -1276,6 +1518,13 @@ namespace LayoutBXLYT
return new List<BxlytMaterial>();
}
public virtual short AddMaterial(BxlytMaterial material, ushort index) { return -1; }
public virtual short AddMaterial(BxlytMaterial material) { return -1; }
public virtual List<int> AddMaterial(List<BxlytMaterial> materials) { return new List<int>(); }
public virtual void TryRemoveMaterial(BxlytMaterial material) { }
public virtual void TryRemoveMaterial(List<BxlytMaterial> materials) { }
public BxlytMaterial SearchMaterial(string name)
{
var materials = GetMaterials();
@ -1287,6 +1536,21 @@ namespace LayoutBXLYT
return null;
}
public virtual int AddFont(string name)
{
return -1;
}
public virtual void RemoveTexture(string name)
{
}
public virtual int AddTexture(string name)
{
return -1;
}
public void AddPaneToTable(BasePane pane)
{
if (!PaneLookup.ContainsKey(pane.Name))
@ -1309,31 +1573,153 @@ namespace LayoutBXLYT
pane.Parent = parent;
parent.Childern.Add(pane);
parent.NodeWrapper.Nodes.Add(pane.NodeWrapper);
Console.WriteLine("newpane " + pane.Name + " " + pane.Parent.Name);
}
public void RemovePanes(List<BasePane> panes)
public void RemovePanes(List<BasePane> panes, BasePane rootPane)
{
Console.WriteLine("RemovePanes num " + panes.Count);
for (int i = 0; i < panes.Count; i++)
{
Console.WriteLine($"RemovePanes {panes[i].Name} {panes[i]}");
//We need to remove any materials that the material referenced
if (panes[i] is IPicturePane)
TryRemoveMaterial(((IPicturePane)panes[i]).Material);
if (panes[i] is ITextPane)
TryRemoveMaterial(((ITextPane)panes[i]).Material);
if (panes[i] is IWindowPane)
{
var wnd = panes[i] as IWindowPane;
List<BxlytMaterial> materials = new List<BxlytMaterial>();
var matC = wnd.Content.Material;
materials.Add(matC);
foreach (var windowFrame in wnd.WindowFrames)
materials.Add(windowFrame.Material);
TryRemoveMaterial(materials);
materials.Clear();
}
}
List<BasePane> topMostPanes = new List<BasePane>();
GetTopMostPanes(panes, topMostPanes, rootPane);
foreach (var pane in topMostPanes)
{
pane.Parent.NodeWrapper.Nodes.Remove(pane.NodeWrapper);
pane.Parent.Childern.Remove(pane);
}
for (int i = 0; i < panes.Count; i++)
{
if (PaneLookup.ContainsKey(panes[i].Name))
PaneLookup.Remove(panes[i].Name);
}
}
var parent = panes[i].Parent;
parent.Childern.Remove(panes[i]);
//Loop through each pane in the heiarchy until it finds the first set of panes
//The topmost panes are only going to be removed for adding with redo to be easier
private void GetTopMostPanes(List<BasePane> panes, List<BasePane> topMost, BasePane root)
{
foreach (var child in root.Childern)
{
if (panes.Contains(child))
topMost.Add(child);
}
parent.NodeWrapper.Nodes.Remove(panes[i].NodeWrapper);
if (topMost.Count == 0)
{
foreach (var child in root.Childern)
GetTopMostPanes(panes, topMost, child);
}
}
}
public class BxlytMaterial
{
//Setup some enable booleans
//These determine wether to switch to default values or not
//While i could null out the instances of each, it's best to keep those intact
//incase the settings get renabled, which keeps the previous data
[Browsable(false)]
public bool EnableAlphaCompare { get; set; }
[Browsable(false)]
public bool EnableBlend { get; set; }
[Browsable(false)]
public bool EnableBlendLogic { get; set; }
[Browsable(false)]
public bool EnableIndParams { get; set; }
[Browsable(false)]
public bool EnableFontShadowParams { get; set; }
[Browsable(false)]
public TreeNodeCustom NodeWrapper;
public void RemoveNodeWrapper()
{
if (NodeWrapper.Parent != null)
{
var parent = NodeWrapper.Parent;
parent.Nodes.Remove(NodeWrapper);
}
}
public virtual void AddTexture(string texture)
{
int index = ParentLayout.AddTexture(texture);
BxlytTextureRef textureRef = new BxlytTextureRef();
textureRef.ID = (short)index;
textureRef.Name = texture;
TextureMaps = TextureMaps.AddToArray(textureRef);
TextureTransforms = TextureTransforms.AddToArray(new BxlytTextureTransform());
}
[DisplayName("Texture Transforms"), CategoryAttribute("Texture")]
public BxlytTextureTransform[] TextureTransforms { get; set; }
[Browsable(false)]
public MaterialAnimController animController = new MaterialAnimController();
[DisplayName("Name"), CategoryAttribute("General")]
public virtual string Name { get; set; }
[Browsable(false)]
public BxlytHeader ParentLayout;
public void SetName(string oldName, string newName)
{
if (Name == null) return;
Name = Name.Replace(oldName, newName);
}
[DisplayName("Black Color"), CategoryAttribute("Color")]
public virtual STColor8 WhiteColor { get; set; } = STColor8.White;
[DisplayName("White Color"), CategoryAttribute("Color")]
public virtual STColor8 BlackColor { get; set; } = STColor8.Black;
[DisplayName("Blend Mode"), CategoryAttribute("Blend")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public BxlytBlendMode BlendMode { get; set; }
[DisplayName("Blend Mode Logic"), CategoryAttribute("Blend")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public BxlytBlendMode BlendModeLogic { get; set; }
[DisplayName("Alpha Compare"), CategoryAttribute("Alpha")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public BxlytAlphaCompare AlphaCompare { get; set; }
[DisplayName("Thresholding Alpha Interpolation"), CategoryAttribute("Alpha")]
public virtual bool ThresholdingAlphaInterpolation { get; set; }
@ -1365,6 +1751,13 @@ namespace LayoutBXLYT
public Vector2F Translate { get; set; }
public float Rotate { get; set; }
public Vector2F Scale { get; set; }
public BxlytTextureTransform()
{
Translate = new Vector2F(0,0);
Scale = new Vector2F(1, 1);
Rotate = 0;
}
}
public class BxlytIndTextureTransform

View File

@ -612,6 +612,8 @@ namespace LayoutBXLYT
public class PRT1 : PAN1, IPartPane
{
public string LayoutFileName { get; set; }
public PRT1() : base()
{
@ -650,21 +652,16 @@ namespace LayoutBXLYT
public ushort MaterialIndex { get; set; }
public Material GetMaterial()
{
return ParentLayout.MaterialList.Materials[MaterialIndex];
}
public string GetTexture(int index)
{
var mat = GetMaterial();
return ParentLayout.TextureList.Textures[mat.TextureMaps[index].ID];
return ParentLayout.TextureList.Textures[Material.TextureMaps[index].ID];
}
[TypeConverter(typeof(ExpandableObjectConverter))]
public Material Material
public BxlytMaterial Material
{
get { return ParentLayout.MaterialList.Materials[MaterialIndex]; }
set { }
}
private BRLYT.Header ParentLayout;
@ -878,8 +875,20 @@ namespace LayoutBXLYT
public class Material : BxlytMaterial
{
public STColor16 WhiteColor { get; set; }
public STColor16 BlackColor { get; set; }
public override STColor8 BlackColor
{
get { return new STColor8((byte)BlackColor16.R, (byte)BlackColor16.G, (byte)BlackColor16.B, (byte)BlackColor16.A); }
set { BlackColor16 = new STColor16(value.R, value.G, value.B,value.A); }
}
public override STColor8 WhiteColor
{
get { return new STColor8((byte)WhiteColor16.R, (byte)WhiteColor16.G, (byte)WhiteColor16.B, (byte)WhiteColor16.A); }
set { WhiteColor16 = new STColor16(value.R, value.G, value.B, value.A); }
}
public STColor16 WhiteColor16 { get; set; }
public STColor16 BlackColor16 { get; set; }
public STColor16 ColorRegister3 { get; set; }
public STColor8 TevColor1 { get; set; }
@ -914,8 +923,8 @@ namespace LayoutBXLYT
Name = reader.ReadString(0x14, true);
BlackColor = reader.ReadColor16RGBA();
WhiteColor = reader.ReadColor16RGBA();
BlackColor16 = reader.ReadColor16RGBA();
WhiteColor16 = reader.ReadColor16RGBA();
ColorRegister3 = reader.ReadColor16RGBA();
TevColor1 = reader.ReadColor8RGBA();
TevColor2 = reader.ReadColor8RGBA();

View File

@ -0,0 +1,17 @@
using Toolbox.Library.IO;
namespace LayoutBXLYT.Revolution
{
public class TevStage
{
public TevStage(FileReader reader, BRLYT.Header header)
{
}
public void Write(FileWriter writer)
{
}
}
}

View File

@ -0,0 +1,681 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LayoutBXLYT;
using OpenTK.Graphics.OpenGL;
//Code from Wii Layout Editor
//https://github.com/Gericom/WiiLayoutEditor
//This is so materials/tev display correctly for brlyt
namespace WiiLayoutEditor.IO
{
/* public class Shader
{
public BRLYT.Material.TevStage[] TevStages;
public int[] Textures;
private float[][] g_color_registers;
private float[][] g_color_consts;
private float[] MatColor;
private byte color_matsrc;
private byte alpha_matsrc;
public Shader(BRLYT.Material Material, int[] textures)
{
this.color_matsrc = Material.ChanControl.ColorMaterialSource;
this.alpha_matsrc = Material.ChanControl.AlphaMaterialSource;
this.MatColor = new float[]
{
Material.MatColor.R/255f,
Material.MatColor.G/255f,
Material.MatColor.B/255f,
Material.MatColor.A/255f
};
TevStages = Material.TevStageEntries;
Textures = textures;
g_color_registers = new float[3][];
g_color_registers[0] = new float[]
{
Material.ForeColor.R/255f,
Material.ForeColor.G/255f,
Material.ForeColor.B/255f,
Material.ForeColor.A/255f
};
g_color_registers[1] = new float[]
{
Material.BackColor.R/255f,
Material.BackColor.G/255f,
Material.BackColor.B/255f,
Material.BackColor.A/255f
};
g_color_registers[2] = new float[]
{
Material.ColorReg3.R/255f,
Material.ColorReg3.G/255f,
Material.ColorReg3.B/255f,
Material.ColorReg3.A/255f
};
g_color_consts = new float[4][];
g_color_consts[0] = new float[]
{
Material.TevColor1.R/255f,
Material.TevColor1.G/255f,
Material.TevColor1.B/255f,
Material.TevColor1.A/255f
};
g_color_consts[1] = new float[]
{
Material.TevColor2.R/255f,
Material.TevColor2.G/255f,
Material.TevColor2.B/255f,
Material.TevColor2.A/255f
};
g_color_consts[2] = new float[]
{
Material.TevColor3.R/255f,
Material.TevColor3.G/255f,
Material.TevColor3.B/255f,
Material.TevColor3.A/255f
};
g_color_consts[3] = new float[]
{
Material.TevColor4.R/255f,
Material.TevColor4.G/255f,
Material.TevColor4.B/255f,
Material.TevColor4.A/255f
};
}
public void RefreshColors(BRLYT.Material Material)
{
this.MatColor = new float[]
{
Material.MatColor.R/255f,
Material.MatColor.G/255f,
Material.MatColor.B/255f,
Material.MatColor.A/255f
};
g_color_registers = new float[3][];
g_color_registers[0] = new float[]
{
Material.ForeColor.R/255f,
Material.ForeColor.G/255f,
Material.ForeColor.B/255f,
Material.ForeColor.A/255f
};
g_color_registers[1] = new float[]
{
Material.BackColor.R/255f,
Material.BackColor.G/255f,
Material.BackColor.B/255f,
Material.BackColor.A/255f
};
g_color_registers[2] = new float[]
{
Material.ColorReg3.R/255f,
Material.ColorReg3.G/255f,
Material.ColorReg3.B/255f,
Material.ColorReg3.A/255f
};
g_color_consts = new float[4][];
g_color_consts[0] = new float[]
{
Material.TevColor1.R/255f,
Material.TevColor1.G/255f,
Material.TevColor1.B/255f,
Material.TevColor1.A/255f
};
g_color_consts[1] = new float[]
{
Material.TevColor2.R/255f,
Material.TevColor2.G/255f,
Material.TevColor2.B/255f,
Material.TevColor2.A/255f
};
g_color_consts[2] = new float[]
{
Material.TevColor3.R/255f,
Material.TevColor3.G/255f,
Material.TevColor3.B/255f,
Material.TevColor3.A/255f
};
g_color_consts[3] = new float[]
{
Material.TevColor4.R/255f,
Material.TevColor4.G/255f,
Material.TevColor4.B/255f,
Material.TevColor4.A/255f
};
}
public void Enable()
{
GL.UseProgram(program);
//for (int i = 0; i < Textures.Length; ++i)
//{
// String ss = "textures" + i;
// Gl.glUniform1i(Gl.glGetUniformLocation(program, ss), (int)i);
//}
for (int i = 0; i < 3; i++)
{
String ss = "color_register" + i;
GL.Uniform4(GL.GetUniformLocation(program, ss), g_color_registers[i][0], g_color_registers[i][1], g_color_registers[i][2], g_color_registers[i][3]);
}
for (int i = 0; i < 1; i++)
{
String ss = "matColor";
GL.Uniform4(GL.GetUniformLocation(program, ss), MatColor[0], MatColor[1], MatColor[2], MatColor[3]);
}
for (int i = 0; i < 4; i++)
{
String ss = "color_const" + i;
GL.Uniform4(GL.GetUniformLocation(program, ss), g_color_consts[i][0], g_color_consts[i][1], g_color_consts[i][2], g_color_consts[i][3]);
}
// TODO: cache value of GetUniformLocation
//Gl.glUniform4fv(Gl.glGetUniformLocation(program, "registers"), 3, new float[] { g_color_registers[0][0], g_color_registers[0][1], g_color_registers[0][2], g_color_registers[0][3], g_color_registers[1][0], g_color_registers[1][1], g_color_registers[1][2], g_color_registers[1][3], g_color_registers[2][0], g_color_registers[2][1], g_color_registers[2][2], g_color_registers[2][3] });
}
public void Disable()
{
//Gl.glDeleteProgram(program);
//Gl.glDeleteShader(vertex_shader);
//Gl.glDeleteShader(fragment_shader);
// TODO: cache value of GetUniformLocation
//Gl.glUniform4fv(Gl.glGetUniformLocation(program, "registers"), 3, g_color_registers[0]);
}
public void Compile()
{
// w.e good for now
uint sampler_count = (uint)Textures.Length;
//if (sampler_count == 0)
//{
// sampler_count = 1;
//}
// generate vertex/fragment shader code
//{
StringBuilder vert_ss = new StringBuilder();
//String vert_ss = "";
vert_ss.AppendLine("void main()");
vert_ss.AppendLine("{");
{
vert_ss.AppendLine("gl_FrontColor = gl_Color;");
vert_ss.AppendLine("gl_BackColor = gl_Color;");
for (uint i = 0; i != sampler_count; ++i)
vert_ss.AppendFormat("gl_TexCoord[{0}] = gl_TextureMatrix[{0}] * gl_MultiTexCoord{0};\n", i);
vert_ss.AppendLine("gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;");
}
vert_ss.AppendLine("}");
// create/compile vertex shader
vertex_shader = GL.CreateShader(ShaderType.VertexShader);
{
var vert_src_str = vert_ss.ToString();
//const GLchar* vert_src = vert_src_str.c_str();
GL.ShaderSource(vertex_shader, 1, new string[] { vert_src_str }, new int[] { vert_src_str.Length });
}
//} // done generating vertex shader
GL.CompileShader(vertex_shader);
// generate fragment shader code
//{
StringBuilder frag_ss = new StringBuilder();
//frag_ss += "uniform sampler2D tex;";
// uniforms
for (uint i = 0; i != sampler_count; ++i)
frag_ss.AppendFormat("uniform sampler2D textures{0};\n", i);
//frag_ss += "uniform vec4 registers[3]" + ";";
for (uint i = 0; i < 3; ++i)
frag_ss.AppendFormat("uniform vec4 color_register{0};\n", i);
frag_ss.AppendFormat("uniform vec4 matColor;\n");
for (uint i = 0; i < 4; ++i)
frag_ss.AppendFormat("uniform vec4 color_const{0};\n", i);
//frag_ss << "uniform vec4 color_constant" ";";
frag_ss.AppendLine("vec4 color_constant;");
frag_ss.AppendLine("vec4 rasColor;");
frag_ss.AppendLine("void main()");
frag_ss.AppendLine("{");
{
string[] rasColor =
{
"matColor",
"gl_Color"
};
frag_ss.AppendFormat("rasColor.rgb = {0}.rgb;\n", rasColor[color_matsrc]);
frag_ss.AppendFormat("rasColor.a = {0}.a;\n", rasColor[alpha_matsrc]);
frag_ss.AppendLine("vec4 color_previous;");
frag_ss.AppendLine("vec4 color_texture;");
for (uint i = 0; i < 3; ++i)
frag_ss.AppendFormat("vec4 color_registers{0} = color_register{0};\n", i);
for (uint i = 0; i < 4; ++i)
frag_ss.AppendFormat("vec4 color_consts{0} = color_const{0};\n", i);
string[] color_inputs =
{
"color_previous"+".rgb",
"color_previous"+".aaa",
"color_registers"+"0"+".rgb",
"color_registers"+"0"+".aaa",
"color_registers"+"1"+".rgb",
"color_registers"+"1"+".aaa",
"color_registers"+"2"+".rgb",
"color_registers"+"2"+".aaa",
"color_texture"+".rgb",
"color_texture"+".aaa",
"rasColor"+".rgb",
"rasColor"+".aaa",
"vec3(1.0)",
"vec3(0.5)",
"color_constant"+".rgb",
"vec3(0.0)"
};
string[] alpha_inputs = new string[]
{
"color_previous"+".a",
"color_registers"+"0"+".a",
"color_registers"+"1"+".a",
"color_registers"+"2"+".a",
"color_texture"+".a",
"rasColor"+".a",
"color_constant"+".a",
"0.0"
};
string[] output_registers = new string[]
{
"color_previous",
"color_registers"+"0",
"color_registers"+"1",
"color_registers"+"2"
};
frag_ss.AppendLine("const vec3 comp16 = vec3(1.0, 255.0, 0.0), comp24 = vec3(1.0, 255.0, 255.0 * 255.0);");
//if (Textures.Length == 0)
//{
// frag_ss += "gl_FragColor = color_registers1;";
//}
//else
{
if (TevStages.Length != 0 && TevStages[0] != null)
{
foreach (var stage in TevStages)
{
// current texture color
// 0xff is a common value for a disabled texture
if (stage.TexCoord < sampler_count)
{
frag_ss.AppendFormat("color_texture = texture2D(textures{0}, gl_TexCoord[{1}].st);\n", (int)stage.TexCoord, (int)stage.TexCoord);
}
string color = "";
if (stage.ColorConstantSel <= 7)
{
switch (stage.ColorConstantSel)
{
case 0: color = "vec3(1.0)"; break;
case 1: color = "vec3(0.875)"; break;
case 2: color = "vec3(0.75)"; break;
case 3: color = "vec3(0.625)"; break;
case 4: color = "vec3(0.5)"; break;
case 5: color = "vec3(0.375)"; break;
case 6: color = "vec3(0.25)"; break;
case 7: color = "vec3(0.125)"; break;
}
}
else if (stage.ColorConstantSel < 0xc)
{
//warn("getColorOp(): unknown konst %x", konst);
//return "ERROR";
color = "vec3(1.0)";
}
else
{
string[] v1 = { "color_consts0", "color_consts1", "color_consts2", "color_consts3" };
string[] v2 = { ".rgb", ".rrr", ".ggg", ".bbb", ".aaa" };
color = v1[(stage.ColorConstantSel - 0xc) % 4] + v2[(stage.ColorConstantSel - 0xc) / 4];
}
string alpha = "";
if (stage.AlphaConstantSel <= 7)
{
switch (stage.AlphaConstantSel)
{
case 0: alpha = "vec3(1.0)"; break;
case 1: alpha = "vec3(0.875)"; break;
case 2: alpha = "vec3(0.75)"; break;
case 3: alpha = "vec3(0.625)"; break;
case 4: alpha = "vec3(0.5)"; break;
case 5: alpha = "vec3(0.375)"; break;
case 6: alpha = "vec3(0.25)"; break;
case 7: alpha = "vec3(0.125)"; break;
}
}
else if (stage.AlphaConstantSel < 0x10)
{
//warn("getColorOp(): unknown konst %x", konst);
//return "ERROR";
color = "1.0";
}
else
{
string[] v1 = { "color_consts0", "color_consts1", "color_consts2", "color_consts3" };
string[] v2 = { ".r", ".g", ".b", ".a" };
alpha = v1[(stage.AlphaConstantSel - 0x10) % 4] + v2[(stage.AlphaConstantSel - 0x10) / 4];
}
frag_ss.AppendFormat("color_constant = vec4({0}, {1});\n", color, alpha);
frag_ss.AppendLine("{");
{
// all 4 inputs
frag_ss.AppendFormat("vec4 a = vec4({0}, {1});\n", color_inputs[stage.ColorA], alpha_inputs[stage.AlphaA]);
frag_ss.AppendFormat("vec4 b = vec4({0}, {1});\n", color_inputs[stage.ColorB], alpha_inputs[stage.AlphaB]);
frag_ss.AppendFormat("vec4 c = vec4({0}, {1});\n", color_inputs[stage.ColorC], alpha_inputs[stage.AlphaC]);
frag_ss.AppendFormat("vec4 d = vec4({0}, {1});\n", color_inputs[stage.ColorD], alpha_inputs[stage.AlphaD]);
// TODO: could eliminate this result variable
frag_ss.AppendLine("vec4 result;");
if (stage.ColorOp != stage.AlphaOp)
{
write_tevop(stage.ColorOp, ".rgb", ref frag_ss);
write_tevop(stage.AlphaOp, ".a", ref frag_ss);
}
else
write_tevop(stage.ColorOp, "", ref frag_ss);
string[] bias =
{
"+0",
"+0.5",
"-0.5"
};
string[] scale =
{
"*1",
"*2",
"*4",
"*0.5"
};
if (stage.ColorOp < 2)
{
frag_ss.AppendFormat("{0}.rgb = (result.rgb{1}){2};\n", output_registers[stage.ColorRegID], bias[stage.ColorBias], scale[stage.ColorScale]);
}
else
{
frag_ss.AppendFormat("{0}.rgb = result.rgb;\n", output_registers[stage.ColorRegID]);
}
if (stage.AlphaOp < 2)
{
frag_ss.AppendFormat("{0}.a = (result.a{1}){2};\n", output_registers[stage.AlphaRegID], bias[stage.AlphaBias], scale[stage.AlphaScale]);
}
else
{
frag_ss.AppendFormat("{0}.a = result.a;\n", output_registers[stage.AlphaRegID]);
}
if (stage.ColorClamp && stage.ColorOp < 2)
{
frag_ss.AppendFormat("{0}.rgb = clamp({0}.rgb,vec3(0.0, 0.0, 0.0),vec3(1.0, 1.0, 1.0));\n", output_registers[stage.ColorRegID]);
}
if (stage.AlphaClamp && stage.AlphaOp < 2)
{
frag_ss.AppendFormat("{0}.a = clamp({0}.a, 0.0, 1.0);\n", output_registers[stage.AlphaRegID]);
}
}
frag_ss.AppendLine("}");
}
}
else
{
//frag_ss += "vec4 color = texture2D(textures0,gl_TexCoord[0].st);";
//frag_ss += "gl_FragColor = mix(color,color_registers1,color_registers0);";
//frag_ss += "gl_FragColor = color + color_registers0;";
for (int i = 0; i < 1; i++)
{
// current texture color
// 0xff is a common value for a disabled texture
if (i < sampler_count)
{
frag_ss.AppendFormat("color_texture = texture2D(textures{0}, gl_TexCoord[{0}].st);\n", i);
}
frag_ss.AppendLine("{");
{
// all 4 inputs
frag_ss.AppendFormat("vec4 a = vec4({0}, {1});\n", color_inputs[2], alpha_inputs[1]);
frag_ss.AppendFormat("vec4 b = vec4({0}, {1});\n", color_inputs[4], alpha_inputs[2]);
frag_ss.AppendFormat("vec4 c = vec4({0}, {1});\n", color_inputs[8], alpha_inputs[4]);
frag_ss.AppendFormat("vec4 d = vec4({0}, {1});\n", color_inputs[0xf], alpha_inputs[0x7]);
// TODO: could eliminate this result variable
frag_ss.AppendLine("vec4 result;");
write_tevop(0, "", ref frag_ss);
// output register
frag_ss.AppendFormat("{0}.rgb = result.rgb;\n", output_registers[0]);
frag_ss.AppendFormat("{0}.a = result.a;\n", output_registers[0]);
}
frag_ss.AppendLine("}");
// current texture color
// 0xff is a common value for a disabled texture
if (i < sampler_count)
{
frag_ss.AppendFormat("color_texture = texture2D(textures{0}, gl_TexCoord[{0}].st);\n", i);
}
frag_ss.AppendLine("{");
{
// all 4 inputs
frag_ss.AppendFormat("vec4 a = vec4({0}, {1});\n", color_inputs[0xf], alpha_inputs[0x7]);
frag_ss.AppendFormat("vec4 b = vec4({0}, {1});\n", color_inputs[0], alpha_inputs[0]);
frag_ss.AppendFormat("vec4 c = vec4({0}, {1});\n", color_inputs[10], alpha_inputs[5]);
frag_ss.AppendFormat("vec4 d = vec4({0}, {1});\n", color_inputs[0xf], alpha_inputs[0x7]);
// TODO: could eliminate this result variable
frag_ss.AppendLine("vec4 result;");
write_tevop(0, "", ref frag_ss);
// output register
frag_ss.AppendFormat("{0}.rgb = result.rgb;\n", output_registers[0]);
frag_ss.AppendFormat("{0}.a = result.a;\n", output_registers[0]);
}
frag_ss.AppendLine("}");
}
}
frag_ss.AppendLine("gl_FragColor = color_previous;");
}
}
frag_ss.AppendLine("}");
//std::cout << frag_ss.str() << '\n';
// create/compile fragment shader
fragment_shader = GL.CreateShader(ShaderType.FragmentShader);
{
var frag_src_str = frag_ss.ToString();
GL.ShaderSource(fragment_shader, 1, new String[] { frag_src_str }, new int[] { frag_src_str.Length });
}
//} // done generating fragment shader
GL.CompileShader(fragment_shader);
// check compile status of both shaders
//{
int vert_compiled = 0;
int frag_compiled = 0;
GL.GetShader(vertex_shader, ShaderParameter.CompileStatus, out vert_compiled);
GL.GetShader(fragment_shader, ShaderParameter.CompileStatus, out frag_compiled);
if (vert_compiled == 0)
{
//std::cout << "Failed to compile vertex shader\n";
}
if (frag_compiled == 0)
{
//std::cout << "Failed to compile fragment shader\n";
}
// create program, attach shaders
program = GL.CreateProgram();
GL.AttachShader(program, vertex_shader);
GL.AttachShader(program, fragment_shader);
// link program, check link status
GL.LinkProgram(program);
int link_status;
GL.GetProgram(program, GetProgramParameterName.LinkStatus, out link_status);
if (link_status == 0)
{
//std::cout << "Failed to link program!\n";
}
GL.UseProgram(program);
// set uniforms
for (uint i = 0; i != sampler_count; ++i)
{
String ss = "textures" + i;
GL.Uniform1(GL.GetUniformLocation(program, ss), (int)i);
}
for (int i = 0; i < 3; i++)
{
String ss = "color_register" + i;
GL.Uniform4(GL.GetUniformLocation(program, ss), g_color_registers[i][0], g_color_registers[i][1], g_color_registers[i][2], g_color_registers[i][3]);
}
for (int i = 0; i < 1; i++)
{
String ss = "matColor";
GL.Uniform4(GL.GetUniformLocation(program, ss), MatColor[0], MatColor[1], MatColor[2], MatColor[3]);
}
for (int i = 0; i < 4; i++)
{
String ss = "color_const" + i;
GL.Uniform4(GL.GetUniformLocation(program, ss), g_color_consts[i][0], g_color_consts[i][1], g_color_consts[i][2], g_color_consts[i][3]);
}
// print log
//{
int length;
string infolog;
GL.GetProgramInfoLog(program, 10240, out length, out infolog);
//std::cout << infolog;
//}
// pause
//std::cin.get();
//}
}
private void write_tevop(byte tevop, String swiz, ref StringBuilder frag_ss)
{
String condition_end = (" ? c : vec4(0.0))");
condition_end += swiz;
// d is added with every op except SUB
if (tevop < 14)
frag_ss.AppendFormat("result{0} = d{0} {1} ", swiz, (tevop == 1 ? '-' : '+'));
String compare_op = ((tevop & 1) != 0) ? "==" : ">";
switch (tevop)
{
case 0: // ADD
case 1: // SUB
frag_ss.AppendFormat("mix(a{0}, b{0}, c{0})", swiz);
break;
case 8: // COMP_R8_GT
case 9: // COMP_R8_EQ
frag_ss.AppendFormat("((a.r {0} b.r){1}", compare_op, condition_end);
System.Windows.Forms.MessageBox.Show(tevop.ToString());
break;
case 10: // COMP_GR16_GT
case 11: // COMP_GR16_EQ
frag_ss.AppendFormat("((dot(a.gr, comp16) {0} dot(b.gr, comp16)){1}", compare_op, condition_end);
System.Windows.Forms.MessageBox.Show(tevop.ToString());
break;
case 12: // COMP_BGR24_GT
case 13: // COMP_BGR24_EQ
frag_ss.AppendFormat("((dot(a.bgr, comp24) {0} dot(b.bgr, comp24)){1}", compare_op, condition_end);
System.Windows.Forms.MessageBox.Show(tevop.ToString());
break;
// TODO:
case 14: // COMP_RGB8_GT
case 15: // COMP_RGB8_EQ
//frag_ss += " if(a" + swiz+ compare_op + "b" + swiz + ")\n " + "result" + swiz + " = " + "c" + swiz + ";\n"
// + " else\n " + "result" + swiz + " = " + "vec4(0.0)" + swiz;
if (swiz == ".rgb")
{
frag_ss.AppendFormat("result.r = d.r + ");
frag_ss.AppendFormat("((a.r {0} b.r)" + " ? c.r : vec4(0.0).r);\n", compare_op);
frag_ss.AppendFormat("result.g = d.g + ");
frag_ss.AppendFormat("((a.g {0} b.g)" + " ? c.g : vec4(0.0).g);\n", compare_op);
frag_ss.AppendFormat("result.b = d.b + ");
frag_ss.AppendFormat("((a.b {0} b.b)" + " ? c.b : vec4(0.0).b);\n", compare_op);
}
else if (swiz == ".a")
{
frag_ss.AppendFormat("result.a = d.a + ");
frag_ss.AppendFormat("((a.a {0} b.a)" + " ? c.a : vec4(0.0).a);", compare_op);
}
else
{
frag_ss.AppendFormat("result.r = d.r + ");
frag_ss.AppendFormat("((a.r {0} b.r)" + " ? c.r : vec4(0.0).r);\n", compare_op);
frag_ss.AppendFormat("result.g = d.g + ");
frag_ss.AppendFormat("((a.g {0} b.g)" + " ? c.g : vec4(0.0).g);\n", compare_op);
frag_ss.AppendFormat("result.b = d.b + ");
frag_ss.AppendFormat("((a.b {0} b.b)" + " ? c.b : vec4(0.0).b);\n", compare_op);
frag_ss.AppendFormat("result.a = d.a + ");
frag_ss.AppendFormat("((a.a {0} b.a)" + " ? c.a : vec4(0.0).a);", compare_op);
}
//frag_ss += "(a.rgb " + compare_op + " b.rgb)" + condition_end;
//frag_ss += "(a.rgb " + compare_op + " b.rgb)" + condition_end;
//frag_ss += "(a.rgb " + compare_op + " b.rgb)" + condition_end;
break;
default:
frag_ss.AppendFormat("mix(a{0}, b{0}, c{0})", swiz);
System.Windows.Forms.MessageBox.Show(tevop.ToString());
//std::cout << "Unsupported tevop!! " << (int)tevop << '\n';
break;
}
frag_ss.AppendLine(";");
}
public int program = 0, fragment_shader = 0, vertex_shader = 0;
}*/
}

View File

@ -0,0 +1,152 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Toolbox.Library;
using FirstPlugin;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public class TextureManager : IDisposable
{
public Dictionary<string, BNTX> BinaryContainers = new Dictionary<string, BNTX>();
//The archive to put textures in if necessary
public Dictionary<string, IArchiveFile> ArchiveFile = new Dictionary<string, IArchiveFile>();
public IArchiveFile ArchiveParent;
public PlatformType Platform = PlatformType.WiiU;
public enum PlatformType
{
WiiU, //bflim
ThreeDS, //bclim and bflim
DS, //
Gamecube, //bti
Switch, //bntx
Wii, //TPL
}
public STGenericTexture EditTexture(string name)
{
STGenericTexture texture = null;
switch (Platform)
{
case PlatformType.Switch:
{
foreach (var bntx in BinaryContainers.Values)
{
Console.WriteLine("bntx " + name + " " + bntx.Textures.ContainsKey(name));
if (bntx.Textures.ContainsKey(name))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = bntx.Textures[name].ReplaceFilter;
if (ofd.ShowDialog() == DialogResult.OK)
{
bntx.Textures[name].Replace(ofd.FileName);
return bntx.Textures[name];
}
}
}
}
break;
case PlatformType.WiiU:
{
foreach (var file in ArchiveParent.Files)
{
if (file.FileName == name)
{
var fileFormat = file.FileFormat;
if (fileFormat == null)
fileFormat = file.OpenFile();
if (fileFormat is BFLIM)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = ((BFLIM)fileFormat).ReplaceFilter;
ofd.FileName = name;
if (ofd.ShowDialog() == DialogResult.OK)
{
((BFLIM)fileFormat).Replace(ofd.FileName);
return (BFLIM)fileFormat;
}
}
}
}
}
break;
}
return texture;
}
public List<STGenericTexture> AddTextures()
{
List<STGenericTexture> textures = new List<STGenericTexture>();
switch (Platform)
{
case PlatformType.WiiU:
{
var archive = ArchiveParent;
var bflim = BFLIM.CreateNewFromImage();
if (bflim == null)
return textures;
textures.Add(bflim);
var mem = new System.IO.MemoryStream();
bflim.Save(mem);
archive.AddFile(new ArchiveFileInfo()
{
FileData = mem.ToArray(),
FileName = bflim.FileName,
});
}
break;
case PlatformType.Switch:
{
BNTX bntx = null;
if (BinaryContainers.Count == 0)
{
//Create a new one if none exist
//Method for saving these will come in the save dialog
bntx = new BNTX();
bntx.IFileInfo = new IFileInfo();
bntx.FileName = "textures";
bntx.Load(new System.IO.MemoryStream(BNTX.CreateNewBNTX("textures")));
BinaryContainers.Add("textures", bntx);
}
else
{
//Use first container for now as archives only use one
bntx = BinaryContainers.Values.FirstOrDefault();
}
int startIndex = bntx.Textures.Count;
bntx.ImportTexture();
//Load all the additional textues
for (int i = 0; i < bntx.Textures.Count; i++)
{
if (i > startIndex - 1)
textures.Add(bntx.Textures.Values.ElementAt(i));
}
}
break;
}
return textures;
}
public void Dispose()
{
BinaryContainers.Clear();
ArchiveFile.Clear();
}
}
}

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Toolbox.Library;
namespace LayoutBXLYT
{
public class MatWrapper : TreeNodeCustom
{
public MatWrapper(string name)
{
Text = name;
}
}
}

View File

@ -290,7 +290,8 @@ namespace FirstPlugin
{
using (reader.TemporarySeek(Offsets[i], SeekOrigin.Begin))
{
Code[i] = reader.ReadString((int)Sizes[i]);
byte[] data = reader.ReadBytes((int)Sizes[i]);
Code[i] = Encoding.GetEncoding(932).GetString(data);
}
}
}

View File

@ -243,41 +243,49 @@ namespace FirstPlugin
public void CreateNew(object sender, EventArgs args)
{
BFLIM bflim = new BFLIM();
bflim.CanSave = true;
bflim.IFileInfo = new IFileInfo();
bflim.header = new Header();
BFLIM bflim = CreateNewFromImage();
if (bflim == null) return;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = false;
ofd.Filter = FileFilters.GTX;
if (ofd.ShowDialog() != DialogResult.OK) return;
FTEX ftex = new FTEX();
ftex.ReplaceTexture(ofd.FileName, TEX_FORMAT.BC3_UNORM_SRGB, 1, 0, bflim.SupportedFormats, false, true, false);
if (ftex.texture != null)
{
bflim.Text = ftex.texture.Name;
bflim.image = new Image();
bflim.image.Swizzle = (byte)ftex.texture.Swizzle;
bflim.image.BflimFormat = FormatsWiiU.FirstOrDefault(x => x.Value == ftex.Format).Key;
bflim.image.Height = (ushort)ftex.texture.Height;
bflim.image.Width = (ushort)ftex.texture.Width;
bflim.Format = FormatsWiiU[bflim.image.BflimFormat];
bflim.Width = bflim.image.Width;
bflim.Height = bflim.image.Height;
bflim.ImageData = ftex.texture.Data;
var form = new GenericEditorForm(false, bflim.OpenForm());
LibraryGUI.CreateMdiWindow(form);
bflim.UpdateForm();
}
var form = new GenericEditorForm(false, bflim.OpenForm());
LibraryGUI.CreateMdiWindow(form);
bflim.UpdateForm();
}
}
public static BFLIM CreateNewFromImage()
{
BFLIM bflim = new BFLIM();
bflim.CanSave = true;
bflim.IFileInfo = new IFileInfo();
bflim.header = new Header();
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = false;
ofd.Filter = FileFilters.GTX;
if (ofd.ShowDialog() != DialogResult.OK)
return null;
FTEX ftex = new FTEX();
ftex.ReplaceTexture(ofd.FileName, TEX_FORMAT.BC3_UNORM_SRGB, 1, 0, bflim.SupportedFormats, false, true, false);
if (ftex.texture != null)
{
bflim.Text = ftex.texture.Name;
bflim.image = new Image();
bflim.image.Swizzle = (byte)ftex.texture.Swizzle;
bflim.image.BflimFormat = FormatsWiiU.FirstOrDefault(x => x.Value == ftex.Format).Key;
bflim.image.Height = (ushort)ftex.texture.Height;
bflim.image.Width = (ushort)ftex.texture.Width;
bflim.Format = FormatsWiiU[bflim.image.BflimFormat];
bflim.Width = bflim.image.Width;
bflim.Height = bflim.image.Height;
bflim.ImageData = ftex.texture.Data;
}
return bflim;
}
public override string ExportFilter => FileFilters.GTX;
public override string ReplaceFilter => FileFilters.GTX;

View File

@ -1,15 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Toolbox.Library.IO;
using Toolbox.Library;
using System.Windows.Forms;
using Toolbox.Library.Forms;
using System.Xml;
using System.Xml.Serialization;
namespace FirstPlugin
{
public class XLINK : TreeNodeFile, IFileFormat
public class XLINK : IEditor<TextEditor>, IFileFormat
{
public FileType FileType { get; set; } = FileType.Effect;
@ -28,6 +32,16 @@ namespace FirstPlugin
}
}
public TextEditor OpenForm()
{
return new TextEditor();
}
public void FillEditor(UserControl control)
{
((TextEditor)control).FillEditor(ToText());
}
public Type[] Types
{
get
@ -37,32 +51,57 @@ namespace FirstPlugin
}
}
public string ToText()
{
XmlWriterSettings settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
Indent = true,
IndentChars = " ",
};
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlDocument doc = new XmlDocument();
XmlDeclaration xmldecl = doc.CreateXmlDeclaration("1.0", null, null);
xmldecl.Encoding = "UTF-8";
xmldecl.Standalone = "yes";
var stringWriter = new StringWriter();
XmlSerializer serializer = new XmlSerializer(typeof(Header));
XmlWriter output = XmlWriter.Create(stringWriter, settings);
serializer.Serialize(output, header, ns);
return stringWriter.ToString();
}
private Header header;
public void Load(System.IO.Stream stream)
{
CanSave = false;
Text = FileName;
Header Header = new Header();
Header.Read(new FileReader(stream));
header = new Header();
header.Read(new FileReader(stream));
var userData = new TreeNode("User Data");
Nodes.Add(userData);
// Nodes.Add(userData);
var hashes = new TreeNode("Hashes");
userData.Nodes.Add(hashes);
foreach (var hash in Header.UserDataTable.CRC32Hashes)
foreach (var hash in header.UserDataTable.CRC32Hashes)
hashes.Nodes.Add(new TreeNode(hash.ToString("x")));
var paramDefines = new TreeNode("Param Defines");
Nodes.Add(paramDefines);
// Nodes.Add(paramDefines);
foreach (var param in Header.ParamDefineTable.UserParams)
foreach (var param in header.ParamDefineTable.UserParams)
paramDefines.Nodes.Add(param.Name);
foreach (var param in Header.ParamDefineTable.TriggerParams)
foreach (var param in header.ParamDefineTable.TriggerParams)
paramDefines.Nodes.Add(param.Name);
foreach (var param in Header.ParamDefineTable.UserParams)
foreach (var param in header.ParamDefineTable.UserParams)
paramDefines.Nodes.Add(param.Name);
}
@ -85,6 +124,14 @@ namespace FirstPlugin
public UserDataTable UserDataTable;
public ParamDefineTable ParamDefineTable;
public List<ResourceAssetParamTable> ResourceAssetParamTables = new List<ResourceAssetParamTable>();
public List<TriggerOverwriteParamTable> TriggerOverwriteParamTables = new List<TriggerOverwriteParamTable>();
public List<LocalNameProperty> LocalNameProperties = new List<LocalNameProperty>();
public List<LocalNameProperty> LocalNameEnumProperties = new List<LocalNameProperty>();
internal uint nameTablePos;
public void Read(FileReader reader)
{
reader.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian;
@ -105,13 +152,60 @@ namespace FirstPlugin
uint exRegionPos = reader.ReadUInt32();
uint numUser = reader.ReadUInt32();
uint conditionTablePos = reader.ReadUInt32();
uint nameTablePos = reader.ReadUInt32();
nameTablePos = reader.ReadUInt32();
UserDataTable = new UserDataTable();
UserDataTable.Read(reader, (int)numUser);
ParamDefineTable = new ParamDefineTable();
ParamDefineTable.Read(reader);
ParamDefineTable.Read(reader, this);
for (int i = 0; i < numResAssetParam; i++)
{
var resAssetsParam = new ResourceAssetParamTable();
resAssetsParam.Read(reader);
ResourceAssetParamTables.Add(resAssetsParam);
}
reader.SeekBegin(triggerOverwriteParamTablePos);
for (int i = 0; i < numResTriggerOverwriteParam; i++)
{
var triggerOverwriteParamTbl = new TriggerOverwriteParamTable();
triggerOverwriteParamTbl.Read(reader);
TriggerOverwriteParamTables.Add(triggerOverwriteParamTbl);
}
reader.SeekBegin(localPropertyNameRefTablePos);
for (int i = 0; i < numLocalPropertyNameRefTable; i++)
{
var localNameProp = new LocalNameProperty();
localNameProp.Read(reader, nameTablePos);
LocalNameProperties.Add(localNameProp);
}
for (int i = 0; i < numLocalPropertyEnumNameRefTable; i++)
{
var localNameProp = new LocalNameProperty();
localNameProp.Read(reader, nameTablePos);
LocalNameEnumProperties.Add(localNameProp);
}
}
}
public class LocalNameProperty
{
[XmlAttribute]
public string Name;
public void Read(FileReader reader, uint nameTableOffset)
{
uint offset = reader.ReadUInt32();
long pos = reader.Position;
reader.SeekBegin(offset + nameTableOffset);
Name = reader.ReadZeroTerminatedString(Encoding.GetEncoding(932));
reader.SeekBegin(pos);
}
}
@ -133,7 +227,7 @@ namespace FirstPlugin
public List<ParamDefineEntry> AssetParams = new List<ParamDefineEntry>();
public List<ParamDefineEntry> TriggerParams = new List<ParamDefineEntry>();
public void Read(FileReader reader)
public void Read(FileReader reader, Header header)
{
uint SectionSize = reader.ReadUInt32();
uint numUserParams = reader.ReadUInt32();
@ -141,62 +235,111 @@ namespace FirstPlugin
uint unknown = reader.ReadUInt32();
uint numTriggerParams = reader.ReadUInt32();
uint nameTblPos = (uint)reader.Position + ((numUserParams + numAssetParams + numTriggerParams) * 12);
for (int i = 0; i < numUserParams; i++)
{
var entry = new ParamDefineEntry();
entry.Read(reader);
entry.Read(reader, nameTblPos);
UserParams.Add(entry);
}
for (int i = 0; i < numAssetParams; i++)
{
var entry = new ParamDefineEntry();
entry.Read(reader);
entry.Read(reader, nameTblPos);
AssetParams.Add(entry);
}
for (int i = 0; i < numTriggerParams; i++)
{
var entry = new ParamDefineEntry();
entry.Read(reader);
entry.Read(reader, nameTblPos);
TriggerParams.Add(entry);
}
List<byte> StringTable = new List<byte>();
long StringTablePosition = reader.Position;
foreach (var param in UserParams)
param.ReadString(reader, StringTablePosition);
foreach (var param in AssetParams)
param.ReadString(reader, StringTablePosition);
foreach (var param in TriggerParams)
param.ReadString(reader, StringTablePosition);
}
}
public class ParamDefineEntry
{
internal uint NamePos;
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public uint Type { get; set; }
public byte[] DefaultValue { get; set; }
[XmlElement("int", typeof(int))]
[XmlElement("str", typeof(string))]
[XmlElement("uint", typeof(uint))]
[XmlElement("float", typeof(float))]
public object DefaultValue { get; set; }
public void Read(FileReader reader, uint nameTblPos)
{
long pos = reader.Position;
uint NamePos = reader.ReadUInt32(); //Offset from string table
Type = reader.ReadUInt32();
Console.WriteLine("Type " + Type);
if (Type == 0)
{
uint defaultPos = reader.ReadUInt32();
reader.SeekBegin(nameTblPos + defaultPos);
DefaultValue = reader.ReadZeroTerminatedString();
Console.WriteLine("defaultPos " + defaultPos);
}
else if (Type == 1)
DefaultValue = reader.ReadSingle();
else
DefaultValue = reader.ReadInt32();
reader.SeekBegin(nameTblPos + NamePos);
Name = reader.ReadZeroTerminatedString();
Console.WriteLine("Name " + Name);
reader.SeekBegin(pos + 12);
}
}
public class ResourceAssetParamTable
{
public ulong Mask;
public uint FirstReference;
public uint SecondReference;
public uint ThirdReference;
public void Read(FileReader reader)
{
NamePos = reader.ReadUInt32(); //Offset from string table
Type = reader.ReadUInt32();
DefaultValue = reader.ReadBytes(4);
Mask = reader.ReadUInt64();
if ((Mask & 1) != 0)
FirstReference = reader.ReadUInt32();
if ((Mask & 2) != 0)
SecondReference = reader.ReadUInt32();
if ((Mask & 4) != 0)
ThirdReference = reader.ReadUInt32();
}
}
public void ReadString(FileReader reader, long TablePosition)
public class TriggerOverwriteParamTable
{
public uint Mask;
public uint FirstReference;
public uint SecondReference;
public uint ThirdReference;
public void Read(FileReader reader)
{
Console.WriteLine("NamePos " + NamePos);
reader.Position = TablePosition + NamePos;
Name = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated);
Console.WriteLine("Name " + Name);
Mask = reader.ReadUInt32();
if ((Mask & 1) != 0)
FirstReference = reader.ReadUInt32();
if ((Mask & 2) != 0)
SecondReference = reader.ReadUInt32();
if ((Mask & 4) != 0)
ThirdReference = reader.ReadUInt32();
}
}
}

View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\SharpFont.4.0.1\build\SharpFont.props" Condition="Exists('..\packages\SharpFont.4.0.1\build\SharpFont.props')" />
<Import Project="..\packages\SharpFont.Dependencies.2.6\build\SharpFont.Dependencies.props" Condition="Exists('..\packages\SharpFont.Dependencies.2.6\build\SharpFont.Dependencies.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -111,11 +113,9 @@
</Reference>
<Reference Include="OpenTK">
<HintPath>..\Toolbox\Lib\OpenTK.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="OpenTK.GLControl">
<HintPath>..\Toolbox\Lib\OpenTK.GLControl.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="PresentationCore">
<Private>False</Private>
@ -137,6 +137,9 @@
<HintPath>..\Toolbox\Lib\SFGraphics.Utils.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="SharpFont, Version=4.0.1.200, Culture=neutral, PublicKeyToken=48add4c483071cdf, processorArchitecture=MSIL">
<HintPath>..\packages\SharpFont.4.0.1\lib\net45\SharpFont.dll</HintPath>
</Reference>
<Reference Include="SharpYaml">
<HintPath>..\Toolbox\Lib\SharpYaml.dll</HintPath>
</Reference>
@ -305,8 +308,6 @@
<Compile Include="FileFormats\Layout\BxlytShader.cs" />
<Compile Include="FileFormats\Layout\BxlytToGL.cs" />
<Compile Include="FileFormats\Layout\CAFE\FLAN.cs" />
<Compile Include="FileFormats\Layout\CAFE\Materials\AlphaCompare.cs" />
<Compile Include="FileFormats\Layout\CAFE\Materials\BlendMode.cs" />
<Compile Include="FileFormats\Layout\CAFE\Materials\FontShadowParameter.cs" />
<Compile Include="FileFormats\Layout\CAFE\Materials\IndirectParameter.cs" />
<Compile Include="FileFormats\Layout\CAFE\Materials\ProjectionTexGenParam.cs" />
@ -320,13 +321,17 @@
<Compile Include="FileFormats\Layout\Animation\LytAnimation.cs" />
<Compile Include="FileFormats\Layout\LayoutCustomPaneMapper.cs" />
<Compile Include="FileFormats\Layout\LayoutTextureLoader.cs" />
<Compile Include="FileFormats\Layout\PaneTreeWrapper.cs" />
<Compile Include="FileFormats\Layout\TextureManager.cs" />
<Compile Include="FileFormats\Layout\Wrappers\PaneTreeWrapper.cs" />
<Compile Include="FileFormats\Layout\Common.cs" />
<Compile Include="FileFormats\Layout\PartsManager.cs" />
<Compile Include="FileFormats\Layout\RenderablePane.cs" />
<Compile Include="FileFormats\Layout\Rev\BRLAN.cs" />
<Compile Include="FileFormats\Layout\Rev\BrlytShader.cs" />
<Compile Include="FileFormats\Layout\Rev\BRLYT.cs" />
<Compile Include="FileFormats\Layout\Rev\Materials\TevStage.cs" />
<Compile Include="FileFormats\Layout\Rev\WiiLayoutEditor\Shader.cs" />
<Compile Include="FileFormats\Layout\Wrappers\MatWrapper.cs" />
<Compile Include="FileFormats\Message\MSBP.cs" />
<Compile Include="FileFormats\CrashBandicoot\IGZ_TEX.cs" />
<Compile Include="FileFormats\Pikmin1\MOD.cs" />
@ -390,12 +395,105 @@
<Compile Include="GUI\BFLYT\Editor\BasePaneEditor.Designer.cs">
<DependentUpon>BasePaneEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\BasePictureboxEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\BasePictureboxEditor.Designer.cs">
<DependentUpon>BasePictureboxEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\EditorPanelBase.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatBlending.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatBlending.Designer.cs">
<DependentUpon>PaneMatBlending.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatTextureCombiner.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatTextureCombiner.Designer.cs">
<DependentUpon>PaneMatTextureCombiner.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\PaneEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\PaneEditor.Designer.cs">
<DependentUpon>PaneEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatColorEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatColorEditor.Designer.cs">
<DependentUpon>PaneMatColorEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatTextureMapsEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\PaneMatTextureMapsEditor.Designer.cs">
<DependentUpon>PaneMatTextureMapsEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\Texture_Selector.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Materials\Texture_Selector.Designer.cs">
<DependentUpon>Texture_Selector.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Part\PartPaneEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Part\PartPaneEditor.Designer.cs">
<DependentUpon>PartPaneEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\TextEditor\NewTextboxDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\TextEditor\NewTextboxDialog.Designer.cs">
<DependentUpon>NewTextboxDialog.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\TextEditor\PaneTextBoxEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\TextEditor\PaneTextBoxEditor.Designer.cs">
<DependentUpon>PaneTextBoxEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\VertexColorPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\VertexColorPanel.Designer.cs">
<DependentUpon>VertexColorPanel.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowContentEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowContentEditor.Designer.cs">
<DependentUpon>WindowContentEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameEditor.Designer.cs">
<DependentUpon>WindowFrameEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowPaneEditor.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowPaneEditor.Designer.cs">
<DependentUpon>WindowPaneEditor.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameEditorSettings.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameEditorSettings.Designer.cs">
<DependentUpon>WindowFrameEditorSettings.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameSelector.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GUI\BFLYT\Editor\Window\WindowFrameSelector.Designer.cs">
<DependentUpon>WindowFrameSelector.cs</DependentUpon>
</Compile>
<Compile Include="GUI\BFLYT\FileSelector.cs">
<SubType>Form</SubType>
</Compile>
@ -1191,7 +1289,7 @@
<Compile Include="Main.cs" />
<Compile Include="MaterialPresetConfig.cs" />
<Compile Include="NodeWrappers\Archives\BFRESWrapper.cs" />
<Compile Include="NodeWrappers\BfresFilters.cs" />
<Compile Include="NodeWrappers\FileFilters.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
@ -1207,6 +1305,7 @@
<Compile Include="YAML\YamlFska.cs" />
</ItemGroup>
<ItemGroup>
<None Include="OpenTK.dll.config" />
<None Include="packages.config" />
<None Include="Resources\InjectTexErrored.dds" />
</ItemGroup>
@ -1248,9 +1347,51 @@
<EmbeddedResource Include="GUI\BFLYT\Editor\BasePaneEditor.resx">
<DependentUpon>BasePaneEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\BasePictureboxEditor.resx">
<DependentUpon>BasePictureboxEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Materials\PaneMatBlending.resx">
<DependentUpon>PaneMatBlending.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\PaneEditor.resx">
<DependentUpon>PaneEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Materials\PaneMatColorEditor.resx">
<DependentUpon>PaneMatColorEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Materials\PaneMatTextureMapsEditor.resx">
<DependentUpon>PaneMatTextureMapsEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Materials\Texture_Selector.resx">
<DependentUpon>Texture_Selector.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Part\PartPaneEditor.resx">
<DependentUpon>PartPaneEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\TextEditor\NewTextboxDialog.resx">
<DependentUpon>NewTextboxDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\TextEditor\PaneTextBoxEditor.resx">
<DependentUpon>PaneTextBoxEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\VertexColorPanel.resx">
<DependentUpon>VertexColorPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Window\WindowContentEditor.resx">
<DependentUpon>WindowContentEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Window\WindowFrameEditor.resx">
<DependentUpon>WindowFrameEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Window\WindowPaneEditor.resx">
<DependentUpon>WindowPaneEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Window\WindowFrameEditorSettings.resx">
<DependentUpon>WindowFrameEditorSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\Editor\Window\WindowFrameSelector.resx">
<DependentUpon>WindowFrameSelector.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GUI\BFLYT\FileSelector.resx">
<DependentUpon>FileSelector.cs</DependentUpon>
</EmbeddedResource>
@ -1682,4 +1823,11 @@
<None Include="Resources\LayoutAnimation.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SharpFont.Dependencies.2.6\build\SharpFont.Dependencies.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SharpFont.Dependencies.2.6\build\SharpFont.Dependencies.props'))" />
<Error Condition="!Exists('..\packages\SharpFont.4.0.1\build\SharpFont.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SharpFont.4.0.1\build\SharpFont.props'))" />
</Target>
</Project>

View File

@ -175,7 +175,12 @@ namespace LayoutBXLYT
colors[3] = Color.White;
if (pane is IPicturePane)
colors =((IPicturePane)pane).GetVertexColors();
{
colors[0] = ((IPicturePane)pane).ColorTopRight.Color;
colors[1] = ((IPicturePane)pane).ColorTopLeft.Color;
colors[2] = ((IPicturePane)pane).ColorBottomRight.Color;
colors[3] = ((IPicturePane)pane).ColorBottomLeft.Color;
}
if (pane is IWindowPane)
colors = ((IWindowPane)pane).GetVertexColors();

View File

@ -50,26 +50,37 @@
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.stLabel6 = new Toolbox.Library.Forms.STLabel();
this.stDropDownPanel3 = new Toolbox.Library.Forms.STDropDownPanel();
this.stCheckBox2 = new Toolbox.Library.Forms.STCheckBox();
this.stCheckBox1 = new Toolbox.Library.Forms.STCheckBox();
this.alphaChildrenChk = new Toolbox.Library.Forms.STCheckBox();
this.paneVisibleChk = new Toolbox.Library.Forms.STCheckBox();
this.alphaUD = new BarSlider.BarSlider();
this.alphaSelectorHorizontalPanel1 = new Toolbox.Library.Forms.AlphaSelectorHorizontalPanel();
this.stLabel7 = new Toolbox.Library.Forms.STLabel();
this.stDropDownPanel4 = new Toolbox.Library.Forms.STDropDownPanel();
this.radioButton7 = new System.Windows.Forms.RadioButton();
this.radioButton8 = new System.Windows.Forms.RadioButton();
this.radioButton9 = new System.Windows.Forms.RadioButton();
this.radioButton4 = new System.Windows.Forms.RadioButton();
this.radioButton5 = new System.Windows.Forms.RadioButton();
this.radioButton6 = new System.Windows.Forms.RadioButton();
this.radioButton3 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.radioBottomLeftBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioTopLeftBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioLeftBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioBottomRightBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioTopRightBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioRightBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioBottomBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioTopBtn = new Toolbox.Library.Forms.STRadioButton();
this.radioCenterBtn = new Toolbox.Library.Forms.STRadioButton();
this.stDropDownPanel5 = new Toolbox.Library.Forms.STDropDownPanel();
this.radioBottomLeftBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioTopLeftBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioLeftBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioBottomRightBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioTopRightBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioRightBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioBottomBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioTopBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.radioCenterBtnParent = new Toolbox.Library.Forms.STRadioButton();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
this.stDropDownPanel2.SuspendLayout();
this.stDropDownPanel3.SuspendLayout();
this.stDropDownPanel4.SuspendLayout();
this.stDropDownPanel5.SuspendLayout();
this.SuspendLayout();
//
// stFlowLayoutPanel1
@ -79,13 +90,14 @@
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel2);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel3);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel4);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel5);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(477, 554);
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(477, 665);
this.stFlowLayoutPanel1.TabIndex = 0;
//
// stDropDownPanel1
@ -132,6 +144,7 @@
this.nameTB.Name = "nameTB";
this.nameTB.Size = new System.Drawing.Size(230, 20);
this.nameTB.TabIndex = 2;
this.nameTB.TextChanged += new System.EventHandler(this.nameTB_TextChanged);
//
// stLabel1
//
@ -661,8 +674,8 @@
// stDropDownPanel3
//
this.stDropDownPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel3.Controls.Add(this.stCheckBox2);
this.stDropDownPanel3.Controls.Add(this.stCheckBox1);
this.stDropDownPanel3.Controls.Add(this.alphaChildrenChk);
this.stDropDownPanel3.Controls.Add(this.paneVisibleChk);
this.stDropDownPanel3.Controls.Add(this.alphaUD);
this.stDropDownPanel3.Controls.Add(this.alphaSelectorHorizontalPanel1);
this.stDropDownPanel3.Controls.Add(this.stLabel7);
@ -679,25 +692,26 @@
this.stDropDownPanel3.Size = new System.Drawing.Size(477, 105);
this.stDropDownPanel3.TabIndex = 5;
//
// stCheckBox2
// alphaChildrenChk
//
this.stCheckBox2.AutoSize = true;
this.stCheckBox2.Location = new System.Drawing.Point(136, 32);
this.stCheckBox2.Name = "stCheckBox2";
this.stCheckBox2.Size = new System.Drawing.Size(186, 17);
this.stCheckBox2.TabIndex = 55;
this.stCheckBox2.Text = "Influence transparency to children";
this.stCheckBox2.UseVisualStyleBackColor = true;
this.alphaChildrenChk.AutoSize = true;
this.alphaChildrenChk.Location = new System.Drawing.Point(136, 32);
this.alphaChildrenChk.Name = "alphaChildrenChk";
this.alphaChildrenChk.Size = new System.Drawing.Size(186, 17);
this.alphaChildrenChk.TabIndex = 55;
this.alphaChildrenChk.Text = "Influence transparency to children";
this.alphaChildrenChk.UseVisualStyleBackColor = true;
//
// stCheckBox1
// paneVisibleChk
//
this.stCheckBox1.AutoSize = true;
this.stCheckBox1.Location = new System.Drawing.Point(24, 32);
this.stCheckBox1.Name = "stCheckBox1";
this.stCheckBox1.Size = new System.Drawing.Size(88, 17);
this.stCheckBox1.TabIndex = 54;
this.stCheckBox1.Text = "Pane visibile:";
this.stCheckBox1.UseVisualStyleBackColor = true;
this.paneVisibleChk.AutoSize = true;
this.paneVisibleChk.Location = new System.Drawing.Point(24, 32);
this.paneVisibleChk.Name = "paneVisibleChk";
this.paneVisibleChk.Size = new System.Drawing.Size(88, 17);
this.paneVisibleChk.TabIndex = 54;
this.paneVisibleChk.Text = "Pane visibile:";
this.paneVisibleChk.UseVisualStyleBackColor = true;
this.paneVisibleChk.CheckedChanged += new System.EventHandler(this.paneVisibleChk_CheckedChanged);
//
// alphaUD
//
@ -764,15 +778,15 @@
// stDropDownPanel4
//
this.stDropDownPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel4.Controls.Add(this.radioButton7);
this.stDropDownPanel4.Controls.Add(this.radioButton8);
this.stDropDownPanel4.Controls.Add(this.radioButton9);
this.stDropDownPanel4.Controls.Add(this.radioButton4);
this.stDropDownPanel4.Controls.Add(this.radioButton5);
this.stDropDownPanel4.Controls.Add(this.radioButton6);
this.stDropDownPanel4.Controls.Add(this.radioButton3);
this.stDropDownPanel4.Controls.Add(this.radioButton2);
this.stDropDownPanel4.Controls.Add(this.radioButton1);
this.stDropDownPanel4.Controls.Add(this.radioBottomLeftBtn);
this.stDropDownPanel4.Controls.Add(this.radioTopLeftBtn);
this.stDropDownPanel4.Controls.Add(this.radioLeftBtn);
this.stDropDownPanel4.Controls.Add(this.radioBottomRightBtn);
this.stDropDownPanel4.Controls.Add(this.radioTopRightBtn);
this.stDropDownPanel4.Controls.Add(this.radioRightBtn);
this.stDropDownPanel4.Controls.Add(this.radioBottomBtn);
this.stDropDownPanel4.Controls.Add(this.radioTopBtn);
this.stDropDownPanel4.Controls.Add(this.radioCenterBtn);
this.stDropDownPanel4.ExpandedHeight = 0;
this.stDropDownPanel4.IsExpanded = true;
this.stDropDownPanel4.Location = new System.Drawing.Point(0, 376);
@ -786,104 +800,228 @@
this.stDropDownPanel4.Size = new System.Drawing.Size(477, 109);
this.stDropDownPanel4.TabIndex = 54;
//
// radioButton7
// radioBottomLeftBtn
//
this.radioButton7.AutoSize = true;
this.radioButton7.Location = new System.Drawing.Point(47, 81);
this.radioButton7.Name = "radioButton7";
this.radioButton7.Size = new System.Drawing.Size(79, 17);
this.radioButton7.TabIndex = 9;
this.radioButton7.TabStop = true;
this.radioButton7.Text = "Bottom Left";
this.radioButton7.UseVisualStyleBackColor = true;
this.radioBottomLeftBtn.AutoSize = true;
this.radioBottomLeftBtn.Location = new System.Drawing.Point(47, 81);
this.radioBottomLeftBtn.Name = "radioBottomLeftBtn";
this.radioBottomLeftBtn.Size = new System.Drawing.Size(79, 17);
this.radioBottomLeftBtn.TabIndex = 9;
this.radioBottomLeftBtn.TabStop = true;
this.radioBottomLeftBtn.Text = "Bottom Left";
this.radioBottomLeftBtn.UseVisualStyleBackColor = true;
//
// radioButton8
// radioTopLeftBtn
//
this.radioButton8.AutoSize = true;
this.radioButton8.Location = new System.Drawing.Point(47, 35);
this.radioButton8.Name = "radioButton8";
this.radioButton8.Size = new System.Drawing.Size(65, 17);
this.radioButton8.TabIndex = 8;
this.radioButton8.TabStop = true;
this.radioButton8.Text = "Top Left";
this.radioButton8.UseVisualStyleBackColor = true;
this.radioTopLeftBtn.AutoSize = true;
this.radioTopLeftBtn.Location = new System.Drawing.Point(47, 35);
this.radioTopLeftBtn.Name = "radioTopLeftBtn";
this.radioTopLeftBtn.Size = new System.Drawing.Size(65, 17);
this.radioTopLeftBtn.TabIndex = 8;
this.radioTopLeftBtn.TabStop = true;
this.radioTopLeftBtn.Text = "Top Left";
this.radioTopLeftBtn.UseVisualStyleBackColor = true;
//
// radioButton9
// radioLeftBtn
//
this.radioButton9.AutoSize = true;
this.radioButton9.Location = new System.Drawing.Point(47, 58);
this.radioButton9.Name = "radioButton9";
this.radioButton9.Size = new System.Drawing.Size(43, 17);
this.radioButton9.TabIndex = 7;
this.radioButton9.TabStop = true;
this.radioButton9.Text = "Left";
this.radioButton9.UseVisualStyleBackColor = true;
this.radioLeftBtn.AutoSize = true;
this.radioLeftBtn.Location = new System.Drawing.Point(47, 58);
this.radioLeftBtn.Name = "radioLeftBtn";
this.radioLeftBtn.Size = new System.Drawing.Size(43, 17);
this.radioLeftBtn.TabIndex = 7;
this.radioLeftBtn.TabStop = true;
this.radioLeftBtn.Text = "Left";
this.radioLeftBtn.UseVisualStyleBackColor = true;
//
// radioButton4
// radioBottomRightBtn
//
this.radioButton4.AutoSize = true;
this.radioButton4.Location = new System.Drawing.Point(217, 81);
this.radioButton4.Name = "radioButton4";
this.radioButton4.Size = new System.Drawing.Size(86, 17);
this.radioButton4.TabIndex = 6;
this.radioButton4.TabStop = true;
this.radioButton4.Text = "Bottom Right";
this.radioButton4.UseVisualStyleBackColor = true;
this.radioBottomRightBtn.AutoSize = true;
this.radioBottomRightBtn.Location = new System.Drawing.Point(217, 81);
this.radioBottomRightBtn.Name = "radioBottomRightBtn";
this.radioBottomRightBtn.Size = new System.Drawing.Size(86, 17);
this.radioBottomRightBtn.TabIndex = 6;
this.radioBottomRightBtn.TabStop = true;
this.radioBottomRightBtn.Text = "Bottom Right";
this.radioBottomRightBtn.UseVisualStyleBackColor = true;
//
// radioButton5
// radioTopRightBtn
//
this.radioButton5.AutoSize = true;
this.radioButton5.Location = new System.Drawing.Point(217, 35);
this.radioButton5.Name = "radioButton5";
this.radioButton5.Size = new System.Drawing.Size(72, 17);
this.radioButton5.TabIndex = 5;
this.radioButton5.TabStop = true;
this.radioButton5.Text = "Top Right";
this.radioButton5.UseVisualStyleBackColor = true;
this.radioTopRightBtn.AutoSize = true;
this.radioTopRightBtn.Location = new System.Drawing.Point(217, 35);
this.radioTopRightBtn.Name = "radioTopRightBtn";
this.radioTopRightBtn.Size = new System.Drawing.Size(72, 17);
this.radioTopRightBtn.TabIndex = 5;
this.radioTopRightBtn.TabStop = true;
this.radioTopRightBtn.Text = "Top Right";
this.radioTopRightBtn.UseVisualStyleBackColor = true;
//
// radioButton6
// radioRightBtn
//
this.radioButton6.AutoSize = true;
this.radioButton6.Location = new System.Drawing.Point(217, 58);
this.radioButton6.Name = "radioButton6";
this.radioButton6.Size = new System.Drawing.Size(50, 17);
this.radioButton6.TabIndex = 4;
this.radioButton6.TabStop = true;
this.radioButton6.Text = "Right";
this.radioButton6.UseVisualStyleBackColor = true;
this.radioRightBtn.AutoSize = true;
this.radioRightBtn.Location = new System.Drawing.Point(217, 58);
this.radioRightBtn.Name = "radioRightBtn";
this.radioRightBtn.Size = new System.Drawing.Size(50, 17);
this.radioRightBtn.TabIndex = 4;
this.radioRightBtn.TabStop = true;
this.radioRightBtn.Text = "Right";
this.radioRightBtn.UseVisualStyleBackColor = true;
//
// radioButton3
// radioBottomBtn
//
this.radioButton3.AutoSize = true;
this.radioButton3.Location = new System.Drawing.Point(136, 81);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(58, 17);
this.radioButton3.TabIndex = 3;
this.radioButton3.TabStop = true;
this.radioButton3.Text = "Bottom";
this.radioButton3.UseVisualStyleBackColor = true;
this.radioBottomBtn.AutoSize = true;
this.radioBottomBtn.Location = new System.Drawing.Point(136, 81);
this.radioBottomBtn.Name = "radioBottomBtn";
this.radioBottomBtn.Size = new System.Drawing.Size(58, 17);
this.radioBottomBtn.TabIndex = 3;
this.radioBottomBtn.TabStop = true;
this.radioBottomBtn.Text = "Bottom";
this.radioBottomBtn.UseVisualStyleBackColor = true;
//
// radioButton2
// radioTopBtn
//
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(136, 35);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(44, 17);
this.radioButton2.TabIndex = 2;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "Top";
this.radioButton2.UseVisualStyleBackColor = true;
this.radioTopBtn.AutoSize = true;
this.radioTopBtn.Location = new System.Drawing.Point(136, 35);
this.radioTopBtn.Name = "radioTopBtn";
this.radioTopBtn.Size = new System.Drawing.Size(44, 17);
this.radioTopBtn.TabIndex = 2;
this.radioTopBtn.TabStop = true;
this.radioTopBtn.Text = "Top";
this.radioTopBtn.UseVisualStyleBackColor = true;
//
// radioButton1
// radioCenterBtn
//
this.radioButton1.AutoSize = true;
this.radioButton1.Location = new System.Drawing.Point(136, 58);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(56, 17);
this.radioButton1.TabIndex = 1;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "Center";
this.radioButton1.UseVisualStyleBackColor = true;
this.radioCenterBtn.AutoSize = true;
this.radioCenterBtn.Location = new System.Drawing.Point(136, 58);
this.radioCenterBtn.Name = "radioCenterBtn";
this.radioCenterBtn.Size = new System.Drawing.Size(56, 17);
this.radioCenterBtn.TabIndex = 1;
this.radioCenterBtn.TabStop = true;
this.radioCenterBtn.Text = "Center";
this.radioCenterBtn.UseVisualStyleBackColor = true;
//
// stDropDownPanel5
//
this.stDropDownPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel5.Controls.Add(this.radioBottomLeftBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioTopLeftBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioLeftBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioBottomRightBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioTopRightBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioRightBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioBottomBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioTopBtnParent);
this.stDropDownPanel5.Controls.Add(this.radioCenterBtnParent);
this.stDropDownPanel5.ExpandedHeight = 0;
this.stDropDownPanel5.IsExpanded = true;
this.stDropDownPanel5.Location = new System.Drawing.Point(0, 485);
this.stDropDownPanel5.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel5.Name = "stDropDownPanel5";
this.stDropDownPanel5.PanelName = "Parent Orientation";
this.stDropDownPanel5.PanelValueName = "";
this.stDropDownPanel5.SetIcon = null;
this.stDropDownPanel5.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel5.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel5.Size = new System.Drawing.Size(477, 109);
this.stDropDownPanel5.TabIndex = 55;
//
// radioBottomLeftBtnParent
//
this.radioBottomLeftBtnParent.AutoSize = true;
this.radioBottomLeftBtnParent.Location = new System.Drawing.Point(47, 81);
this.radioBottomLeftBtnParent.Name = "radioBottomLeftBtnParent";
this.radioBottomLeftBtnParent.Size = new System.Drawing.Size(79, 17);
this.radioBottomLeftBtnParent.TabIndex = 9;
this.radioBottomLeftBtnParent.TabStop = true;
this.radioBottomLeftBtnParent.Text = "Bottom Left";
this.radioBottomLeftBtnParent.UseVisualStyleBackColor = true;
//
// radioTopLeftBtnParent
//
this.radioTopLeftBtnParent.AutoSize = true;
this.radioTopLeftBtnParent.Location = new System.Drawing.Point(47, 35);
this.radioTopLeftBtnParent.Name = "radioTopLeftBtnParent";
this.radioTopLeftBtnParent.Size = new System.Drawing.Size(65, 17);
this.radioTopLeftBtnParent.TabIndex = 8;
this.radioTopLeftBtnParent.TabStop = true;
this.radioTopLeftBtnParent.Text = "Top Left";
this.radioTopLeftBtnParent.UseVisualStyleBackColor = true;
//
// radioLeftBtnParent
//
this.radioLeftBtnParent.AutoSize = true;
this.radioLeftBtnParent.Location = new System.Drawing.Point(47, 58);
this.radioLeftBtnParent.Name = "radioLeftBtnParent";
this.radioLeftBtnParent.Size = new System.Drawing.Size(43, 17);
this.radioLeftBtnParent.TabIndex = 7;
this.radioLeftBtnParent.TabStop = true;
this.radioLeftBtnParent.Text = "Left";
this.radioLeftBtnParent.UseVisualStyleBackColor = true;
//
// radioBottomRightBtnParent
//
this.radioBottomRightBtnParent.AutoSize = true;
this.radioBottomRightBtnParent.Location = new System.Drawing.Point(217, 81);
this.radioBottomRightBtnParent.Name = "radioBottomRightBtnParent";
this.radioBottomRightBtnParent.Size = new System.Drawing.Size(86, 17);
this.radioBottomRightBtnParent.TabIndex = 6;
this.radioBottomRightBtnParent.TabStop = true;
this.radioBottomRightBtnParent.Text = "Bottom Right";
this.radioBottomRightBtnParent.UseVisualStyleBackColor = true;
//
// radioTopRightBtnParent
//
this.radioTopRightBtnParent.AutoSize = true;
this.radioTopRightBtnParent.Location = new System.Drawing.Point(217, 35);
this.radioTopRightBtnParent.Name = "radioTopRightBtnParent";
this.radioTopRightBtnParent.Size = new System.Drawing.Size(72, 17);
this.radioTopRightBtnParent.TabIndex = 5;
this.radioTopRightBtnParent.TabStop = true;
this.radioTopRightBtnParent.Text = "Top Right";
this.radioTopRightBtnParent.UseVisualStyleBackColor = true;
//
// radioRightBtnParent
//
this.radioRightBtnParent.AutoSize = true;
this.radioRightBtnParent.Location = new System.Drawing.Point(217, 58);
this.radioRightBtnParent.Name = "radioRightBtnParent";
this.radioRightBtnParent.Size = new System.Drawing.Size(50, 17);
this.radioRightBtnParent.TabIndex = 4;
this.radioRightBtnParent.TabStop = true;
this.radioRightBtnParent.Text = "Right";
this.radioRightBtnParent.UseVisualStyleBackColor = true;
//
// radioBottomBtnParent
//
this.radioBottomBtnParent.AutoSize = true;
this.radioBottomBtnParent.Location = new System.Drawing.Point(136, 81);
this.radioBottomBtnParent.Name = "radioBottomBtnParent";
this.radioBottomBtnParent.Size = new System.Drawing.Size(58, 17);
this.radioBottomBtnParent.TabIndex = 3;
this.radioBottomBtnParent.TabStop = true;
this.radioBottomBtnParent.Text = "Bottom";
this.radioBottomBtnParent.UseVisualStyleBackColor = true;
//
// radioTopBtnParent
//
this.radioTopBtnParent.AutoSize = true;
this.radioTopBtnParent.Location = new System.Drawing.Point(136, 35);
this.radioTopBtnParent.Name = "radioTopBtnParent";
this.radioTopBtnParent.Size = new System.Drawing.Size(44, 17);
this.radioTopBtnParent.TabIndex = 2;
this.radioTopBtnParent.TabStop = true;
this.radioTopBtnParent.Text = "Top";
this.radioTopBtnParent.UseVisualStyleBackColor = true;
//
// radioCenterBtnParent
//
this.radioCenterBtnParent.AutoSize = true;
this.radioCenterBtnParent.Location = new System.Drawing.Point(136, 58);
this.radioCenterBtnParent.Name = "radioCenterBtnParent";
this.radioCenterBtnParent.Size = new System.Drawing.Size(56, 17);
this.radioCenterBtnParent.TabIndex = 1;
this.radioCenterBtnParent.TabStop = true;
this.radioCenterBtnParent.Text = "Center";
this.radioCenterBtnParent.UseVisualStyleBackColor = true;
//
// BasePaneEditor
//
@ -891,7 +1029,9 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "BasePaneEditor";
this.Size = new System.Drawing.Size(477, 554);
this.Size = new System.Drawing.Size(477, 665);
this.Enter += new System.EventHandler(this.BasePaneEditor_Enter);
this.MouseEnter += new System.EventHandler(this.BasePaneEditor_MouseEnter);
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
@ -901,6 +1041,8 @@
this.stDropDownPanel3.PerformLayout();
this.stDropDownPanel4.ResumeLayout(false);
this.stDropDownPanel4.PerformLayout();
this.stDropDownPanel5.ResumeLayout(false);
this.stDropDownPanel5.PerformLayout();
this.ResumeLayout(false);
}
@ -933,16 +1075,26 @@
private Toolbox.Library.Forms.AlphaSelectorHorizontalPanel alphaSelectorHorizontalPanel1;
private Toolbox.Library.Forms.STLabel stLabel7;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel4;
private System.Windows.Forms.RadioButton radioButton7;
private System.Windows.Forms.RadioButton radioButton8;
private System.Windows.Forms.RadioButton radioButton9;
private System.Windows.Forms.RadioButton radioButton4;
private System.Windows.Forms.RadioButton radioButton5;
private System.Windows.Forms.RadioButton radioButton6;
private System.Windows.Forms.RadioButton radioButton3;
private System.Windows.Forms.RadioButton radioButton2;
private System.Windows.Forms.RadioButton radioButton1;
private Toolbox.Library.Forms.STCheckBox stCheckBox2;
private Toolbox.Library.Forms.STCheckBox stCheckBox1;
private Toolbox.Library.Forms.STRadioButton radioBottomLeftBtn;
private Toolbox.Library.Forms.STRadioButton radioTopLeftBtn;
private Toolbox.Library.Forms.STRadioButton radioLeftBtn;
private Toolbox.Library.Forms.STRadioButton radioBottomRightBtn;
private Toolbox.Library.Forms.STRadioButton radioTopRightBtn;
private Toolbox.Library.Forms.STRadioButton radioRightBtn;
private Toolbox.Library.Forms.STRadioButton radioBottomBtn;
private Toolbox.Library.Forms.STRadioButton radioTopBtn;
private Toolbox.Library.Forms.STRadioButton radioCenterBtn;
private Toolbox.Library.Forms.STCheckBox alphaChildrenChk;
private Toolbox.Library.Forms.STCheckBox paneVisibleChk;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel5;
private Toolbox.Library.Forms.STRadioButton radioBottomLeftBtnParent;
private Toolbox.Library.Forms.STRadioButton radioTopLeftBtnParent;
private Toolbox.Library.Forms.STRadioButton radioLeftBtnParent;
private Toolbox.Library.Forms.STRadioButton radioBottomRightBtnParent;
private Toolbox.Library.Forms.STRadioButton radioTopRightBtnParent;
private Toolbox.Library.Forms.STRadioButton radioRightBtnParent;
private Toolbox.Library.Forms.STRadioButton radioBottomBtnParent;
private Toolbox.Library.Forms.STRadioButton radioCenterBtnParent;
private Toolbox.Library.Forms.STRadioButton radioTopBtnParent;
}
}

View File

@ -11,16 +11,375 @@ using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class BasePaneEditor : STUserControl
public partial class BasePaneEditor : EditorPanelBase
{
private bool Loaded = false;
public BasePaneEditor()
{
InitializeComponent();
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel3.ResetColors();
stDropDownPanel4.ResetColors();
stDropDownPanel5.ResetColors();
alphaSelectorHorizontalPanel1.AlphaChanged += OnAlphaSliderChanged;
alphaUD.ValueChanged += OnAlphaChanged;
tranXUD.ValueChanged += OnTransformChanged;
tranYUD.ValueChanged += OnTransformChanged;
tranZUD.ValueChanged += OnTransformChanged;
rotXUD.ValueChanged += OnTransformChanged;
rotYUD.ValueChanged += OnTransformChanged;
rotZUD.ValueChanged += OnTransformChanged;
scaleXUD.ValueChanged += OnTransformChanged;
scaleYUD.ValueChanged += OnTransformChanged;
sizeXUD.ValueChanged += OnTransformChanged;
sizeYUD.ValueChanged += OnTransformChanged;
radioBottomBtn.CheckedChanged += OnOrientationChanged;
radioBottomLeftBtn.CheckedChanged += OnOrientationChanged;
radioBottomRightBtn.CheckedChanged += OnOrientationChanged;
radioRightBtn.CheckedChanged += OnOrientationChanged;
radioLeftBtn.CheckedChanged += OnOrientationChanged;
radioCenterBtn.CheckedChanged += OnOrientationChanged;
radioTopBtn.CheckedChanged += OnOrientationChanged;
radioTopLeftBtn.CheckedChanged += OnOrientationChanged;
radioTopRightBtn.CheckedChanged += OnOrientationChanged;
radioBottomBtnParent.CheckedChanged += OnParentOrientationChanged;
radioBottomLeftBtnParent.CheckedChanged += OnParentOrientationChanged;
radioBottomRightBtnParent.CheckedChanged += OnParentOrientationChanged;
radioRightBtnParent.CheckedChanged += OnParentOrientationChanged;
radioLeftBtnParent.CheckedChanged += OnParentOrientationChanged;
radioCenterBtnParent.CheckedChanged += OnParentOrientationChanged;
radioTopBtnParent.CheckedChanged += OnParentOrientationChanged;
radioTopLeftBtnParent.CheckedChanged += OnParentOrientationChanged;
radioTopRightBtnParent.CheckedChanged += OnParentOrientationChanged;
alphaUD.Maximum = 255;
alphaUD.Minimum = 0;
}
public void LoadPane(BasePane pane)
private BasePane ActivePane;
private PaneEditor parentEditor;
public void LoadPane(BasePane pane, PaneEditor paneEditor)
{
parentEditor = paneEditor;
Loaded = false;
ActivePane = pane;
nameTB.Bind(pane, "Name");
tranXUD.Value = pane.Translate.X;
tranYUD.Value = pane.Translate.Y;
tranZUD.Value = pane.Translate.Z;
rotXUD.Value = pane.Rotate.X;
rotYUD.Value = pane.Rotate.Y;
rotZUD.Value = pane.Rotate.Z;
scaleXUD.Value = pane.Scale.X;
scaleYUD.Value = pane.Scale.Y;
sizeXUD.Value = pane.Width;
sizeYUD.Value = pane.Height;
alphaChildrenChk.Bind(pane, "InfluenceAlpha");
paneVisibleChk.Bind(pane, "Visible");
alphaUD.Value = pane.Alpha;
alphaSelectorHorizontalPanel1.Alpha = pane.Alpha;
SetOrientation();
SetParentOrientation();
Loaded = true;
}
public void RefreshEditor()
{
Loaded = false;
tranXUD.Value = ActivePane.Translate.X;
tranYUD.Value = ActivePane.Translate.Y;
tranZUD.Value = ActivePane.Translate.Z;
rotXUD.Value = ActivePane.Rotate.X;
rotYUD.Value = ActivePane.Rotate.Y;
rotZUD.Value = ActivePane.Rotate.Z;
scaleXUD.Value = ActivePane.Scale.X;
scaleYUD.Value = ActivePane.Scale.Y;
sizeXUD.Value = ActivePane.Width;
sizeYUD.Value = ActivePane.Height;
Loaded = true;
}
private void OnAlphaSliderChanged(object sender, EventArgs e) {
if (!Loaded) return;
alphaUD.Value = alphaSelectorHorizontalPanel1.Alpha;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void OnAlphaChanged(object sender, EventArgs e) {
if (!Loaded) return;
ActivePane.Alpha = (byte)alphaUD.Value;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private bool IsRadioOrientationEdited = false;
private void OnOrientationChanged(object sender, EventArgs e) {
if (!Loaded || IsRadioOrientationEdited) return;
IsRadioOrientationEdited = true;
if (radioTopRightBtn.Checked) {
ActivePane.originX = OriginX.Right;
ActivePane.originY = OriginY.Top;
}
else if (radioTopLeftBtn.Checked) {
ActivePane.originX = OriginX.Left;
ActivePane.originY = OriginY.Top;
}
else if (radioTopBtn.Checked) {
ActivePane.originX = OriginX.Center;
ActivePane.originY = OriginY.Top;
}
else if (radioBottomBtn.Checked) {
ActivePane.originX = OriginX.Center;
ActivePane.originY = OriginY.Bottom;
}
else if (radioBottomRightBtn.Checked) {
ActivePane.originX = OriginX.Right;
ActivePane.originY = OriginY.Bottom;
}
else if (radioBottomLeftBtn.Checked)
{
ActivePane.originX = OriginX.Left;
ActivePane.originY = OriginY.Bottom;
}
else if (radioCenterBtn.Checked) {
ActivePane.originX = OriginX.Center;
ActivePane.originY = OriginY.Center;
}
else if (radioRightBtn.Checked) {
ActivePane.originX = OriginX.Right;
ActivePane.originY = OriginY.Center;
}
else if (radioLeftBtn.Checked) {
ActivePane.originX = OriginX.Left;
ActivePane.originY = OriginY.Center;
}
SetOrientation();
IsRadioOrientationEdited = false;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void OnParentOrientationChanged(object sender, EventArgs e)
{
if (!Loaded || IsRadioOrientationEdited) return;
IsRadioOrientationEdited = true;
if (radioTopRightBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Right;
ActivePane.ParentOriginY = OriginY.Top;
}
else if (radioTopLeftBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Left;
ActivePane.ParentOriginY = OriginY.Top;
}
else if (radioTopBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Center;
ActivePane.ParentOriginY = OriginY.Top;
}
else if (radioBottomBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Center;
ActivePane.ParentOriginY = OriginY.Bottom;
}
else if (radioBottomRightBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Right;
ActivePane.ParentOriginY = OriginY.Bottom;
}
else if (radioBottomLeftBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Left;
ActivePane.ParentOriginY = OriginY.Bottom;
}
else if (radioCenterBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Center;
ActivePane.ParentOriginY = OriginY.Center;
}
else if (radioRightBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Right;
ActivePane.ParentOriginY = OriginY.Center;
}
else if (radioLeftBtnParent.Checked)
{
ActivePane.ParentOriginX = OriginX.Left;
ActivePane.ParentOriginY = OriginY.Center;
}
SetParentOrientation();
IsRadioOrientationEdited = false;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void OnTransformChanged(object sender, EventArgs e) {
if (!Loaded) return;
ActivePane.Translate = new Syroot.Maths.Vector3F(
tranXUD.Value, tranYUD.Value, tranZUD.Value);
ActivePane.Rotate = new Syroot.Maths.Vector3F(
rotXUD.Value, rotYUD.Value, rotZUD.Value);
ActivePane.Scale = new Syroot.Maths.Vector2F(
scaleXUD.Value, scaleYUD.Value);
ActivePane.Width = sizeXUD.Value;
ActivePane.Height = sizeYUD.Value;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void SetParentOrientation()
{
radioCenterBtnParent.Checked = true;
radioLeftBtnParent.Checked = false;
radioRightBtnParent.Checked = false;
radioTopLeftBtnParent.Checked = true;
radioTopRightBtnParent.Checked = false;
radioBottomLeftBtnParent.Checked = false;
radioBottomRightBtnParent.Checked = false;
radioTopBtnParent.Checked = false;
radioBottomBtnParent.Checked = false;
if (ActivePane.IsRoot || ActivePane.ParentIsRoot)
{
radioCenterBtnParent.Enabled = false;
radioLeftBtnParent.Enabled = false;
radioRightBtnParent.Enabled = false;
radioTopLeftBtnParent.Enabled = true;
radioTopRightBtnParent.Enabled = false;
radioBottomLeftBtnParent.Enabled = false;
radioBottomRightBtnParent.Enabled = false;
radioTopBtnParent.Enabled = false;
radioBottomBtnParent.Enabled = false;
return;
}
else
{
radioCenterBtnParent.Enabled = true;
radioLeftBtnParent.Enabled = true;
radioRightBtnParent.Enabled = true;
radioTopLeftBtnParent.Enabled = true;
radioTopRightBtnParent.Enabled = true;
radioBottomLeftBtnParent.Enabled = true;
radioBottomRightBtnParent.Enabled = true;
radioTopBtnParent.Enabled = true;
radioBottomBtnParent.Enabled = true;
}
switch (ActivePane.ParentOriginX)
{
case OriginX.Center:
if (ActivePane.ParentOriginY == OriginY.Center)
radioCenterBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Bottom)
radioBottomBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Top)
radioTopBtnParent.Checked = true;
break;
case OriginX.Left:
if (ActivePane.ParentOriginY == OriginY.Center)
radioLeftBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Bottom)
radioBottomLeftBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Top)
radioTopLeftBtnParent.Checked = true;
break;
case OriginX.Right:
if (ActivePane.ParentOriginY == OriginY.Center)
radioRightBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Bottom)
radioBottomRightBtnParent.Checked = true;
else if (ActivePane.ParentOriginY == OriginY.Top)
radioTopRightBtnParent.Checked = true;
break;
}
}
private void SetOrientation()
{
radioCenterBtn.Checked = true;
radioLeftBtn.Checked = false;
radioRightBtn.Checked = false;
radioTopLeftBtn.Checked = true;
radioTopRightBtn.Checked = false;
radioBottomLeftBtn.Checked = false;
radioBottomRightBtn.Checked = false;
radioTopBtn.Checked = false;
radioBottomBtn.Checked = false;
switch (ActivePane.originX)
{
case OriginX.Center:
if (ActivePane.originY == OriginY.Center)
radioCenterBtn.Checked = true;
else if (ActivePane.originY == OriginY.Bottom)
radioBottomBtn.Checked = true;
else if (ActivePane.originY == OriginY.Top)
radioTopBtn.Checked = true;
break;
case OriginX.Left:
if (ActivePane.originY == OriginY.Center)
radioLeftBtn.Checked = true;
else if (ActivePane.originY == OriginY.Bottom)
radioBottomLeftBtn.Checked = true;
else if (ActivePane.originY == OriginY.Top)
radioTopLeftBtn.Checked = true;
break;
case OriginX.Right:
if (ActivePane.originY == OriginY.Center)
radioRightBtn.Checked = true;
else if (ActivePane.originY == OriginY.Bottom)
radioBottomRightBtn.Checked = true;
else if (ActivePane.originY == OriginY.Top)
radioTopRightBtn.Checked = true;
break;
}
}
private void nameTB_TextChanged(object sender, EventArgs e) {
if (ActivePane.NodeWrapper != null)
ActivePane.NodeWrapper.Text = nameTB.Text;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void paneVisibleChk_CheckedChanged(object sender, EventArgs e) {
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void BasePaneEditor_Enter(object sender, EventArgs e) {
}
private void BasePaneEditor_MouseEnter(object sender, EventArgs e) {
RefreshEditor();
}
}
}

View File

@ -0,0 +1,585 @@
namespace LayoutBXLYT
{
partial class BasePictureboxEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BasePictureboxEditor));
this.stFlowLayoutPanel1 = new Toolbox.Library.Forms.STFlowLayoutPanel();
this.stDropDownPanel1 = new Toolbox.Library.Forms.STDropDownPanel();
this.btnResetColors = new Toolbox.Library.Forms.STButton();
this.stDropDownPanel3 = new Toolbox.Library.Forms.STDropDownPanel();
this.texCoordIndexCB = new Toolbox.Library.Forms.STComboBox();
this.bottomRightYUD = new BarSlider.BarSlider();
this.bottomRightXUD = new BarSlider.BarSlider();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.bottomLeftYUD = new BarSlider.BarSlider();
this.bottomLeftXUD = new BarSlider.BarSlider();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.topRightYUD = new BarSlider.BarSlider();
this.topRightXUD = new BarSlider.BarSlider();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.topLeftYUD = new BarSlider.BarSlider();
this.topLeftXUD = new BarSlider.BarSlider();
this.stLabel6 = new Toolbox.Library.Forms.STLabel();
this.vertexColorBox1 = new Toolbox.Library.Forms.VertexColorBox();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
this.stDropDownPanel3.SuspendLayout();
this.SuspendLayout();
//
// stFlowLayoutPanel1
//
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel1);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel3);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(335, 418);
this.stFlowLayoutPanel1.TabIndex = 0;
//
// stDropDownPanel1
//
this.stDropDownPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel1.Controls.Add(this.btnResetColors);
this.stDropDownPanel1.Controls.Add(this.vertexColorBox1);
this.stDropDownPanel1.ExpandedHeight = 0;
this.stDropDownPanel1.IsExpanded = true;
this.stDropDownPanel1.Location = new System.Drawing.Point(0, 0);
this.stDropDownPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel1.Name = "stDropDownPanel1";
this.stDropDownPanel1.PanelName = "Vertex Colors";
this.stDropDownPanel1.PanelValueName = "";
this.stDropDownPanel1.SetIcon = null;
this.stDropDownPanel1.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.Size = new System.Drawing.Size(335, 133);
this.stDropDownPanel1.TabIndex = 0;
//
// btnResetColors
//
this.btnResetColors.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnResetColors.Location = new System.Drawing.Point(128, 27);
this.btnResetColors.Name = "btnResetColors";
this.btnResetColors.Size = new System.Drawing.Size(94, 23);
this.btnResetColors.TabIndex = 2;
this.btnResetColors.Text = "Reset Colors";
this.btnResetColors.UseVisualStyleBackColor = false;
this.btnResetColors.Click += new System.EventHandler(this.btnResetColors_Click);
//
// stDropDownPanel3
//
this.stDropDownPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel3.Controls.Add(this.texCoordIndexCB);
this.stDropDownPanel3.Controls.Add(this.bottomRightYUD);
this.stDropDownPanel3.Controls.Add(this.bottomRightXUD);
this.stDropDownPanel3.Controls.Add(this.stLabel2);
this.stDropDownPanel3.Controls.Add(this.bottomLeftYUD);
this.stDropDownPanel3.Controls.Add(this.bottomLeftXUD);
this.stDropDownPanel3.Controls.Add(this.stLabel3);
this.stDropDownPanel3.Controls.Add(this.topRightYUD);
this.stDropDownPanel3.Controls.Add(this.topRightXUD);
this.stDropDownPanel3.Controls.Add(this.stLabel1);
this.stDropDownPanel3.Controls.Add(this.topLeftYUD);
this.stDropDownPanel3.Controls.Add(this.topLeftXUD);
this.stDropDownPanel3.Controls.Add(this.stLabel6);
this.stDropDownPanel3.ExpandedHeight = 0;
this.stDropDownPanel3.IsExpanded = true;
this.stDropDownPanel3.Location = new System.Drawing.Point(0, 133);
this.stDropDownPanel3.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel3.Name = "stDropDownPanel3";
this.stDropDownPanel3.PanelName = "Texture Coordinates";
this.stDropDownPanel3.PanelValueName = "";
this.stDropDownPanel3.SetIcon = null;
this.stDropDownPanel3.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.Size = new System.Drawing.Size(335, 285);
this.stDropDownPanel3.TabIndex = 2;
//
// texCoordIndexCB
//
this.texCoordIndexCB.BorderColor = System.Drawing.Color.Empty;
this.texCoordIndexCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.texCoordIndexCB.ButtonColor = System.Drawing.Color.Empty;
this.texCoordIndexCB.FormattingEnabled = true;
this.texCoordIndexCB.IsReadOnly = false;
this.texCoordIndexCB.Location = new System.Drawing.Point(220, 24);
this.texCoordIndexCB.Name = "texCoordIndexCB";
this.texCoordIndexCB.Size = new System.Drawing.Size(101, 21);
this.texCoordIndexCB.TabIndex = 59;
this.texCoordIndexCB.SelectedIndexChanged += new System.EventHandler(this.texCoordIndexCB_SelectedIndexChanged);
//
// bottomRightYUD
//
this.bottomRightYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomRightYUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bottomRightYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.bottomRightYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.bottomRightYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.bottomRightYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomRightYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.bottomRightYUD.DataType = null;
this.bottomRightYUD.DrawSemitransparentThumb = false;
this.bottomRightYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.bottomRightYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.bottomRightYUD.ForeColor = System.Drawing.Color.White;
this.bottomRightYUD.IncrementAmount = 0.01F;
this.bottomRightYUD.InputName = "Y";
this.bottomRightYUD.LargeChange = 5F;
this.bottomRightYUD.Location = new System.Drawing.Point(220, 162);
this.bottomRightYUD.Maximum = 300000F;
this.bottomRightYUD.Minimum = -300000F;
this.bottomRightYUD.Name = "bottomRightYUD";
this.bottomRightYUD.Precision = 0.01F;
this.bottomRightYUD.ScaleDivisions = 1;
this.bottomRightYUD.ScaleSubDivisions = 2;
this.bottomRightYUD.ShowDivisionsText = false;
this.bottomRightYUD.ShowSmallScale = false;
this.bottomRightYUD.Size = new System.Drawing.Size(107, 25);
this.bottomRightYUD.SmallChange = 0.01F;
this.bottomRightYUD.TabIndex = 58;
this.bottomRightYUD.Text = "barSlider2";
this.bottomRightYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.bottomRightYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.bottomRightYUD.TickAdd = 0F;
this.bottomRightYUD.TickColor = System.Drawing.Color.White;
this.bottomRightYUD.TickDivide = 0F;
this.bottomRightYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.bottomRightYUD.UseInterlapsedBar = false;
this.bottomRightYUD.Value = 30F;
//
// bottomRightXUD
//
this.bottomRightXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomRightXUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bottomRightXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.bottomRightXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.bottomRightXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.bottomRightXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomRightXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.bottomRightXUD.DataType = null;
this.bottomRightXUD.DrawSemitransparentThumb = false;
this.bottomRightXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.bottomRightXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.bottomRightXUD.ForeColor = System.Drawing.Color.White;
this.bottomRightXUD.IncrementAmount = 0.01F;
this.bottomRightXUD.InputName = "X";
this.bottomRightXUD.LargeChange = 5F;
this.bottomRightXUD.Location = new System.Drawing.Point(107, 162);
this.bottomRightXUD.Maximum = 300000F;
this.bottomRightXUD.Minimum = -300000F;
this.bottomRightXUD.Name = "bottomRightXUD";
this.bottomRightXUD.Precision = 0.01F;
this.bottomRightXUD.ScaleDivisions = 1;
this.bottomRightXUD.ScaleSubDivisions = 2;
this.bottomRightXUD.ShowDivisionsText = false;
this.bottomRightXUD.ShowSmallScale = false;
this.bottomRightXUD.Size = new System.Drawing.Size(107, 25);
this.bottomRightXUD.SmallChange = 0.01F;
this.bottomRightXUD.TabIndex = 57;
this.bottomRightXUD.Text = "barSlider4";
this.bottomRightXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomRightXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.bottomRightXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.bottomRightXUD.TickAdd = 0F;
this.bottomRightXUD.TickColor = System.Drawing.Color.White;
this.bottomRightXUD.TickDivide = 0F;
this.bottomRightXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.bottomRightXUD.UseInterlapsedBar = false;
this.bottomRightXUD.Value = 30F;
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(19, 168);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(68, 13);
this.stLabel2.TabIndex = 56;
this.stLabel2.Text = "Bottom Right";
//
// bottomLeftYUD
//
this.bottomLeftYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomLeftYUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bottomLeftYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.bottomLeftYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.bottomLeftYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.bottomLeftYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomLeftYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.bottomLeftYUD.DataType = null;
this.bottomLeftYUD.DrawSemitransparentThumb = false;
this.bottomLeftYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.bottomLeftYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.bottomLeftYUD.ForeColor = System.Drawing.Color.White;
this.bottomLeftYUD.IncrementAmount = 0.01F;
this.bottomLeftYUD.InputName = "Y";
this.bottomLeftYUD.LargeChange = 5F;
this.bottomLeftYUD.Location = new System.Drawing.Point(220, 131);
this.bottomLeftYUD.Maximum = 300000F;
this.bottomLeftYUD.Minimum = -300000F;
this.bottomLeftYUD.Name = "bottomLeftYUD";
this.bottomLeftYUD.Precision = 0.01F;
this.bottomLeftYUD.ScaleDivisions = 1;
this.bottomLeftYUD.ScaleSubDivisions = 2;
this.bottomLeftYUD.ShowDivisionsText = false;
this.bottomLeftYUD.ShowSmallScale = false;
this.bottomLeftYUD.Size = new System.Drawing.Size(107, 25);
this.bottomLeftYUD.SmallChange = 0.01F;
this.bottomLeftYUD.TabIndex = 55;
this.bottomLeftYUD.Text = "barSlider2";
this.bottomLeftYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.bottomLeftYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.bottomLeftYUD.TickAdd = 0F;
this.bottomLeftYUD.TickColor = System.Drawing.Color.White;
this.bottomLeftYUD.TickDivide = 0F;
this.bottomLeftYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.bottomLeftYUD.UseInterlapsedBar = false;
this.bottomLeftYUD.Value = 30F;
//
// bottomLeftXUD
//
this.bottomLeftXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomLeftXUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bottomLeftXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.bottomLeftXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.bottomLeftXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.bottomLeftXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.bottomLeftXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.bottomLeftXUD.DataType = null;
this.bottomLeftXUD.DrawSemitransparentThumb = false;
this.bottomLeftXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.bottomLeftXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.bottomLeftXUD.ForeColor = System.Drawing.Color.White;
this.bottomLeftXUD.IncrementAmount = 0.01F;
this.bottomLeftXUD.InputName = "X";
this.bottomLeftXUD.LargeChange = 5F;
this.bottomLeftXUD.Location = new System.Drawing.Point(107, 131);
this.bottomLeftXUD.Maximum = 300000F;
this.bottomLeftXUD.Minimum = -300000F;
this.bottomLeftXUD.Name = "bottomLeftXUD";
this.bottomLeftXUD.Precision = 0.01F;
this.bottomLeftXUD.ScaleDivisions = 1;
this.bottomLeftXUD.ScaleSubDivisions = 2;
this.bottomLeftXUD.ShowDivisionsText = false;
this.bottomLeftXUD.ShowSmallScale = false;
this.bottomLeftXUD.Size = new System.Drawing.Size(107, 25);
this.bottomLeftXUD.SmallChange = 0.01F;
this.bottomLeftXUD.TabIndex = 54;
this.bottomLeftXUD.Text = "barSlider2";
this.bottomLeftXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.bottomLeftXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.bottomLeftXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.bottomLeftXUD.TickAdd = 0F;
this.bottomLeftXUD.TickColor = System.Drawing.Color.White;
this.bottomLeftXUD.TickDivide = 0F;
this.bottomLeftXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.bottomLeftXUD.UseInterlapsedBar = false;
this.bottomLeftXUD.Value = 30F;
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(19, 137);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(64, 13);
this.stLabel3.TabIndex = 53;
this.stLabel3.Text = "Bottom Left:";
//
// topRightYUD
//
this.topRightYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topRightYUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.topRightYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.topRightYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.topRightYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.topRightYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topRightYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.topRightYUD.DataType = null;
this.topRightYUD.DrawSemitransparentThumb = false;
this.topRightYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.topRightYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.topRightYUD.ForeColor = System.Drawing.Color.White;
this.topRightYUD.IncrementAmount = 0.01F;
this.topRightYUD.InputName = "Y";
this.topRightYUD.LargeChange = 5F;
this.topRightYUD.Location = new System.Drawing.Point(220, 85);
this.topRightYUD.Maximum = 300000F;
this.topRightYUD.Minimum = -300000F;
this.topRightYUD.Name = "topRightYUD";
this.topRightYUD.Precision = 0.01F;
this.topRightYUD.ScaleDivisions = 1;
this.topRightYUD.ScaleSubDivisions = 2;
this.topRightYUD.ShowDivisionsText = false;
this.topRightYUD.ShowSmallScale = false;
this.topRightYUD.Size = new System.Drawing.Size(107, 25);
this.topRightYUD.SmallChange = 0.01F;
this.topRightYUD.TabIndex = 52;
this.topRightYUD.Text = "barSlider2";
this.topRightYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.topRightYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.topRightYUD.TickAdd = 0F;
this.topRightYUD.TickColor = System.Drawing.Color.White;
this.topRightYUD.TickDivide = 0F;
this.topRightYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.topRightYUD.UseInterlapsedBar = false;
this.topRightYUD.Value = 30F;
//
// topRightXUD
//
this.topRightXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topRightXUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.topRightXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.topRightXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.topRightXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.topRightXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topRightXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.topRightXUD.DataType = null;
this.topRightXUD.DrawSemitransparentThumb = false;
this.topRightXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.topRightXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.topRightXUD.ForeColor = System.Drawing.Color.White;
this.topRightXUD.IncrementAmount = 0.01F;
this.topRightXUD.InputName = "X";
this.topRightXUD.LargeChange = 5F;
this.topRightXUD.Location = new System.Drawing.Point(107, 85);
this.topRightXUD.Maximum = 300000F;
this.topRightXUD.Minimum = -300000F;
this.topRightXUD.Name = "topRightXUD";
this.topRightXUD.Precision = 0.01F;
this.topRightXUD.ScaleDivisions = 1;
this.topRightXUD.ScaleSubDivisions = 2;
this.topRightXUD.ShowDivisionsText = false;
this.topRightXUD.ShowSmallScale = false;
this.topRightXUD.Size = new System.Drawing.Size(107, 25);
this.topRightXUD.SmallChange = 0.01F;
this.topRightXUD.TabIndex = 51;
this.topRightXUD.Text = "barSlider2";
this.topRightXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topRightXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.topRightXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.topRightXUD.TickAdd = 0F;
this.topRightXUD.TickColor = System.Drawing.Color.White;
this.topRightXUD.TickDivide = 0F;
this.topRightXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.topRightXUD.UseInterlapsedBar = false;
this.topRightXUD.Value = 30F;
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(19, 91);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(54, 13);
this.stLabel1.TabIndex = 50;
this.stLabel1.Text = "Top Right";
//
// topLeftYUD
//
this.topLeftYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topLeftYUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.topLeftYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.topLeftYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.topLeftYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.topLeftYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topLeftYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.topLeftYUD.DataType = null;
this.topLeftYUD.DrawSemitransparentThumb = false;
this.topLeftYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.topLeftYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.topLeftYUD.ForeColor = System.Drawing.Color.White;
this.topLeftYUD.IncrementAmount = 0.01F;
this.topLeftYUD.InputName = "Y";
this.topLeftYUD.LargeChange = 5F;
this.topLeftYUD.Location = new System.Drawing.Point(220, 54);
this.topLeftYUD.Maximum = 300000F;
this.topLeftYUD.Minimum = -300000F;
this.topLeftYUD.Name = "topLeftYUD";
this.topLeftYUD.Precision = 0.01F;
this.topLeftYUD.ScaleDivisions = 1;
this.topLeftYUD.ScaleSubDivisions = 2;
this.topLeftYUD.ShowDivisionsText = false;
this.topLeftYUD.ShowSmallScale = false;
this.topLeftYUD.Size = new System.Drawing.Size(107, 25);
this.topLeftYUD.SmallChange = 0.01F;
this.topLeftYUD.TabIndex = 49;
this.topLeftYUD.Text = "barSlider2";
this.topLeftYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.topLeftYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.topLeftYUD.TickAdd = 0F;
this.topLeftYUD.TickColor = System.Drawing.Color.White;
this.topLeftYUD.TickDivide = 0F;
this.topLeftYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.topLeftYUD.UseInterlapsedBar = false;
this.topLeftYUD.Value = 30F;
//
// topLeftXUD
//
this.topLeftXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topLeftXUD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.topLeftXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.topLeftXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.topLeftXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.topLeftXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.topLeftXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.topLeftXUD.DataType = null;
this.topLeftXUD.DrawSemitransparentThumb = false;
this.topLeftXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.topLeftXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.topLeftXUD.ForeColor = System.Drawing.Color.White;
this.topLeftXUD.IncrementAmount = 0.01F;
this.topLeftXUD.InputName = "X";
this.topLeftXUD.LargeChange = 5F;
this.topLeftXUD.Location = new System.Drawing.Point(107, 54);
this.topLeftXUD.Maximum = 300000F;
this.topLeftXUD.Minimum = -300000F;
this.topLeftXUD.Name = "topLeftXUD";
this.topLeftXUD.Precision = 0.01F;
this.topLeftXUD.ScaleDivisions = 1;
this.topLeftXUD.ScaleSubDivisions = 2;
this.topLeftXUD.ShowDivisionsText = false;
this.topLeftXUD.ShowSmallScale = false;
this.topLeftXUD.Size = new System.Drawing.Size(107, 25);
this.topLeftXUD.SmallChange = 0.01F;
this.topLeftXUD.TabIndex = 48;
this.topLeftXUD.Text = "barSlider2";
this.topLeftXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.topLeftXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.topLeftXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.topLeftXUD.TickAdd = 0F;
this.topLeftXUD.TickColor = System.Drawing.Color.White;
this.topLeftXUD.TickDivide = 0F;
this.topLeftXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.topLeftXUD.UseInterlapsedBar = false;
this.topLeftXUD.Value = 30F;
//
// stLabel6
//
this.stLabel6.AutoSize = true;
this.stLabel6.Location = new System.Drawing.Point(19, 60);
this.stLabel6.Name = "stLabel6";
this.stLabel6.Size = new System.Drawing.Size(50, 13);
this.stLabel6.TabIndex = 47;
this.stLabel6.Text = "Top Left:";
//
// vertexColorBox1
//
this.vertexColorBox1.BackColor = System.Drawing.Color.Transparent;
this.vertexColorBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("vertexColorBox1.BackgroundImage")));
this.vertexColorBox1.BottomLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.BottomRightColor = System.Drawing.Color.Empty;
this.vertexColorBox1.Location = new System.Drawing.Point(22, 27);
this.vertexColorBox1.Name = "vertexColorBox1";
this.vertexColorBox1.Size = new System.Drawing.Size(100, 100);
this.vertexColorBox1.TabIndex = 1;
this.vertexColorBox1.TopLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.TopRightColor = System.Drawing.Color.Empty;
//
// BasePictureboxEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "BasePictureboxEditor";
this.Size = new System.Drawing.Size(335, 418);
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
this.stDropDownPanel3.ResumeLayout(false);
this.stDropDownPanel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STFlowLayoutPanel stFlowLayoutPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel1;
private Toolbox.Library.Forms.STButton btnResetColors;
private Toolbox.Library.Forms.VertexColorBox vertexColorBox1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel3;
private BarSlider.BarSlider bottomRightYUD;
private BarSlider.BarSlider bottomRightXUD;
private Toolbox.Library.Forms.STLabel stLabel2;
private BarSlider.BarSlider bottomLeftYUD;
private BarSlider.BarSlider bottomLeftXUD;
private Toolbox.Library.Forms.STLabel stLabel3;
private BarSlider.BarSlider topRightYUD;
private BarSlider.BarSlider topRightXUD;
private Toolbox.Library.Forms.STLabel stLabel1;
private BarSlider.BarSlider topLeftYUD;
private BarSlider.BarSlider topLeftXUD;
private Toolbox.Library.Forms.STLabel stLabel6;
private Toolbox.Library.Forms.STComboBox texCoordIndexCB;
}
}

View File

@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class BasePictureboxEditor : EditorPanelBase
{
public BasePictureboxEditor()
{
InitializeComponent();
vertexColorBox1.OnColorChanged += OnColorChanged;
topLeftXUD.ValueChanged += texCoordValue_Changed;
topLeftYUD.ValueChanged += texCoordValue_Changed;
topRightXUD.ValueChanged += texCoordValue_Changed;
topRightYUD.ValueChanged += texCoordValue_Changed;
bottomLeftXUD.ValueChanged += texCoordValue_Changed;
bottomLeftYUD.ValueChanged += texCoordValue_Changed;
bottomRightXUD.ValueChanged += texCoordValue_Changed;
bottomRightYUD.ValueChanged += texCoordValue_Changed;
stDropDownPanel1.ResetColors();
stDropDownPanel3.ResetColors();
}
private IPicturePane ActivePane;
private PaneEditor parentEditor;
private bool Loaded = false;
public void LoadPane(IPicturePane pane, PaneEditor paneEditor)
{
parentEditor = paneEditor;
Loaded = false;
ActivePane = pane;
vertexColorBox1.TopLeftColor = pane.ColorTopLeft.Color;
vertexColorBox1.TopRightColor = pane.ColorTopRight.Color;
vertexColorBox1.BottomLeftColor = pane.ColorBottomLeft.Color;
vertexColorBox1.BottomRightColor = pane.ColorBottomRight.Color;
vertexColorBox1.Refresh();
for (int i = 0; i < pane.TexCoords?.Length; i++)
texCoordIndexCB.Items.Add($"TexCoord [{i}]");
if (pane.TexCoords?.Length > 0)
texCoordIndexCB.SelectedIndex = 0;
Loaded = true;
}
private void OnColorChanged(object sender, EventArgs e)
{
if (!Loaded) return;
ActivePane.ColorTopLeft.Color = vertexColorBox1.TopLeftColor;
ActivePane.ColorTopRight.Color = vertexColorBox1.TopRightColor;
ActivePane.ColorBottomLeft.Color = vertexColorBox1.BottomLeftColor;
ActivePane.ColorBottomRight.Color = vertexColorBox1.BottomRightColor;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void texCoordValue_Changed(object sender, EventArgs e)
{
int index = texCoordIndexCB.SelectedIndex;
if (index < 0 || !Loaded) return;
ActivePane.TexCoords[index].TopLeft =
new Syroot.Maths.Vector2F(topLeftXUD.Value, topLeftYUD.Value);
ActivePane.TexCoords[index].TopRight =
new Syroot.Maths.Vector2F(topRightXUD.Value, topRightYUD.Value);
ActivePane.TexCoords[index].BottomLeft =
new Syroot.Maths.Vector2F(bottomLeftXUD.Value, bottomLeftYUD.Value);
ActivePane.TexCoords[index].BottomRight =
new Syroot.Maths.Vector2F(bottomRightXUD.Value, bottomRightYUD.Value);
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void texCoordIndexCB_SelectedIndexChanged(object sender, EventArgs e)
{
int index = texCoordIndexCB.SelectedIndex;
if (index < 0) return;
topLeftXUD.Value = ActivePane.TexCoords[index].TopLeft.X;
topLeftYUD.Value = ActivePane.TexCoords[index].TopLeft.Y;
topRightXUD.Value = ActivePane.TexCoords[index].TopRight.X;
topRightYUD.Value = ActivePane.TexCoords[index].TopRight.Y;
bottomLeftXUD.Value = ActivePane.TexCoords[index].BottomLeft.X;
bottomLeftYUD.Value = ActivePane.TexCoords[index].BottomLeft.Y;
bottomRightXUD.Value = ActivePane.TexCoords[index].BottomRight.X;
bottomRightYUD.Value = ActivePane.TexCoords[index].BottomRight.Y;
}
private void btnResetColors_Click(object sender, EventArgs e)
{
vertexColorBox1.TopLeftColor = Color.White;
vertexColorBox1.TopRightColor = Color.White;
vertexColorBox1.BottomLeftColor = Color.White;
vertexColorBox1.BottomRightColor = Color.White;
vertexColorBox1.Refresh();
}
public override void OnControlClosing() {
vertexColorBox1.DisposeControl();
}
}
}

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="vertexColorBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Toolbox.Library.Forms;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public class EditorPanelBase : STUserControl
{
protected override System.Drawing.Point ScrollToControl(Control activeControl)
{
return DisplayRectangle.Location;
}
}
}

View File

@ -0,0 +1,411 @@
namespace LayoutBXLYT
{
partial class PaneMatBlending
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.stFlowLayoutPanel1 = new Toolbox.Library.Forms.STFlowLayoutPanel();
this.stDropDownPanel1 = new Toolbox.Library.Forms.STDropDownPanel();
this.presetsCB = new Toolbox.Library.Forms.STComboBox();
this.stDropDownPanel2 = new Toolbox.Library.Forms.STDropDownPanel();
this.alphaComparePanel = new Toolbox.Library.Forms.STPanel();
this.alphaSourcCB = new Toolbox.Library.Forms.STComboBox();
this.alphaValueUD = new BarSlider.BarSlider();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.chkAlphaDefaults = new Toolbox.Library.Forms.STCheckBox();
this.stDropDownPanel3 = new Toolbox.Library.Forms.STDropDownPanel();
this.colorBlendPanel = new Toolbox.Library.Forms.STPanel();
this.stCheckBox1 = new Toolbox.Library.Forms.STCheckBox();
this.colorBlendSrcCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel6 = new Toolbox.Library.Forms.STLabel();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.colorBlendLogicCB = new Toolbox.Library.Forms.STComboBox();
this.colorBlendOpCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel5 = new Toolbox.Library.Forms.STLabel();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.colorBlendDestCB = new Toolbox.Library.Forms.STComboBox();
this.chkColorBlendDefaults = new Toolbox.Library.Forms.STCheckBox();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
this.stDropDownPanel2.SuspendLayout();
this.alphaComparePanel.SuspendLayout();
this.stDropDownPanel3.SuspendLayout();
this.colorBlendPanel.SuspendLayout();
this.SuspendLayout();
//
// stFlowLayoutPanel1
//
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel1);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel2);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel3);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(378, 432);
this.stFlowLayoutPanel1.TabIndex = 0;
//
// stDropDownPanel1
//
this.stDropDownPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel1.Controls.Add(this.presetsCB);
this.stDropDownPanel1.ExpandedHeight = 0;
this.stDropDownPanel1.IsExpanded = true;
this.stDropDownPanel1.Location = new System.Drawing.Point(0, 0);
this.stDropDownPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel1.Name = "stDropDownPanel1";
this.stDropDownPanel1.PanelName = "Presets";
this.stDropDownPanel1.PanelValueName = "";
this.stDropDownPanel1.SetIcon = null;
this.stDropDownPanel1.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.Size = new System.Drawing.Size(378, 56);
this.stDropDownPanel1.TabIndex = 0;
//
// presetsCB
//
this.presetsCB.BorderColor = System.Drawing.Color.Empty;
this.presetsCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.presetsCB.ButtonColor = System.Drawing.Color.Empty;
this.presetsCB.FormattingEnabled = true;
this.presetsCB.IsReadOnly = false;
this.presetsCB.Location = new System.Drawing.Point(70, 25);
this.presetsCB.Name = "presetsCB";
this.presetsCB.Size = new System.Drawing.Size(199, 21);
this.presetsCB.TabIndex = 1;
//
// stDropDownPanel2
//
this.stDropDownPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel2.Controls.Add(this.alphaComparePanel);
this.stDropDownPanel2.Controls.Add(this.chkAlphaDefaults);
this.stDropDownPanel2.ExpandedHeight = 0;
this.stDropDownPanel2.IsExpanded = true;
this.stDropDownPanel2.Location = new System.Drawing.Point(0, 56);
this.stDropDownPanel2.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel2.Name = "stDropDownPanel2";
this.stDropDownPanel2.PanelName = "Alpha";
this.stDropDownPanel2.PanelValueName = "";
this.stDropDownPanel2.SetIcon = null;
this.stDropDownPanel2.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.Size = new System.Drawing.Size(378, 123);
this.stDropDownPanel2.TabIndex = 1;
//
// alphaComparePanel
//
this.alphaComparePanel.Controls.Add(this.alphaSourcCB);
this.alphaComparePanel.Controls.Add(this.alphaValueUD);
this.alphaComparePanel.Controls.Add(this.stLabel2);
this.alphaComparePanel.Controls.Add(this.stLabel1);
this.alphaComparePanel.Location = new System.Drawing.Point(3, 51);
this.alphaComparePanel.Name = "alphaComparePanel";
this.alphaComparePanel.Size = new System.Drawing.Size(357, 72);
this.alphaComparePanel.TabIndex = 56;
//
// alphaSourcCB
//
this.alphaSourcCB.BorderColor = System.Drawing.Color.Empty;
this.alphaSourcCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.alphaSourcCB.ButtonColor = System.Drawing.Color.Empty;
this.alphaSourcCB.FormattingEnabled = true;
this.alphaSourcCB.IsReadOnly = false;
this.alphaSourcCB.Location = new System.Drawing.Point(110, 10);
this.alphaSourcCB.Name = "alphaSourcCB";
this.alphaSourcCB.Size = new System.Drawing.Size(161, 21);
this.alphaSourcCB.TabIndex = 2;
this.alphaSourcCB.SelectedIndexChanged += new System.EventHandler(this.alphaSourcCB_SelectedIndexChanged);
//
// alphaValueUD
//
this.alphaValueUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.alphaValueUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.alphaValueUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.alphaValueUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.alphaValueUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.alphaValueUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.alphaValueUD.DataType = null;
this.alphaValueUD.DrawSemitransparentThumb = false;
this.alphaValueUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.alphaValueUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.alphaValueUD.ForeColor = System.Drawing.Color.White;
this.alphaValueUD.IncrementAmount = 0.01F;
this.alphaValueUD.InputName = "X";
this.alphaValueUD.LargeChange = 5F;
this.alphaValueUD.Location = new System.Drawing.Point(110, 37);
this.alphaValueUD.Maximum = 300000F;
this.alphaValueUD.Minimum = -300000F;
this.alphaValueUD.Name = "alphaValueUD";
this.alphaValueUD.Precision = 0.01F;
this.alphaValueUD.ScaleDivisions = 1;
this.alphaValueUD.ScaleSubDivisions = 2;
this.alphaValueUD.ShowDivisionsText = false;
this.alphaValueUD.ShowSmallScale = false;
this.alphaValueUD.Size = new System.Drawing.Size(107, 25);
this.alphaValueUD.SmallChange = 0.01F;
this.alphaValueUD.TabIndex = 53;
this.alphaValueUD.Text = "barSlider2";
this.alphaValueUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.alphaValueUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.alphaValueUD.ThumbSize = new System.Drawing.Size(1, 1);
this.alphaValueUD.TickAdd = 0F;
this.alphaValueUD.TickColor = System.Drawing.Color.White;
this.alphaValueUD.TickDivide = 0F;
this.alphaValueUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.alphaValueUD.UseInterlapsedBar = false;
this.alphaValueUD.Value = 30F;
this.alphaValueUD.ValueChanged += new System.EventHandler(this.alphaValueUD_ValueChanged);
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(7, 44);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(37, 13);
this.stLabel2.TabIndex = 55;
this.stLabel2.Text = "Value:";
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(9, 13);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(82, 13);
this.stLabel1.TabIndex = 54;
this.stLabel1.Text = "Compare Mode:";
//
// chkAlphaDefaults
//
this.chkAlphaDefaults.AutoSize = true;
this.chkAlphaDefaults.Location = new System.Drawing.Point(32, 28);
this.chkAlphaDefaults.Name = "chkAlphaDefaults";
this.chkAlphaDefaults.Size = new System.Drawing.Size(83, 17);
this.chkAlphaDefaults.TabIndex = 1;
this.chkAlphaDefaults.Text = "Use default:";
this.chkAlphaDefaults.UseVisualStyleBackColor = true;
this.chkAlphaDefaults.CheckedChanged += new System.EventHandler(this.chkAlphaDefaults_CheckedChanged);
//
// stDropDownPanel3
//
this.stDropDownPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel3.Controls.Add(this.colorBlendPanel);
this.stDropDownPanel3.Controls.Add(this.chkColorBlendDefaults);
this.stDropDownPanel3.ExpandedHeight = 0;
this.stDropDownPanel3.IsExpanded = true;
this.stDropDownPanel3.Location = new System.Drawing.Point(0, 179);
this.stDropDownPanel3.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel3.Name = "stDropDownPanel3";
this.stDropDownPanel3.PanelName = "Color Blending";
this.stDropDownPanel3.PanelValueName = "";
this.stDropDownPanel3.SetIcon = null;
this.stDropDownPanel3.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.Size = new System.Drawing.Size(378, 212);
this.stDropDownPanel3.TabIndex = 2;
//
// colorBlendPanel
//
this.colorBlendPanel.Controls.Add(this.stCheckBox1);
this.colorBlendPanel.Controls.Add(this.colorBlendSrcCB);
this.colorBlendPanel.Controls.Add(this.stLabel6);
this.colorBlendPanel.Controls.Add(this.stLabel3);
this.colorBlendPanel.Controls.Add(this.colorBlendLogicCB);
this.colorBlendPanel.Controls.Add(this.colorBlendOpCB);
this.colorBlendPanel.Controls.Add(this.stLabel5);
this.colorBlendPanel.Controls.Add(this.stLabel4);
this.colorBlendPanel.Controls.Add(this.colorBlendDestCB);
this.colorBlendPanel.Location = new System.Drawing.Point(3, 55);
this.colorBlendPanel.Name = "colorBlendPanel";
this.colorBlendPanel.Size = new System.Drawing.Size(357, 163);
this.colorBlendPanel.TabIndex = 64;
//
// stCheckBox1
//
this.stCheckBox1.AutoSize = true;
this.stCheckBox1.Location = new System.Drawing.Point(12, 24);
this.stCheckBox1.Name = "stCheckBox1";
this.stCheckBox1.Size = new System.Drawing.Size(61, 17);
this.stCheckBox1.TabIndex = 57;
this.stCheckBox1.Text = "Disable";
this.stCheckBox1.UseVisualStyleBackColor = true;
this.stCheckBox1.Click += new System.EventHandler(this.colorBlend_ValueChanged);
//
// colorBlendSrcCB
//
this.colorBlendSrcCB.BorderColor = System.Drawing.Color.Empty;
this.colorBlendSrcCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.colorBlendSrcCB.ButtonColor = System.Drawing.Color.Empty;
this.colorBlendSrcCB.FormattingEnabled = true;
this.colorBlendSrcCB.IsReadOnly = false;
this.colorBlendSrcCB.Location = new System.Drawing.Point(105, 45);
this.colorBlendSrcCB.Name = "colorBlendSrcCB";
this.colorBlendSrcCB.Size = new System.Drawing.Size(161, 21);
this.colorBlendSrcCB.TabIndex = 55;
this.colorBlendSrcCB.SelectedIndexChanged += new System.EventHandler(this.colorBlend_ValueChanged);
//
// stLabel6
//
this.stLabel6.AutoSize = true;
this.stLabel6.Location = new System.Drawing.Point(9, 129);
this.stLabel6.Name = "stLabel6";
this.stLabel6.Size = new System.Drawing.Size(93, 13);
this.stLabel6.TabIndex = 63;
this.stLabel6.Text = "Logical Operation:";
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(10, 48);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(44, 13);
this.stLabel3.TabIndex = 56;
this.stLabel3.Text = "Source:";
//
// colorBlendLogicCB
//
this.colorBlendLogicCB.BorderColor = System.Drawing.Color.Empty;
this.colorBlendLogicCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.colorBlendLogicCB.ButtonColor = System.Drawing.Color.Empty;
this.colorBlendLogicCB.FormattingEnabled = true;
this.colorBlendLogicCB.IsReadOnly = false;
this.colorBlendLogicCB.Location = new System.Drawing.Point(104, 126);
this.colorBlendLogicCB.Name = "colorBlendLogicCB";
this.colorBlendLogicCB.Size = new System.Drawing.Size(161, 21);
this.colorBlendLogicCB.TabIndex = 62;
this.colorBlendLogicCB.SelectedIndexChanged += new System.EventHandler(this.colorBlend_ValueChanged);
//
// colorBlendOpCB
//
this.colorBlendOpCB.BorderColor = System.Drawing.Color.Empty;
this.colorBlendOpCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.colorBlendOpCB.ButtonColor = System.Drawing.Color.Empty;
this.colorBlendOpCB.FormattingEnabled = true;
this.colorBlendOpCB.IsReadOnly = false;
this.colorBlendOpCB.Location = new System.Drawing.Point(104, 72);
this.colorBlendOpCB.Name = "colorBlendOpCB";
this.colorBlendOpCB.Size = new System.Drawing.Size(161, 21);
this.colorBlendOpCB.TabIndex = 58;
this.colorBlendOpCB.SelectedIndexChanged += new System.EventHandler(this.colorBlend_ValueChanged);
//
// stLabel5
//
this.stLabel5.AutoSize = true;
this.stLabel5.Location = new System.Drawing.Point(10, 102);
this.stLabel5.Name = "stLabel5";
this.stLabel5.Size = new System.Drawing.Size(63, 13);
this.stLabel5.TabIndex = 61;
this.stLabel5.Text = "Destination:";
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(9, 75);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(56, 13);
this.stLabel4.TabIndex = 59;
this.stLabel4.Text = "Operation:";
//
// colorBlendDestCB
//
this.colorBlendDestCB.BorderColor = System.Drawing.Color.Empty;
this.colorBlendDestCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.colorBlendDestCB.ButtonColor = System.Drawing.Color.Empty;
this.colorBlendDestCB.FormattingEnabled = true;
this.colorBlendDestCB.IsReadOnly = false;
this.colorBlendDestCB.Location = new System.Drawing.Point(105, 99);
this.colorBlendDestCB.Name = "colorBlendDestCB";
this.colorBlendDestCB.Size = new System.Drawing.Size(161, 21);
this.colorBlendDestCB.TabIndex = 60;
this.colorBlendDestCB.SelectedIndexChanged += new System.EventHandler(this.colorBlend_ValueChanged);
//
// chkColorBlendDefaults
//
this.chkColorBlendDefaults.AutoSize = true;
this.chkColorBlendDefaults.Location = new System.Drawing.Point(23, 32);
this.chkColorBlendDefaults.Name = "chkColorBlendDefaults";
this.chkColorBlendDefaults.Size = new System.Drawing.Size(83, 17);
this.chkColorBlendDefaults.TabIndex = 2;
this.chkColorBlendDefaults.Text = "Use default:";
this.chkColorBlendDefaults.UseVisualStyleBackColor = true;
this.chkColorBlendDefaults.CheckedChanged += new System.EventHandler(this.chkColorBlendDefaults_CheckedChanged);
//
// PaneMatBlending
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "PaneMatBlending";
this.Size = new System.Drawing.Size(378, 432);
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
this.stDropDownPanel2.ResumeLayout(false);
this.stDropDownPanel2.PerformLayout();
this.alphaComparePanel.ResumeLayout(false);
this.alphaComparePanel.PerformLayout();
this.stDropDownPanel3.ResumeLayout(false);
this.stDropDownPanel3.PerformLayout();
this.colorBlendPanel.ResumeLayout(false);
this.colorBlendPanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STFlowLayoutPanel stFlowLayoutPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel1;
private Toolbox.Library.Forms.STComboBox presetsCB;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel2;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel3;
private Toolbox.Library.Forms.STComboBox alphaSourcCB;
private Toolbox.Library.Forms.STCheckBox chkAlphaDefaults;
private Toolbox.Library.Forms.STCheckBox chkColorBlendDefaults;
private BarSlider.BarSlider alphaValueUD;
private Toolbox.Library.Forms.STComboBox colorBlendSrcCB;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STLabel stLabel5;
private Toolbox.Library.Forms.STComboBox colorBlendDestCB;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STCheckBox stCheckBox1;
private Toolbox.Library.Forms.STLabel stLabel3;
private Toolbox.Library.Forms.STLabel stLabel6;
private Toolbox.Library.Forms.STComboBox colorBlendLogicCB;
private Toolbox.Library.Forms.STComboBox colorBlendOpCB;
private Toolbox.Library.Forms.STPanel colorBlendPanel;
private Toolbox.Library.Forms.STPanel alphaComparePanel;
}
}

View File

@ -0,0 +1,188 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public partial class PaneMatBlending : EditorPanelBase
{
private bool loaded = false;
private PaneEditor ParentEditor;
private BxlytMaterial ActiveMaterial;
public PaneMatBlending()
{
InitializeComponent();
presetsCB.Items.Add("Default (Translucent)");
presetsCB.SelectedIndex = 0;
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel3.ResetColors();
}
public void LoadMaterial(BxlytMaterial material, PaneEditor paneEditor)
{
loaded = false;
ActiveMaterial = material;
ParentEditor = paneEditor;
chkAlphaDefaults.Checked = !material.EnableAlphaCompare;
chkColorBlendDefaults.Checked = !material.EnableBlend;
SetupDefaults();
ReloadBlendValues(material);
loaded = true;
}
private void ReloadBlendValues(BxlytMaterial material)
{
ReloadAlphaCompareValues(material);
ReloadColorValues(material);
}
private void ReloadAlphaCompareValues(BxlytMaterial material)
{
loaded = false;
if (material.AlphaCompare != null && material.EnableAlphaCompare)
{
alphaSourcCB.Bind(typeof(GfxAlphaFunction), material.AlphaCompare, "CompareMode");
alphaValueUD.Value = material.AlphaCompare.Value;
alphaSourcCB.SelectedItem = material.AlphaCompare.CompareMode;
}
loaded = true;
}
private void ReloadColorValues(BxlytMaterial material)
{
loaded = false;
if (material.BlendMode != null && material.EnableBlend)
{
colorBlendSrcCB.Bind(typeof(BxlytBlendMode.GX2BlendFactor), material.BlendMode, "SourceFactor");
colorBlendDestCB.Bind(typeof(BxlytBlendMode.GX2BlendFactor), material.BlendMode, "DestFactor");
colorBlendOpCB.Bind(typeof(BxlytBlendMode.GX2BlendOp), material.BlendMode, "BlendOp");
colorBlendLogicCB.Bind(typeof(BxlytBlendMode.GX2LogicOp), material.BlendMode, "LogicOp");
colorBlendSrcCB.SelectedItem = material.BlendMode.SourceFactor;
colorBlendDestCB.SelectedItem = material.BlendMode.DestFactor;
colorBlendOpCB.SelectedItem = material.BlendMode.BlendOp;
colorBlendLogicCB.SelectedItem = material.BlendMode.LogicOp;
}
loaded = true;
}
private void SetupDefaults()
{
//Setup default values
alphaSourcCB.ResetBind();
alphaSourcCB.Items.Add("Always");
alphaSourcCB.SelectedIndex = 0;
alphaValueUD.Value = 0;
colorBlendSrcCB.ResetBind();
colorBlendSrcCB.Items.Add(BxlytBlendMode.GX2BlendFactor.SourceAlpha);
colorBlendSrcCB.SelectedIndex = 0;
colorBlendDestCB.ResetBind();
colorBlendDestCB.Items.Add(BxlytBlendMode.GX2BlendFactor.SourceInvAlpha);
colorBlendDestCB.SelectedIndex = 0;
colorBlendOpCB.ResetBind();
colorBlendOpCB.Items.Add(BxlytBlendMode.GX2BlendOp.Add);
colorBlendOpCB.SelectedIndex = 0;
colorBlendLogicCB.ResetBind();
colorBlendLogicCB.Items.Add(BxlytBlendMode.GX2LogicOp.Disable);
colorBlendLogicCB.SelectedIndex = 0;
alphaSourcCB.SelectedIndex = 0;
}
private void chkAlphaDefaults_CheckedChanged(object sender, EventArgs e)
{
if (chkAlphaDefaults.Checked)
{
alphaComparePanel.Hide();
stDropDownPanel2.Height -= alphaComparePanel.Height;
}
else
{
alphaComparePanel.Show();
stDropDownPanel2.Height += alphaComparePanel.Height;
if (ActiveMaterial.AlphaCompare == null && loaded)
ActiveMaterial.AlphaCompare = new BxlytAlphaCompare();
}
ActiveMaterial.EnableAlphaCompare = !chkAlphaDefaults.Checked;
if (loaded)
{
ReloadAlphaCompareValues(ActiveMaterial);
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
}
private void chkColorBlendDefaults_CheckedChanged(object sender, EventArgs e)
{
if (chkColorBlendDefaults.Checked)
{
colorBlendPanel.Hide();
stDropDownPanel3.Height -= colorBlendPanel.Height;
}
else
{
colorBlendPanel.Show();
stDropDownPanel3.Height += colorBlendPanel.Height;
if (ActiveMaterial.BlendMode == null && loaded)
ActiveMaterial.BlendMode = new BxlytBlendMode();
}
ActiveMaterial.EnableBlend = !chkColorBlendDefaults.Checked;
if (loaded)
{
ReloadColorValues(ActiveMaterial);
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
}
private void alphaSourcCB_SelectedIndexChanged(object sender, EventArgs e) {
if (!loaded || ActiveMaterial.AlphaCompare == null || !ActiveMaterial.EnableAlphaCompare)
return;
ActiveMaterial.AlphaCompare.CompareMode = (GfxAlphaFunction)alphaSourcCB.SelectedItem;
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void alphaValueUD_ValueChanged(object sender, EventArgs e) {
if (!loaded || ActiveMaterial.AlphaCompare == null || !ActiveMaterial.EnableAlphaCompare)
return;
ActiveMaterial.AlphaCompare.Value = alphaValueUD.Value;
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void colorBlend_ValueChanged(object sender, EventArgs e) {
if (!loaded || ActiveMaterial.BlendMode == null || !ActiveMaterial.EnableBlend)
return;
ActiveMaterial.BlendMode.SourceFactor = (BxlytBlendMode.GX2BlendFactor)colorBlendSrcCB.SelectedItem;
ActiveMaterial.BlendMode.DestFactor = (BxlytBlendMode.GX2BlendFactor)colorBlendDestCB.SelectedItem;
ActiveMaterial.BlendMode.BlendOp = (BxlytBlendMode.GX2BlendOp)colorBlendOpCB.SelectedItem;
ActiveMaterial.BlendMode.LogicOp = (BxlytBlendMode.GX2LogicOp)colorBlendLogicCB.SelectedItem;
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,115 @@
namespace LayoutBXLYT
{
partial class PaneMatColorEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PaneMatColorEditor));
this.chkAlphaInterpolation = new Toolbox.Library.Forms.STCheckBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.whiteColorPB = new Toolbox.Library.Forms.ColorAlphaBox();
this.blackColorBP = new Toolbox.Library.Forms.ColorAlphaBox();
this.SuspendLayout();
//
// chkAlphaInterpolation
//
this.chkAlphaInterpolation.AutoSize = true;
this.chkAlphaInterpolation.Location = new System.Drawing.Point(16, 13);
this.chkAlphaInterpolation.Name = "chkAlphaInterpolation";
this.chkAlphaInterpolation.Size = new System.Drawing.Size(147, 17);
this.chkAlphaInterpolation.TabIndex = 0;
this.chkAlphaInterpolation.Text = "Threshold Alpha Blending";
this.chkAlphaInterpolation.UseVisualStyleBackColor = true;
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(131, 55);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(62, 13);
this.stLabel1.TabIndex = 2;
this.stLabel1.Text = "White Color";
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(132, 103);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(61, 13);
this.stLabel2.TabIndex = 4;
this.stLabel2.Text = "Black Color";
//
// whiteColorPB
//
this.whiteColorPB.BackColor = System.Drawing.Color.Transparent;
this.whiteColorPB.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("whiteColorPB.BackgroundImage")));
this.whiteColorPB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.whiteColorPB.Color = System.Drawing.Color.Empty;
this.whiteColorPB.Location = new System.Drawing.Point(16, 36);
this.whiteColorPB.Name = "whiteColorPB";
this.whiteColorPB.Size = new System.Drawing.Size(90, 45);
this.whiteColorPB.TabIndex = 5;
this.whiteColorPB.Click += new System.EventHandler(this.whiteColorPB_Click);
//
// blackColorBP
//
this.blackColorBP.BackColor = System.Drawing.Color.Transparent;
this.blackColorBP.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("blackColorBP.BackgroundImage")));
this.blackColorBP.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.blackColorBP.Color = System.Drawing.Color.Empty;
this.blackColorBP.Location = new System.Drawing.Point(16, 87);
this.blackColorBP.Name = "blackColorBP";
this.blackColorBP.Size = new System.Drawing.Size(90, 45);
this.blackColorBP.TabIndex = 6;
this.blackColorBP.Click += new System.EventHandler(this.blackColorBP_Click);
//
// PaneMatColorEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.blackColorBP);
this.Controls.Add(this.whiteColorPB);
this.Controls.Add(this.stLabel2);
this.Controls.Add(this.stLabel1);
this.Controls.Add(this.chkAlphaInterpolation);
this.Name = "PaneMatColorEditor";
this.Size = new System.Drawing.Size(303, 313);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Toolbox.Library.Forms.STCheckBox chkAlphaInterpolation;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.ColorAlphaBox whiteColorPB;
private Toolbox.Library.Forms.ColorAlphaBox blackColorBP;
}
}

View File

@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class PaneMatColorEditor : EditorPanelBase
{
private PaneEditor ParentEditor;
private BxlytMaterial ActiveMaterial;
public PaneMatColorEditor()
{
InitializeComponent();
whiteColorPB.DisplayAlphaSolid = true;
blackColorBP.DisplayAlphaSolid = true;
}
public void LoadMaterial(BxlytMaterial material, PaneEditor paneEditor)
{
ActiveMaterial = material;
ParentEditor = paneEditor;
whiteColorPB.Color = material.WhiteColor.Color;
blackColorBP.Color = material.BlackColor.Color;
chkAlphaInterpolation.Bind(material, "ThresholdingAlphaInterpolation");
}
private STColorDialog colorDlg;
private bool dialogActive = false;
private void whiteColorPB_Click(object sender, EventArgs e)
{
if (dialogActive)
{
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(whiteColorPB.Color);
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.ColorChanged += delegate
{
whiteColorPB.Color = colorDlg.NewColor;
ActiveMaterial.WhiteColor.Color = colorDlg.NewColor;
ParentEditor.PropertyChanged?.Invoke(sender, e);
};
colorDlg.Show();
}
private void blackColorBP_Click(object sender, EventArgs e)
{
if (dialogActive)
{
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(blackColorBP.Color);
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.ColorChanged += delegate
{
blackColorBP.Color = colorDlg.NewColor;
ActiveMaterial.BlackColor.Color = colorDlg.NewColor;
ParentEditor.PropertyChanged?.Invoke(sender, e);
};
colorDlg.Show();
}
}
}

View File

@ -0,0 +1,535 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="whiteColorPB.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
<data name="blackColorBP.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -0,0 +1,37 @@
namespace LayoutBXLYT
{
partial class PaneMatTextureCombiner
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}
#endregion
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public partial class PaneMatTextureCombiner : EditorPanelBase
{
private PaneEditor ParentEditor;
private BxlytMaterial ActiveMaterial;
public PaneMatTextureCombiner()
{
InitializeComponent();
}
public void LoadMaterial(BxlytMaterial material, PaneEditor paneEditor)
{
ActiveMaterial = material;
ParentEditor = paneEditor;
}
}
}

View File

@ -0,0 +1,642 @@
namespace LayoutBXLYT
{
partial class PaneMatTextureMapsEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PaneMatTextureMapsEditor));
this.addbtn = new Toolbox.Library.Forms.STButton();
this.removebtn = new Toolbox.Library.Forms.STButton();
this.editBtn = new Toolbox.Library.Forms.STButton();
this.arrowLeft = new Toolbox.Library.Forms.STButton();
this.arrowRight = new Toolbox.Library.Forms.STButton();
this.stPanel1 = new LayoutBXLYT.ImagePanel();
this.stPanel2 = new LayoutBXLYT.ImagePanel();
this.stPanel3 = new LayoutBXLYT.ImagePanel();
this.pictureBoxCustom1 = new Toolbox.Library.Forms.PictureBoxCustom();
this.stFlowLayoutPanel1 = new Toolbox.Library.Forms.STFlowLayoutPanel();
this.stDropDownPanel1 = new Toolbox.Library.Forms.STDropDownPanel();
this.stDropDownPanel2 = new Toolbox.Library.Forms.STDropDownPanel();
this.shrinkCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.expandCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.wrapModeVCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.wrapModeUCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.stDropDownPanel3 = new Toolbox.Library.Forms.STDropDownPanel();
this.rotUD = new BarSlider.BarSlider();
this.transYUD = new BarSlider.BarSlider();
this.transXUD = new BarSlider.BarSlider();
this.stLabel7 = new Toolbox.Library.Forms.STLabel();
this.stLabel6 = new Toolbox.Library.Forms.STLabel();
this.stLabel5 = new Toolbox.Library.Forms.STLabel();
this.scaleYUD = new BarSlider.BarSlider();
this.scaleXUD = new BarSlider.BarSlider();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).BeginInit();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
this.stDropDownPanel2.SuspendLayout();
this.stDropDownPanel3.SuspendLayout();
this.SuspendLayout();
//
// addbtn
//
this.addbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.addbtn.Location = new System.Drawing.Point(14, 28);
this.addbtn.Name = "addbtn";
this.addbtn.Size = new System.Drawing.Size(59, 23);
this.addbtn.TabIndex = 1;
this.addbtn.Text = "Add";
this.addbtn.UseVisualStyleBackColor = false;
this.addbtn.Click += new System.EventHandler(this.addbtn_Click);
//
// removebtn
//
this.removebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.removebtn.Location = new System.Drawing.Point(14, 86);
this.removebtn.Name = "removebtn";
this.removebtn.Size = new System.Drawing.Size(59, 23);
this.removebtn.TabIndex = 2;
this.removebtn.Text = "Remove";
this.removebtn.UseVisualStyleBackColor = false;
this.removebtn.Click += new System.EventHandler(this.removebtn_Click);
//
// editBtn
//
this.editBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.editBtn.Location = new System.Drawing.Point(14, 57);
this.editBtn.Name = "editBtn";
this.editBtn.Size = new System.Drawing.Size(59, 23);
this.editBtn.TabIndex = 3;
this.editBtn.Text = "Edit";
this.editBtn.UseVisualStyleBackColor = false;
this.editBtn.Click += new System.EventHandler(this.editBtn_Click);
//
// arrowLeft
//
this.arrowLeft.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.arrowLeft.Location = new System.Drawing.Point(82, 28);
this.arrowLeft.Name = "arrowLeft";
this.arrowLeft.Size = new System.Drawing.Size(24, 23);
this.arrowLeft.TabIndex = 4;
this.arrowLeft.Text = "<";
this.arrowLeft.UseVisualStyleBackColor = false;
//
// arrowRight
//
this.arrowRight.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.arrowRight.Location = new System.Drawing.Point(112, 28);
this.arrowRight.Name = "arrowRight";
this.arrowRight.Size = new System.Drawing.Size(24, 23);
this.arrowRight.TabIndex = 5;
this.arrowRight.Text = ">";
this.arrowRight.UseVisualStyleBackColor = false;
//
// stPanel1
//
this.stPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.stPanel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stPanel1.Location = new System.Drawing.Point(82, 57);
this.stPanel1.Name = "stPanel1";
this.stPanel1.Size = new System.Drawing.Size(56, 55);
this.stPanel1.TabIndex = 0;
this.stPanel1.Click += new System.EventHandler(this.stPanel1_Click);
//
// stPanel2
//
this.stPanel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.stPanel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stPanel2.Location = new System.Drawing.Point(147, 57);
this.stPanel2.Name = "stPanel2";
this.stPanel2.Size = new System.Drawing.Size(56, 55);
this.stPanel2.TabIndex = 1;
this.stPanel2.Click += new System.EventHandler(this.stPanel2_Click);
//
// stPanel3
//
this.stPanel3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.stPanel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stPanel3.Location = new System.Drawing.Point(209, 57);
this.stPanel3.Name = "stPanel3";
this.stPanel3.Size = new System.Drawing.Size(56, 55);
this.stPanel3.TabIndex = 2;
this.stPanel3.Click += new System.EventHandler(this.stPanel3_Click);
//
// pictureBoxCustom1
//
this.pictureBoxCustom1.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxCustom1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBoxCustom1.BackgroundImage")));
this.pictureBoxCustom1.Location = new System.Drawing.Point(14, 30);
this.pictureBoxCustom1.Name = "pictureBoxCustom1";
this.pictureBoxCustom1.Size = new System.Drawing.Size(154, 172);
this.pictureBoxCustom1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBoxCustom1.TabIndex = 6;
this.pictureBoxCustom1.TabStop = false;
//
// stFlowLayoutPanel1
//
this.stFlowLayoutPanel1.AutoScroll = true;
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel1);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel2);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel3);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(408, 668);
this.stFlowLayoutPanel1.TabIndex = 7;
//
// stDropDownPanel1
//
this.stDropDownPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel1.Controls.Add(this.addbtn);
this.stDropDownPanel1.Controls.Add(this.stPanel3);
this.stDropDownPanel1.Controls.Add(this.stPanel1);
this.stDropDownPanel1.Controls.Add(this.stPanel2);
this.stDropDownPanel1.Controls.Add(this.removebtn);
this.stDropDownPanel1.Controls.Add(this.arrowRight);
this.stDropDownPanel1.Controls.Add(this.editBtn);
this.stDropDownPanel1.Controls.Add(this.arrowLeft);
this.stDropDownPanel1.ExpandedHeight = 0;
this.stDropDownPanel1.IsExpanded = true;
this.stDropDownPanel1.Location = new System.Drawing.Point(0, 0);
this.stDropDownPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel1.Name = "stDropDownPanel1";
this.stDropDownPanel1.PanelName = "Textures";
this.stDropDownPanel1.PanelValueName = "";
this.stDropDownPanel1.SetIcon = null;
this.stDropDownPanel1.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.Size = new System.Drawing.Size(408, 136);
this.stDropDownPanel1.TabIndex = 0;
//
// stDropDownPanel2
//
this.stDropDownPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel2.Controls.Add(this.shrinkCB);
this.stDropDownPanel2.Controls.Add(this.stLabel3);
this.stDropDownPanel2.Controls.Add(this.expandCB);
this.stDropDownPanel2.Controls.Add(this.stLabel4);
this.stDropDownPanel2.Controls.Add(this.wrapModeVCB);
this.stDropDownPanel2.Controls.Add(this.stLabel2);
this.stDropDownPanel2.Controls.Add(this.wrapModeUCB);
this.stDropDownPanel2.Controls.Add(this.stLabel1);
this.stDropDownPanel2.Controls.Add(this.pictureBoxCustom1);
this.stDropDownPanel2.ExpandedHeight = 0;
this.stDropDownPanel2.IsExpanded = true;
this.stDropDownPanel2.Location = new System.Drawing.Point(0, 136);
this.stDropDownPanel2.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel2.Name = "stDropDownPanel2";
this.stDropDownPanel2.PanelName = "Texture Settings";
this.stDropDownPanel2.PanelValueName = "";
this.stDropDownPanel2.SetIcon = null;
this.stDropDownPanel2.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.Size = new System.Drawing.Size(408, 214);
this.stDropDownPanel2.TabIndex = 1;
//
// shrinkCB
//
this.shrinkCB.BorderColor = System.Drawing.Color.Empty;
this.shrinkCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.shrinkCB.ButtonColor = System.Drawing.Color.Empty;
this.shrinkCB.FormattingEnabled = true;
this.shrinkCB.IsReadOnly = false;
this.shrinkCB.Location = new System.Drawing.Point(263, 131);
this.shrinkCB.Name = "shrinkCB";
this.shrinkCB.Size = new System.Drawing.Size(142, 21);
this.shrinkCB.TabIndex = 14;
this.shrinkCB.SelectedIndexChanged += new System.EventHandler(this.textureSettingsCB_SelectedIndexChanged);
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(183, 134);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(65, 13);
this.stLabel3.TabIndex = 13;
this.stLabel3.Text = "Filter Shrink:";
//
// expandCB
//
this.expandCB.BorderColor = System.Drawing.Color.Empty;
this.expandCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.expandCB.ButtonColor = System.Drawing.Color.Empty;
this.expandCB.FormattingEnabled = true;
this.expandCB.IsReadOnly = false;
this.expandCB.Location = new System.Drawing.Point(263, 104);
this.expandCB.Name = "expandCB";
this.expandCB.Size = new System.Drawing.Size(142, 21);
this.expandCB.TabIndex = 12;
this.expandCB.SelectedIndexChanged += new System.EventHandler(this.textureSettingsCB_SelectedIndexChanged);
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(183, 107);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(71, 13);
this.stLabel4.TabIndex = 11;
this.stLabel4.Text = "Filter Expand:";
//
// wrapModeVCB
//
this.wrapModeVCB.BorderColor = System.Drawing.Color.Empty;
this.wrapModeVCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.wrapModeVCB.ButtonColor = System.Drawing.Color.Empty;
this.wrapModeVCB.FormattingEnabled = true;
this.wrapModeVCB.IsReadOnly = false;
this.wrapModeVCB.Location = new System.Drawing.Point(263, 66);
this.wrapModeVCB.Name = "wrapModeVCB";
this.wrapModeVCB.Size = new System.Drawing.Size(142, 21);
this.wrapModeVCB.TabIndex = 10;
this.wrapModeVCB.SelectedIndexChanged += new System.EventHandler(this.textureSettingsCB_SelectedIndexChanged);
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(183, 69);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(76, 13);
this.stLabel2.TabIndex = 9;
this.stLabel2.Text = "Wrap Mode V:";
//
// wrapModeUCB
//
this.wrapModeUCB.BorderColor = System.Drawing.Color.Empty;
this.wrapModeUCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.wrapModeUCB.ButtonColor = System.Drawing.Color.Empty;
this.wrapModeUCB.FormattingEnabled = true;
this.wrapModeUCB.IsReadOnly = false;
this.wrapModeUCB.Location = new System.Drawing.Point(263, 39);
this.wrapModeUCB.Name = "wrapModeUCB";
this.wrapModeUCB.Size = new System.Drawing.Size(142, 21);
this.wrapModeUCB.TabIndex = 8;
this.wrapModeUCB.SelectedIndexChanged += new System.EventHandler(this.textureSettingsCB_SelectedIndexChanged);
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(183, 42);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(77, 13);
this.stLabel1.TabIndex = 7;
this.stLabel1.Text = "Wrap Mode U:";
//
// stDropDownPanel3
//
this.stDropDownPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel3.Controls.Add(this.rotUD);
this.stDropDownPanel3.Controls.Add(this.transYUD);
this.stDropDownPanel3.Controls.Add(this.transXUD);
this.stDropDownPanel3.Controls.Add(this.stLabel7);
this.stDropDownPanel3.Controls.Add(this.stLabel6);
this.stDropDownPanel3.Controls.Add(this.stLabel5);
this.stDropDownPanel3.Controls.Add(this.scaleYUD);
this.stDropDownPanel3.Controls.Add(this.scaleXUD);
this.stDropDownPanel3.ExpandedHeight = 0;
this.stDropDownPanel3.IsExpanded = true;
this.stDropDownPanel3.Location = new System.Drawing.Point(0, 350);
this.stDropDownPanel3.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel3.Name = "stDropDownPanel3";
this.stDropDownPanel3.PanelName = "Texture Transform";
this.stDropDownPanel3.PanelValueName = "";
this.stDropDownPanel3.SetIcon = null;
this.stDropDownPanel3.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.Size = new System.Drawing.Size(408, 150);
this.stDropDownPanel3.TabIndex = 2;
//
// rotUD
//
this.rotUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.rotUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.rotUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.rotUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.rotUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.rotUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.rotUD.DataType = null;
this.rotUD.DrawSemitransparentThumb = false;
this.rotUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.rotUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.rotUD.ForeColor = System.Drawing.Color.White;
this.rotUD.IncrementAmount = 0.01F;
this.rotUD.InputName = "";
this.rotUD.LargeChange = 5F;
this.rotUD.Location = new System.Drawing.Point(86, 73);
this.rotUD.Maximum = 300000F;
this.rotUD.Minimum = -300000F;
this.rotUD.Name = "rotUD";
this.rotUD.Precision = 0.01F;
this.rotUD.ScaleDivisions = 1;
this.rotUD.ScaleSubDivisions = 2;
this.rotUD.ShowDivisionsText = false;
this.rotUD.ShowSmallScale = false;
this.rotUD.Size = new System.Drawing.Size(107, 25);
this.rotUD.SmallChange = 0.01F;
this.rotUD.TabIndex = 58;
this.rotUD.Text = "barSlider4";
this.rotUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.rotUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.rotUD.ThumbSize = new System.Drawing.Size(1, 1);
this.rotUD.TickAdd = 0F;
this.rotUD.TickColor = System.Drawing.Color.White;
this.rotUD.TickDivide = 0F;
this.rotUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.rotUD.UseInterlapsedBar = false;
this.rotUD.Value = 30F;
this.rotUD.ValueChanged += new System.EventHandler(this.transformUV_ValueChanged);
//
// transYUD
//
this.transYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.transYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.transYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.transYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.transYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.transYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.transYUD.DataType = null;
this.transYUD.DrawSemitransparentThumb = false;
this.transYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.transYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.transYUD.ForeColor = System.Drawing.Color.White;
this.transYUD.IncrementAmount = 0.01F;
this.transYUD.InputName = "V";
this.transYUD.LargeChange = 5F;
this.transYUD.Location = new System.Drawing.Point(199, 104);
this.transYUD.Maximum = 300000F;
this.transYUD.Minimum = -300000F;
this.transYUD.Name = "transYUD";
this.transYUD.Precision = 0.01F;
this.transYUD.ScaleDivisions = 1;
this.transYUD.ScaleSubDivisions = 2;
this.transYUD.ShowDivisionsText = false;
this.transYUD.ShowSmallScale = false;
this.transYUD.Size = new System.Drawing.Size(107, 25);
this.transYUD.SmallChange = 0.01F;
this.transYUD.TabIndex = 57;
this.transYUD.Text = "barSlider2";
this.transYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.transYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.transYUD.TickAdd = 0F;
this.transYUD.TickColor = System.Drawing.Color.White;
this.transYUD.TickDivide = 0F;
this.transYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.transYUD.UseInterlapsedBar = false;
this.transYUD.Value = 30F;
this.transYUD.ValueChanged += new System.EventHandler(this.transformUV_ValueChanged);
//
// transXUD
//
this.transXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.transXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.transXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.transXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.transXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.transXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.transXUD.DataType = null;
this.transXUD.DrawSemitransparentThumb = false;
this.transXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.transXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.transXUD.ForeColor = System.Drawing.Color.White;
this.transXUD.IncrementAmount = 0.01F;
this.transXUD.InputName = "U";
this.transXUD.LargeChange = 5F;
this.transXUD.Location = new System.Drawing.Point(86, 104);
this.transXUD.Maximum = 300000F;
this.transXUD.Minimum = -300000F;
this.transXUD.Name = "transXUD";
this.transXUD.Precision = 0.01F;
this.transXUD.ScaleDivisions = 1;
this.transXUD.ScaleSubDivisions = 2;
this.transXUD.ShowDivisionsText = false;
this.transXUD.ShowSmallScale = false;
this.transXUD.Size = new System.Drawing.Size(107, 25);
this.transXUD.SmallChange = 0.01F;
this.transXUD.TabIndex = 56;
this.transXUD.Text = "barSlider2";
this.transXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.transXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.transXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.transXUD.TickAdd = 0F;
this.transXUD.TickColor = System.Drawing.Color.White;
this.transXUD.TickDivide = 0F;
this.transXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.transXUD.UseInterlapsedBar = false;
this.transXUD.Value = 30F;
this.transXUD.ValueChanged += new System.EventHandler(this.transformUV_ValueChanged);
//
// stLabel7
//
this.stLabel7.AutoSize = true;
this.stLabel7.Location = new System.Drawing.Point(23, 109);
this.stLabel7.Name = "stLabel7";
this.stLabel7.Size = new System.Drawing.Size(54, 13);
this.stLabel7.TabIndex = 55;
this.stLabel7.Text = "Translate:";
//
// stLabel6
//
this.stLabel6.AutoSize = true;
this.stLabel6.Location = new System.Drawing.Point(22, 80);
this.stLabel6.Name = "stLabel6";
this.stLabel6.Size = new System.Drawing.Size(42, 13);
this.stLabel6.TabIndex = 54;
this.stLabel6.Text = "Rotate:";
//
// stLabel5
//
this.stLabel5.AutoSize = true;
this.stLabel5.Location = new System.Drawing.Point(22, 47);
this.stLabel5.Name = "stLabel5";
this.stLabel5.Size = new System.Drawing.Size(37, 13);
this.stLabel5.TabIndex = 53;
this.stLabel5.Text = "Scale:";
//
// scaleYUD
//
this.scaleYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.scaleYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.scaleYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.scaleYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.scaleYUD.DataType = null;
this.scaleYUD.DrawSemitransparentThumb = false;
this.scaleYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.scaleYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.scaleYUD.ForeColor = System.Drawing.Color.White;
this.scaleYUD.IncrementAmount = 0.01F;
this.scaleYUD.InputName = "V";
this.scaleYUD.LargeChange = 5F;
this.scaleYUD.Location = new System.Drawing.Point(199, 42);
this.scaleYUD.Maximum = 300000F;
this.scaleYUD.Minimum = -300000F;
this.scaleYUD.Name = "scaleYUD";
this.scaleYUD.Precision = 0.01F;
this.scaleYUD.ScaleDivisions = 1;
this.scaleYUD.ScaleSubDivisions = 2;
this.scaleYUD.ShowDivisionsText = false;
this.scaleYUD.ShowSmallScale = false;
this.scaleYUD.Size = new System.Drawing.Size(107, 25);
this.scaleYUD.SmallChange = 0.01F;
this.scaleYUD.TabIndex = 52;
this.scaleYUD.Text = "barSlider2";
this.scaleYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.scaleYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.scaleYUD.TickAdd = 0F;
this.scaleYUD.TickColor = System.Drawing.Color.White;
this.scaleYUD.TickDivide = 0F;
this.scaleYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.scaleYUD.UseInterlapsedBar = false;
this.scaleYUD.Value = 30F;
this.scaleYUD.ValueChanged += new System.EventHandler(this.transformUV_ValueChanged);
//
// scaleXUD
//
this.scaleXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.scaleXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.scaleXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.scaleXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.scaleXUD.DataType = null;
this.scaleXUD.DrawSemitransparentThumb = false;
this.scaleXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.scaleXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.scaleXUD.ForeColor = System.Drawing.Color.White;
this.scaleXUD.IncrementAmount = 0.01F;
this.scaleXUD.InputName = "U";
this.scaleXUD.LargeChange = 5F;
this.scaleXUD.Location = new System.Drawing.Point(86, 42);
this.scaleXUD.Maximum = 300000F;
this.scaleXUD.Minimum = -300000F;
this.scaleXUD.Name = "scaleXUD";
this.scaleXUD.Precision = 0.01F;
this.scaleXUD.ScaleDivisions = 1;
this.scaleXUD.ScaleSubDivisions = 2;
this.scaleXUD.ShowDivisionsText = false;
this.scaleXUD.ShowSmallScale = false;
this.scaleXUD.Size = new System.Drawing.Size(107, 25);
this.scaleXUD.SmallChange = 0.01F;
this.scaleXUD.TabIndex = 51;
this.scaleXUD.Text = "barSlider2";
this.scaleXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.scaleXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.scaleXUD.TickAdd = 0F;
this.scaleXUD.TickColor = System.Drawing.Color.White;
this.scaleXUD.TickDivide = 0F;
this.scaleXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.scaleXUD.UseInterlapsedBar = false;
this.scaleXUD.Value = 30F;
this.scaleXUD.ValueChanged += new System.EventHandler(this.transformUV_ValueChanged);
//
// PaneMatTextureMapsEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "PaneMatTextureMapsEditor";
this.Size = new System.Drawing.Size(408, 668);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).EndInit();
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
this.stDropDownPanel2.ResumeLayout(false);
this.stDropDownPanel2.PerformLayout();
this.stDropDownPanel3.ResumeLayout(false);
this.stDropDownPanel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STButton addbtn;
private Toolbox.Library.Forms.STButton removebtn;
private Toolbox.Library.Forms.STButton editBtn;
private Toolbox.Library.Forms.STButton arrowLeft;
private Toolbox.Library.Forms.STButton arrowRight;
private LayoutBXLYT.ImagePanel stPanel1;
private LayoutBXLYT.ImagePanel stPanel2;
private LayoutBXLYT.ImagePanel stPanel3;
private Toolbox.Library.Forms.PictureBoxCustom pictureBoxCustom1;
private Toolbox.Library.Forms.STFlowLayoutPanel stFlowLayoutPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel2;
private Toolbox.Library.Forms.STLabel stLabel3;
private Toolbox.Library.Forms.STComboBox expandCB;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STComboBox wrapModeVCB;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.STComboBox wrapModeUCB;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STComboBox shrinkCB;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel3;
private BarSlider.BarSlider rotUD;
private BarSlider.BarSlider transYUD;
private BarSlider.BarSlider transXUD;
private Toolbox.Library.Forms.STLabel stLabel7;
private Toolbox.Library.Forms.STLabel stLabel6;
private Toolbox.Library.Forms.STLabel stLabel5;
private BarSlider.BarSlider scaleYUD;
private BarSlider.BarSlider scaleXUD;
}
}

View File

@ -0,0 +1,416 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library;
using Toolbox.Library.Forms;
using Toolbox.Library.IO;
namespace LayoutBXLYT
{
public partial class PaneMatTextureMapsEditor : EditorPanelBase
{
public EventHandler OnTextureSelected;
public PaneMatTextureMapsEditor()
{
InitializeComponent();
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel3.ResetColors();
wrapModeUCB.SelectedValueChanged += PropertyChanged;
wrapModeVCB.SelectedValueChanged += PropertyChanged;
shrinkCB.SelectedValueChanged += PropertyChanged;
expandCB.SelectedValueChanged += PropertyChanged;
OnTextureSelected += TextureSelectedIndexChanged;
}
private Dictionary<string, STGenericTexture> textureList;
private PaneEditor ParentEditor;
private BxlytMaterial ActiveMaterial;
private List<Bitmap> Images = new List<Bitmap>();
private int SelectedIndex = -1;
private bool Loaded = false;
public void LoadMaterial(BxlytMaterial material, PaneEditor paneEditor,
Dictionary<string, STGenericTexture> textures)
{
textureList = textures;
ParentEditor = paneEditor;
ActiveMaterial = material;
ReloadTexture();
}
private void ReloadTexture()
{
Loaded = false;
ResetImagePanels();
Images.Clear();
for (int i = 0; i < ActiveMaterial.TextureMaps?.Length; i++)
{
string name = ActiveMaterial.TextureMaps[i].Name;
Bitmap bitmap = FirstPlugin.Properties.Resources.TextureError;
if (textureList.ContainsKey(name))
bitmap = textureList[name].GetBitmap();
Images.Add(bitmap);
if (i == 0) SetPanel(stPanel1, bitmap);
if (i == 1) SetPanel(stPanel2, bitmap);
if (i == 2) SetPanel(stPanel3, bitmap);
}
ReloadButtons();
Loaded = true;
SelectImage(0);
}
private void ReloadButtons()
{
if (ActiveMaterial.TextureMaps.Length == 0)
{
editBtn.Enabled = false;
removebtn.Enabled = false;
}
else if (ActiveMaterial.TextureMaps.Length == 3)
{
editBtn.Enabled = true;
removebtn.Enabled = true;
addbtn.Enabled = false;
}
else
{
editBtn.Enabled = true;
removebtn.Enabled = true;
addbtn.Enabled = true;
}
}
private void SelectImage(int index)
{
if (index == 0) {
stPanel1_Click(stPanel1, EventArgs.Empty);
stPanel1.Refresh();
}
if (index == 1) {
stPanel2_Click(stPanel2, EventArgs.Empty);
stPanel2.Refresh();
}
if (index == 2) {
stPanel3_Click(stPanel3, EventArgs.Empty);
stPanel3.Refresh();
}
}
private void ResetImagePanels()
{
pictureBoxCustom1.Image?.Dispose();
pictureBoxCustom1.Image = null;
stPanel1.ResetImage();
stPanel2.ResetImage();
stPanel3.ResetImage();
stPanel1.Enabled = false;
stPanel2.Enabled = false;
stPanel3.Enabled = false;
stPanel1.BorderColor = FormThemes.BaseTheme.DisabledBorderColor;
stPanel2.BorderColor = FormThemes.BaseTheme.DisabledBorderColor;
stPanel3.BorderColor = FormThemes.BaseTheme.DisabledBorderColor;
wrapModeUCB.ResetBind();
wrapModeVCB.ResetBind();
shrinkCB.ResetBind();
expandCB.ResetBind();
ResetUVTransformUI();
}
public override void OnControlClosing()
{
foreach (var img in Images)
img.Dispose();
Images.Clear();
}
private bool texLoaded = false;
private void TextureSelectedIndexChanged(object sender, EventArgs e)
{
if (!Loaded) return;
texLoaded = false;
var texMap = ActiveMaterial.TextureMaps[SelectedIndex];
pictureBoxCustom1.Image = Images[SelectedIndex];
wrapModeUCB.Bind(typeof(WrapMode), texMap, "WrapModeU");
wrapModeVCB.Bind(typeof(WrapMode), texMap, "WrapModeV");
expandCB.Bind(typeof(FilterMode), texMap, "MaxFilterMode");
shrinkCB.Bind(typeof(FilterMode), texMap, "MinFilterMode");
wrapModeUCB.SelectedItem = texMap.WrapModeU;
wrapModeVCB.SelectedItem = texMap.WrapModeV;
expandCB.SelectedItem = texMap.MaxFilterMode;
shrinkCB.SelectedItem = texMap.MinFilterMode;
if (ActiveMaterial.TextureTransforms.Length > SelectedIndex)
{
var transform = ActiveMaterial.TextureTransforms[SelectedIndex];
scaleXUD.Value = transform.Scale.X;
scaleYUD.Value = transform.Scale.Y;
rotUD.Value = transform.Rotate;
transXUD.Value = transform.Translate.X;
transYUD.Value = transform.Translate.Y;
}
else
ResetUVTransformUI();
texLoaded = true;
}
private void ResetUVTransformUI()
{
texLoaded = false;
scaleXUD.Value = 1.0f;
scaleYUD.Value = 1.0f;
rotUD.Value = 0.0f;
transXUD.Value = 0.0f;
transYUD.Value = 0.0f;
texLoaded = true;
}
private void PropertyChanged(object sender, EventArgs e) {
if (!Loaded || !texLoaded) return;
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void SetPanel(ImagePanel panel, Bitmap image)
{
panel.Enabled = true;
panel.BackgroundImage = image;
panel.Refresh();
}
private void stPanel1_Click(object sender, EventArgs e)
{
if (!stPanel1.Enabled)
return;
UpdatePanels(new ImagePanel[] { stPanel1, stPanel2, stPanel3 }, 0);
OnTextureSelected?.Invoke(sender, e);
}
private void UpdatePanels(ImagePanel[] panels, int selectedIndex)
{
stPanel1.Selected = false;
stPanel2.Selected = false;
stPanel3.Selected = false;
arrowLeft.Enabled = false;
arrowRight.Enabled = false;
SelectedIndex = selectedIndex;
if (SelectedIndex == 0)
{
stPanel1.Selected = true;
if (ActiveMaterial.TextureMaps.Length > 1)
arrowRight.Enabled = true;
}
if (SelectedIndex == 1)
{
stPanel2.Selected = true;
arrowLeft.Enabled = true;
if (ActiveMaterial.TextureMaps.Length > 2)
arrowRight.Enabled = true;
}
if (SelectedIndex == 2)
{
stPanel3.Selected = true;
arrowLeft.Enabled = true;
arrowRight.Enabled = false;
}
for (int i = 0; i < panels.Length; i++)
{
panels[i].BorderColor = FormThemes.BaseTheme.DisabledBorderColor;
panels[i].BorderColor = FormThemes.BaseTheme.DisabledBorderColor;
if (panels[i].Selected)
panels[i].BorderColor = Color.Cyan;
panels[i].Refresh();
}
ReloadButtons();
}
private void stPanel2_Click(object sender, EventArgs e)
{
if (!stPanel2.Enabled)
return;
UpdatePanels(new ImagePanel[] { stPanel1, stPanel2, stPanel3 }, 1);
OnTextureSelected?.Invoke(sender, e);
}
private void stPanel3_Click(object sender, EventArgs e)
{
if (!stPanel3.Enabled)
return;
UpdatePanels(new ImagePanel[] { stPanel1, stPanel2, stPanel3 }, 2);
OnTextureSelected?.Invoke(sender, e);
}
private void addbtn_Click(object sender, EventArgs e)
{
if (ActiveMaterial.TextureMaps.Length == 3)
return;
Texture_Selector selector = new Texture_Selector();
selector.LoadTextures(textureList, "", ActiveMaterial.ParentLayout);
if (selector.ShowDialog() == DialogResult.OK)
{
string newTexture = selector.GetSelectedTexture();
ActiveMaterial.AddTexture(newTexture);
ReloadTexture();
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
if (selector.UpdateTextures)
{
ParentEditor.UpdateTextureList();
}
}
private void editBtn_Click(object sender, EventArgs e)
{
if (SelectedIndex != -1)
{
var texMap = ActiveMaterial.TextureMaps[SelectedIndex];
Texture_Selector selector = new Texture_Selector();
selector.LoadTextures(textureList, texMap.Name, ActiveMaterial.ParentLayout);
if (selector.ShowDialog() == DialogResult.OK)
{
string newTexture = selector.GetSelectedTexture();
texMap.ID = (short)ActiveMaterial.ParentLayout.AddTexture(newTexture);
texMap.Name = newTexture;
ReloadTexture();
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
}
}
private void removebtn_Click(object sender, EventArgs e)
{
if (ActiveMaterial.TextureMaps.Length > SelectedIndex && SelectedIndex >= 0)
ActiveMaterial.TextureMaps = ActiveMaterial.TextureMaps.RemoveAt(SelectedIndex);
if (ActiveMaterial.TextureMaps.Length == 0)
{
SelectedIndex = -1;
ResetImagePanels();
UpdatePanels(new ImagePanel[] { stPanel1, stPanel2, stPanel3 }, -1);
}
else
{
SelectedIndex = SelectedIndex - 1;
ReloadTexture();
SelectImage(SelectedIndex);
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void transformUV_ValueChanged(object sender, EventArgs e)
{
if (!Loaded || !texLoaded) return;
if (ActiveMaterial.TextureTransforms.Length > SelectedIndex && SelectedIndex != -1)
{
UpdateTransform(ActiveMaterial.TextureTransforms[SelectedIndex]);
}
else if (SelectedIndex != -1)
{
}
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void UpdateTransform(BxlytTextureTransform transform)
{
transform.Scale = new Syroot.Maths.Vector2F(
scaleXUD.Value, scaleYUD.Value);
transform.Translate = new Syroot.Maths.Vector2F(
transXUD.Value, transYUD.Value);
transform.Rotate = rotUD.Value;
}
private void textureSettingsCB_SelectedIndexChanged(object sender, EventArgs e)
{
if (!Loaded || !texLoaded) return;
if (ActiveMaterial.TextureMaps.Length > SelectedIndex && SelectedIndex != -1)
{
ActiveMaterial.TextureMaps[SelectedIndex].WrapModeU = (WrapMode)wrapModeUCB.SelectedValue;
ActiveMaterial.TextureMaps[SelectedIndex].WrapModeV = (WrapMode)wrapModeVCB.SelectedValue;
ActiveMaterial.TextureMaps[SelectedIndex].MaxFilterMode = (FilterMode)expandCB.SelectedValue;
ActiveMaterial.TextureMaps[SelectedIndex].MinFilterMode = (FilterMode)shrinkCB.SelectedValue;
}
}
}
public class ImagePanel : PictureBox
{
private bool selected = false;
public bool Selected
{
get { return selected; }
set
{
selected = value;
}
}
public Color BorderColor;
public ImagePanel()
{
Paint += pictureBox1_Paint;
BackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
this.SizeMode = PictureBoxSizeMode.Zoom;
}
public void ResetImage()
{
BackgroundImage?.Dispose();
BackgroundImage = null;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, ClientRectangle, BorderColor, ButtonBorderStyle.Solid);
}
}
}

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBoxCustom1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
WHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjIx8SBplQAAK8tJREFUeF7t3Qlz21iSBGDZOnifAEiABHif
Ou2e///ftu3OrBILitBMrzzjtvOLaHcHkqsCHnMghfdRuIqyp39d+JIgoM4eCXzdIjCrr4jg3EZAySMS
eMoR0HV4wb9WN0hoGWYc+wioi4D+yBDQzRkJLRtI4DpHQI8dJNT9goTSz0igtUFAu3Adn+KMf4WTuBqF
0/xaIKBGmPHHGYGZvyCChwEC6t8jgS8VAnP8AxHsmggoD0txj+Pu/WIdkMDXHQLz+xQrvGM/R7Fq7+kH
FOukYpGKZVQso2IZFcv9M4p1+wHF+il/xlKxjO5YTsUiFcupWKRiORWLVCz3vymWfsYiFcuoWEbFcvpW
SCqWU7FIxXIqllGxjIpl9BekRsVyumORiuVULPqFi5UFeVldKHMENJ0jgXKGwMyQ0HyCgN6dkYUXVPUZ
4RXzKQKaIqD6jHAd1ax2mgiodh3TeJpxxiQuRe06CgSmNiMud4GAajPmCEwRl7u2Vu/NqK1VbSnijPnV
U1C2bi80KgS0HSCBuyECk9whgu4OAVVhRqtAQPdtJJSckVAaZvTWCOBxi8DMkdC5i4DSAxK4LxBQa4uE
NuEkbqt7JLAfI6BBuI6HGQJzfEQEyw4CuMsR0HGEhDoIzKSBBNorBLQOMxoZAtNDQsOwVk9FmNG5wq3L
VLe4ucHnBQI6dJHApz4CM0JCrSMCWoQZNwUCer5DQqNnJDT+hAQ6WwTwxx6BKZHQUwsBJeEbwvMMAd2G
HwL+tQ/f+a4W4ZvOOX7T6YXr+BJnXN2Hbzrr8E2n9s2z9o2ticBMrpHAXfwGvQ0zPqcITPxhJn7z/FcR
lqKhYhkVi1Qsp2IZFcuoWE7FIhXLqVikYjkVi1Qsp2IZFcuoWE7FIhXLqVikYjkVi1Qsp2IZFcuoWE7F
IhXLqVikYjkViz6kWF+CsvH5wm2FgPY9JHAz+H745fuf342vEUFnj4CqJhJoFAjoMbzg8/gBCSU3SKC7
QQAvOwSmREIPbQSUnJDAY4GAmvE6duEkPldPSOA4RED9cB3PMwTm9Gohv1mF07zJXy/1n05xRhuBmdwi
geYaAW3CjNsMgemEt3QQ1upLEZaidZUEebW4UE0R0GSOhOYIzAwBlRkCmsYZBQJKwwsWsxQJ1WbUThOB
yRFQWiKgWTjNNEdA1QQJTeJpTsNpZvE043XUZixqaxVPM15HFt+PEoEpwmmWtesIM2rvR1J7z+NpxtqU
uHM5bU0mfZjCac+70Z53o2IZFcuoWE7FIhXL/TbF0gdWjYrldMciFcupWKRiORXLqFhGxTIfUSz9jEUq
ltEdy6hYTsUiFcupWKRiuV+lWPp7LKNiORWLVCynb4X0CxerE0y3hwv7CQIaLZHQAoGpENB6hIAmYcYu
R0C98IJD1UNCJQJaJQhohMBMEVB/jYDKARLo5QhoG69jvEdCky4SGMalWIbr6MYZh3ASnXSDAPYFAhos
kNAGgZntkMAmrlUSZ8wRmLhWyyECKsJSbK7i2swH3Qu9OQJajpFAL/l++NXXyXqIYLRCQHFGv0BA2yES
ymLT4oxxWN79EoGZIaHajElYvW2BgAbxOpbhJLrz8BauUwSUxP9JxRnddXhDqnCaf9b98hW1GUMEZtpH
ArW6L+KMKQIzQkJJbFoRlmKoPe9Ge95JH6ZwKpZRsYyK5VQsUrGcikUqllOxSMVyKpZRsYyK5VQsUrGc
ikUqllOxSMVyKpZRsYyK5VQsUrGcikUqlvttihU32qhYr6hY9LPesb4G5d2nCzcLBHToIYHPfQRm9BkR
tA8IaBFm3BYI6KmBhEaPSCgJMzpbBPBlj8CUSOixjYCSMxJ4miGgRryO3TUSqp6RwGmIgPpPSOAlzvgU
TuLrqoUArnMEdI4zmgjM5AYJNNYIaNtEAtcpAhPXqh9PswhL0bza7i7Nhv0LgzkCWiRIKP1++NXXmSCg
8RIBzcOMYYGANiMklG2QUJyRVAhgu0BgZkhoPUZAkxUS2BQIaLhAQvUZ4TSXKQJKwwtqM/qr8IaUcSny
10v9p1WcMUJg8gESGIW12lVhxmCKwMS1SsNa7Yo4A3cup63JpK3JTnvezX+lWPowBalYRncso2I5FYtU
LKdi0W9crJdasfZI4OsWgflnFOsDPrDa+yl/xjojMB9QrKPuWKQ7ltG3QqNiGRXLqVikYjkVi/6NYv2U
P2OpWEZ3LKdikYrlVCxSsZyKRSqW+8+LpV+8ZlQspzsWqVhOxaJfuFirYJaMLoxnCKjKkNAEgZkgoLRC
QHFGUiCgZXjBaLJEQlMElJYIqERg4nUsUwQ0WSCBZYGAkngd5RgJzcJpVnEpsvCC2oxRnDGPS5EjoEVt
uRGYPJxmMkdAZXzP44xVXKssrNWqiDNqW5OrsN38ur41GQm8sTU57Edv1bcmI4E3tiYjoVHY0vs1CfeG
uDX5a9zzXt+aXNvzHrcmx3vDXbyOfdhMflXfmoyAaluT44yr+tZkBPA5bk2+DzM+tRCYSbhNvrE1GQlc
ZwhMO7ylb2xNRgJNfZjC6MMUpE/pOBXLqFhGxXIqFqlYTsUiFcupWKRiORXLqFhGxXIqFqlYTsUiFcup
WKRiORXLqFhGxXIqFqlYTsUiFcupWKRiORXL/CTFOgfzbutCp0RA6xESaI8RmBQJ9TcIqAwzugUCOvSQ
UHpAQlkbCQyXCGiNwMwR0GGAgLIdEjgUCKi7RkLrcBKt8ogEtgkCGoXrOMUZrXAS50UfAbRzBLSLM/oI
zLSDBHoLBLSMMyYITFyr8RYBFWEp+lftYLI7XthnCGi0QgKHJQJTHRDBZoiA4oxdjoC6WyRU9ZBQGWas
EgTQGSEwUyTU2yCgcoAEujkC2o6Q0DicxHHSRQLDBQJahuvoxBnHQQcRpOE0DwUC6scZGwRmtkcC27BW
7XGYsZ8jMGsktAxr1S7ie447l9PWZNKHKZz2vBvteTcqllGxjIrlVCxSsZyKRSqWU7HMu8XSJ6GNiuV0
xyIVy6lYpGI5FcuoWEbFMh9RLP2MRSqW0R3LqFhOxSIVy6lYpGK5X6VY+nsso2I53bHoZy1WEuTV4kI1
RUCTORKaIzAzBFROENA0zsgRUFoioVmKhN6dMUFg3p+RIYE0R0BVbUa4jsU0nGYWT3MeXlCbsQgnkUzj
aRYIKIvvR4nAFOE0y9pbGmZUcUYST2IeTzPWprx6DMrW7YVmhYC2AyRwN0RgkjtE0N0hoKqNBFoFAjqH
F9wmZySUhhn9NQLaIDBzBHTqIqD0gATOBQJqb5HQpoGEynsksB8joGG4jocZAhNO4nEZTrORI6DDCAnc
dRGYaRMRdFYIaB1nZAhMLyz3MJ5mEZaioz3vRnveSR+mcCqWUbGMiuVULFKxnIpFKpZTsUjFciqWUbGM
iuVULFKxnIpFKpZTsUjFciqWUbGMiuVULFKxnIpFKpZTsUjFciqW+UmK9RSUrZsLjQoB7fpI4HaIwCS3
iKC7Q0BVmNEsENB9GwklZySU3iGB3hoBbRHQbYmAzl0klB6RwH2BgFrxOrbhJG7KBySwHyGgwT0SeIgz
bsJJPC07COAuR0DHMOO2g8BMG4igvUJA6zCjkSEwvfCWDg8IqAhL0bnKoyLCcYPDDscNDjscdzjucNzg
sMNxg8MOxx2O0+wDThOHHY4bHH4FgcFhg8MOxx2OGxx2OO5w3OCww3GH4w7HDQ47HHc4bnDnctqaTNqa
7LTn3fxXiqUPU5CKZXTHMiqWU7FIxXIqFqlY7lcplj6walQsp2KRiuX0rZBULKdiGRXLqFhGxTIqlvs5
iqWfsUjFMrpjGRXLqVikYjkVi1Qs96sUS3+PZX5Isa6D7P75wmOKgHpbJPC0QWCWT4jg0EVA6RkJ3OcI
6O6EhJYNJFSFGfshArjpITATJNQ4IqBFGwnc5Qjo3ENC/UcklN4igc4KAW3CddzGGc8tJDQOp/lUIKDW
GgkdEZj5AxI4jRDQMMx4LBGYPRLahLW6zsNSnOq/eK19d6H+i9eGSKAxQmCSBiLoxV9YFme04y9eO3WQ
UHJCQmmYEX/x2sMGgan94rUeAqr/4jUE1Kn94rUmEirD71XbjRHQMFzH/QyB2T8ggkUXATRrv3gtznjj
F68hgc4SAa3ijNovXusjodEeARVhRld73o32vJM+TOFULKNiGRXLqVikYjkVi1Qsp2KRiuVULKNiGRXL
qVikYjkVi1Qsp2KRiuVULKNiGRXLqVikYjkVi1Qsp2KRiuVULKNiGRXL/TLFWgWzZHRhPENAVYaEMgRm
goDSCgHFGUmBgJbhBaPJEgnVZpQIqERg4nUsUwQ0XSCBZYGAkngd1RgJ1dYqnmYWryPOGIWTWM3DaY7j
Wi3ijASBycNpJnMEVMYZUwQmrlUWT7M24wq/2s9kYXfnQ4qA4g7Sxw0CU9tB2kNAcQfpOUdAjfoOUiRU
hR2LuyEC6iOgpwkCah6QUBV+P2Uj7u48xesYhK2Zz1n4hYnd+g5SJFDfQRp/SeY4nOZj/OWS7bCD9OmA
wNR3kCKguIP0oURg9uEtjb9c8ibuID3izuX0YQrShymcPkxh/ivF0ocpSMUyumMZFcupWKRiORWLVCz3
qxRLH1g1KpbTHYtULKdikYrlVCyjYhkVy3xEsfQzFqlYRsUyKpbTt0JSsZyKRSqWU7GMimVULKO/IDU/
pFjLYJaOLyQzBFRmSCCZIDDTBBFkJQKKM9ICAVXhBeNJhYTyOGOOABZzBFS7jipcx3gaZixyBJTG6yjD
SYyLBRIoJwgoXkdtxjheaO39yBFQFWYkGQIT1yoNa7WcvzdjmYUv8e77kV59Dcq7TxduFgjo0EMCn/sI
zOgzImgfENAizLgrENBTAwmNHpFQEmZ0tgjgyx6BKZHQYxsBJWck8DRDQI14HftrJFQ9I4HTEAH1n5DA
S5zxKZzE11ULAVznCOgcZ7QQmMkNEmisEdA2zkgRmA4SGsTTLMJSNLXn3WjPO+nDFE7FMiqWUbGcikUq
llOxSMVyKhapWE7FMu8WK/7Nl4r1iopFumM5FYtULKdiGRXLqFhGxTIqllOxSMVyKhapWE7FMiqWUbGM
imV+SLGOwbzXudAtEdBqjIQSBCZFQMMVAir7SKBXIKB9eEEn3SGhDAGNlghohcDMEdBugICyDRLYFwio
H69j1UVC8z0SWCcIaByu4xBndMJJHKtwmt0cAW3jjAECMw2n2V8goGWcMUFghkgoiadZhBmDq34wXW8v
bKYIKFkgoQqBKRHQMkFAkzBjnSOgYXjBthwioTkCWqYIYJAgMPE6hksENB8hgWGOgFbxOtINEpoMkMA4
LkUVrmMQZ2zDSfSzcJqbAgGNKiS0RGBm4TRXGQJKV0hgM0Ng4lpVYwRUxBm4cznteSfteXfa825ULKNi
mX9KsfRhClKxjO5YRsVyKhapWE7FIhXL/SrF0gdWjYrldMciFcupWKRiORXLqFhGxTIfUSz9jEUqltEd
y6hYTsUiFcupWPQ7FevxjwsvtWLtkcCXLQKz+ooIzvENScKMWrFuHpBQrViLL0jgGBbrUxcBfY3Fuj0h
oWVYrJscAT2ELY5XvRcklIYtda0NAorF+hxn/FEvFgL4Ui8WEjojMPNnJPAwRED9eyTwUivWMbylcWvg
VR6W4v6qG0y3+wu7CQIaLZHQAoEpEdB6hIAmGySwzRFQL7xgX/aR0BwBrRIENEZgpgiov0JA5RAJ9HME
tBkjofEOCU17SGBYIaBFuI5enLEPJ9HN1ghgVyCg2ow1AjMLp7lJEVASZ8wRmLhWi3iaeZix1tZko63J
pD3vTsUyKpZRsZyKRSqWU7FIxXIqFqlYTsUyKpZRsZyKRSqWU7FIxXIqFqlYTsUyKpZRsZyKRSqWU7FI
xXIqFqlYTsUyKpZRsdwvUyxszDJlrVgIqF4sBGYU3vTWEQHFYt3OEFC9WE9IKKkVCwF8rRcLCb1RLCTw
HLfU3R2QUK1YVdjudopvej/suatt27u6D1vqVrViIaD7WrEQmHqxENA27C78nCIwtWKF7Yd/1IuVBfm8
vJQjoOkMAc0QmPiC+RQB1WYUCGgSXzCbIKF3Z0wRmHgdtRlFmDHJEdDfmFFbq3gdcUYZXzB9d61qS4HA
FAiofh3vzcjefT9qa4WCOe15J+15d/owhVGxjIplVCyjYrnfp1hhNVUso2I53bFIxXIqFqlYTsVyKhb9
U4ul3+hnVCynOxapWE7FIhXLqVhGxTIqlvmIYulnLFKxjO5YRsVyKhapWE7Fol+4WDd/uv32xzd//kd2
frrwkCL47vb2pr9FAo/rv5Lvf37/9/IRERx6TPDv9IQEzvlfgb2iEV7wtGz+FXz/80+3VZixGyL46183
t30EZsIE/27tEdCigwSvaOYI6NT/K7BXDB6QUNb4K+ALuisEtGnaCX7/8y7OeGr7Knz/c3xAAI8Fvzhe
0V4joYONx3/Mw2meRv6K7/8eHpHAQ8mE/45rtfm2Vq9fkYcZx6tzMO+2LrRLBLQeIoH2GIFJkdBgg4DK
MKNbIKBjDwmlBySUtZHAYIkATisEZo6E9n0ElO2QwKFAQL01ElqFk2iVRySwGSOgUbiOY5zR2p4QQRVO
sz1FQLsECfURmGkHCfQWCGgZZ0wQmAESGm8RUBGWoq8970Z73kkfpnAqllGxjIrlVCxSsZyKRSqWU7FI
xXIqllGxjIrlVCxSsZyKRSqWU7FIxXIqllGxjIrlVCxSsZyKRSqWU7FIxXIqllGxjIrlfpliLYNZmlya
IaBygoAmCEx8QVYioDgjLRDQIp7EtEJCUwSUzRFQicDUZmQIKM5YFAgojddRmzFbIIH6WoUX1GYk8UJn
8TRzBFTVlhuByRFQGtdq/t6MZXzBJJ5mnJFdNYLJ4f7CKUNAgzUSOK8QmMUZEewGCCgLM445AmqHF9wv
2kioCjM2IwTQHCIwEyTU2SGgqocE2jkCOsTrGJ6QUNZCAv0lAlqH62jFGffdJiJIwmmeCwTUjTN2CMws
nOZ+jIBGeyRwKhGYLRJahbVq5OH9qH3D0J53oz3vTh+mMCqWUbHMP6VYYTVVLKNiORWLVCynb4WkYjkV
y6lYpGI5FYt+42LpN/oZFcvpjkUqllOxSMVyKpZRsYyKZT6iWPoZi1QsozuWUbGcikU/a7Gug+z++cJj
ioB6WyTwtEFglk+I4NBFQOkZCdznCOguvOB52UBCizBjP0QAN30EZoKEmgcEtGgjgUaOgM49JNR/RELp
HRLorBDQJlzHbZzx3L5BBOMjAngqEFB7jYSOCMz8AQmcRghoGGY8lgjMHgltwlpd52EpTld5VMwuFDjs
wgvqryj+0y/xN2bkCOhvvOADZry/FAjo3RfMcNyFVxTvfYn6C2qvwGHzb7xh778CCRTammy0NZm0592p
WEbFMiqWU7FIxXIqFqlYTsUiFcupWEbFMiqWU7FIxXIqFqlYTsUiFcupWEbFMiqWU7FIxXIqFqlYTsUi
FcupWEbFMiqW+2WK9RjMW7cXmhUC2g6QQGOIwCR3iKC7RUBVGwm0CgR07iCh5ISE0gYS6K8QwMMGAd3N
kdCph4TSAxI4FwioHa9jE07itrxHArsRAhqG67iPM24PD4hg0UUAjRwBHcKMuy4CM2kigs4SAa3CjGaG
wPTCWzrcI6AiLEXnqhNMtocL+wkCGq2Q0AKBqRDQeoSA4oxdjoB64QWHqoeESgS0ShBAd4zATJFQf42A
ygES6OUIaBuvY7xHQpNwmsMFAlr2kUA3zjiEk+ikGwSwLxDQIM7YIDCzcJqbFAElccYcgYlrtRwioCLO
wJ3Lac87ac+704cpjIplVCyjYhkVy/0+xQqrqWIZFcvpjkUqllOxSMVyKpZTsUjFcioW/cbF0m/0MyqW
0x2LVCynYpGK5VQso2IZFct8RLH0MxapWEZ3LKNiORWLftZidYPpZn9hN0FA4yUS2C2+H+59//O7Egmt
xwhoEmZscwTUDy/YVwMkFGesUgTQGyMwUyQ0WCGgcogE+jkC2sTrSHZIaNJHAqMKAS3CdfTijP3w1UJ+
k60RwK54vdR/GsYZawRmtkUCm7BW3STOmCMwca0WYa26RViK9dWXl5eX7//gP8q7zxduKnvFX6/a95DA
dd/Tv/4ZXyOC9uFb8OoVVQMJ3BV/BfaKxyYSGj/4//n3P5Iwo7tBin9edghM+Sr99s9DGwElpz+DV694
LBBQY4+Qr9iFk/hcPXn47Y/jEAENHpn+9c9znPH5/Cr99s8qnOZ1/j3wV5zijJaHf/3H5BYJNNf+iu+v
2rSQwE32Kv3+TwcJDf5cq4tXFDdIoKU970Z73kkfpnAqllGxjIrlVCxSsZyKRSqWU7FIxXIqllGxjIrl
VCxSsZyKRSqWU7FIxXIqllGxjIrlVCxSsZyKRSqWU7FIxXIqllGxjIrlfplipUFeLS5UUwQ0mSOBaobA
zMKXKCcIaFoigTJHYMILFrMMARVhxrw2AwFVcUb2/gwEVLuOSTiJRW3GDAHV1irOWMSTiGtVFQgozqhK
BCauVVl7S9+bkZZxueNpxtqUV9iYZbL7lwtPKQLq7pDA8waBWT4jgmMXAaVhxkOOgG7PSGgVth9+XoQZ
+wECuO4hMBkSahwR0CJsd7vLEdB92OL4uf9tX99radhS11kjoG3cRhlnvLTC5sHxty11r9S2BrbijBMC
M39EAufa9sMw46lCYA5IaBN3SeZhKU64cznteSfteXf6MIVRsYyKZVQso2K536dYYTVVLKNiOd2xSMVy
KhapWE7FcioW/VOLpV+8ZlQspzsWqVhOxSIVy6lYRsUyKpZRsYyK5X6OYoXVVLGMiuV0x6IPKVYrmOzP
F44ZAhqukcBpicBUJ0SwHSKgLMzY5wios0NCVRcJlWHGeoyAhgjoNEFA3Q0SKvtIoJMjoF28jtERCWUd
JDBYIKBVuI52nHEOJ9FKtwjgWCCgXphx2iIwswMi2CUIaBxnzBGYTVjuZTzNIizF7moTzMaDC8MZAqpS
JDBMEZjJEBEkCwQUZ4xyBLQKLxhMVkioNqNEQBUCE6+jPmOJBFYFAhrF66jCSQxmaySwyBBQFq5jHWcM
wklsygQBDONaLeOMMQIzDac5jmtVxvd8isAk4Uuk8TSLOENbk422JpP2vDsVy6hYRsVyKhapWE7FIhXL
qVikYjkVy6hYRsVyKhapWE7FIhXLqVikYjkVy6hYRsVyKhapWE7FIhXLqVikYjkVy6hYRsVyv0yxdsFs
0LvQnyGgZYIE+ikCk/URwWiJgOZDJDAoENAmvKCXbZDQJMwYVwhogYBq17EZIaHJGglsCgQ0jNexCGvV
m22RwCpDQEm4jm2c0VshoTKcZj9HQOsUCY0QmDyc5jCuVRVnTBGYMRJK42nm4f0YXt0E2fn5wkOKgHpb
JPC0QWCWT4jg0ENAaZhxnyOgxgkJLRtIqAozdkME1EdgJgioeUBAizYSaOQI6NRHQoNHJJTeIYHuCgFt
mkjgNs54DidxMw6n+VggoPYaCR0QmPkDEjiNENDwiAQeSwRmH5Z700FAeViKI+5c7rfZ865PQpv4jU0f
pnD6MAWpWE7FcioWqVhOxSIVy+lnLFKxnO5YpGI5FcupWKRiORWLfuNi6e+xjIrldMciFcupWKRiORXL
qFhGxTIfUSz9jEUqltEdy/yQYn0KsocvF55TBNTdIYGXDQKzfEEEpw4CSsOMhxwB3d4jodUtElqEGYcB
AvjcQ2AyJHR3RECLFhK4zRHQfRcJ9Z6RUHqDBNprBLQN13EdZ3xpfUYEoxMCeC4QUDPOOCEw8yckcD9E
QIMzEngqEZgDEtqGtfqUh6U4X+VBMQtw3MVXFDhuivCK2gtyBFTUXoHAvP8lcNghoPoL3r8OBPQjvkR8
wd9ZbgT0/7+Od1/wxisQUKGtyUZbk0l73p2KZVQso2I5FYtULKdikYrlVCxSsZyKZVQso2I5FYtULKdi
kYrlVCxSsZyKZVQso2I5FYtULKdikYrlVCxSsZyKZVQso2I5FYtULKdiUeOqEUyO9xdOGQIarJHAeYXA
VGdEsBsgoOyABI45AmrtkdCijYTijM0IAQ0RmAkCam8RUNVFAu0cAR3idQzDSdxnLSTQXyKgVbiOVpxx
30NCyQ4BnAsE1I0zdgjM7IQE9mMENA7LfZojMHGtVvE08zgDBXPZ4x8XXmp73vdI4OsWgVl9RQTnuFc8
CTPqe94fkNAbe96RQH3POwL6Gve8356Q0DL87/YmR0AP8Tp6L0goDfeG1gYBxT3vn+OMP+p73hHAl/qe
dyR0RmDm4TQfhgiof48EXmp73o9I6I0970jgN/4whT4JbeI3Nn1Kx+lTOqRiORXLqVikYjkVi1Qsp5+x
SMVyumORiuVULKdikYrlVCz6jYulv8cyKpbTHYtULKdikYrlVCyjYhkVy3xEsfQzFqlYRncs80OKNQqm
y/WF1RQBpRUSWJUIzHyFCBYpAoozljkCGi+Q0HyMhGZhRpUhoAwB1a5jHK5jPUuQwDhHQLXryMJJrKfh
NNMSAZXxOuKMdTiJ0SQsxapAQEmcsUBginCaywkCyuKMGQJThS9RxtPM43t+dQ7mneaFdomANkMk0Boh
MEkLEfQ3CKjsIoFOgYCO4QXN9ICE0jBjsERAawRmjoAOfQSU7ZDAsUBA3Xgd6zYSKk9IYJsgoFG4jlOc
0QwncV6E02zlCGg3RkI9BGYaTrMX12rZQwLtDIGJazWOp5nHGdqabLQ1mbTn3alYRsUyKpZTsUjFcioW
qVhOxSIVy6lYRsUyKpZTsUjFcioWqVhOxSIVy6lYRsUyKpZTsUjFcioWqVhOxSIVy6lY5icp1tegvMMz
M+FmgYD2PSRw3UdgRuEhoe0DAlo0kMBdgYCemkho/IiEkmsk0N0ggC87BKZEQo9tBJSckcBTfJZpY4+E
duEkPlXPSOAYn2XaD9fxPENgzl8QwSo8y/Q6R0DnOKOFwEzCc1+bawS0CTNuUgSmE97SwQkBFXHGVRHh
iZkOxw0OOxw3OOxw3OG4w3GDwwaHHY47HHc4bnDYTREYHHc4bnDY4bjBYYfjDscdjhscdjhucNjhuMNx
g8OvICAcfQWBwWGH4w7HDe5cTluTSVuT3Q/Y8/7Gb/RDAm/9Rj9E8HMW6wM+sNr7KT9M8cZv9EMEf6NY
x48vlu5YRncso2IZFcuoWE7FIhXLqVhGxTIqlqkXK6ymimVULKc7FqlYTsUiFcupWE7Fon9qsfQb/YyK
5XTHIhXLqVikYjkVy6hYRsUyH1Es/YxF9WLhQYZmcny48MaDMJFA/UGYi3tEsOsjoOyABOoPwgwveHjj
QZhIYFt7ECYCqj8Ic4eE6g/CRED1B2GekFB8EGZviYDW4TqaccZDOIlGEk7zjQdhIoG3HoSJCA7xQZij
PRJ460GYiKD+IMzwfuyvNsFsNLgwnCOgRYoEhikCMxkigmSBgOZhxqhAQOsxEpqskVBtRoWAKgRmhoDW
CQKaLJHAukBAo3gdVTiJwSyc5iJDQGl4QW3GIJzEpgxLMcwR0DLOGCMweTjNcYmAqjhjisDEtcriaRZx
hva8G+15J32YwqlYRsUyKpZTsUjFcioWqVhOxSIVy6lYRsUyKpZTsUjFcioWqVhOxSIVy6lYRsUyKpZT
sUjFcioWqVhOxSIVy6lY5icp1h9BvVgIqF4sBGYU3vTWEQEtQm9uCwRUL9YTEkpqxUJA9WIhoDeKhQSe
45a6uwMSqhWrekECp3qxkMBbxbpULxYCuq8VC4GJxWpsEFC9WAhMrVhnBFQv1vn+Uv1BmAgoPgizOfp+
+NXXiQ+p7G8QUP1BmAio9iDM5ICEstqDMBHAGw/CREJvPAgTCbzxIEwktA4n0SxPSGAbH1I5Ctfx1oMw
EcEiPKSylb9e6j/VH4SJwMQHYXbDWt2v4owJAlN/ECYCKsJS9FAwp63JpD3vTnvejYplVCzz3yiWPrBq
VCynOxapWE7FIhXLqVhGxTIqlvmIYulnLFKxjO5YRsVyKhapWE7FIhXLqVhGxTIqltFfkBoVy+mORSqW
U7FIxXIqllGxjIplPqJY+hmL6sWaB8UkKBDQbIqAcgQmR0DTGQIqwpeYxhnz//+MGQLz/oz4JeKMyX88
4/21qi33e2tV+xKz2lIgMLUXxNN8d8b7axWvY3r1EpSN6wu3FQLa9ZHAzQCBGd8ggs4eAVVNJNAoENBD
eMH1+AEJJWFGd4MAnncITImEHjoIKDkhgYcCATXjdWxvkVD1iAQOQwQ0CNfxNENgwkm8rNoI4CZHQKc4
o43ATMJpttYIaBNm3GYITBcJDY4IqIgz9GEKow9TkD6l41Qso2IZFcupWKRiORWLVCynYpGK5VQso2IZ
FcupWKRiORWLVCynYpGK5VQso2IZFcupWKRiORWLVCynYpGK5VQs85MUC0/ENGX77kKzRECbIZLvGneN
EQKTNBBCb4uAyg4SaBcI6BRecJfEZ5mmf82wSf0VAtogMHMEdOohoDQ+Z7RAQJ0NEto0kVAZnjO6GyOg
+EzW+zjjLpzEwzKcZu2ZrIcwo9FFYKYtRNCJz31ddZFAM0Ng+q/e0m//GZ/J+lCEpehe4YmYZrrCMzNh
PUFA8Vmm69qzTOfxOaPx+ZxxxipHQKP4AM/4TNb6jPCc0fpzX6dIqPa81Hl4zuio9izT8GzZ2vNSN9P4
3Nfas0zj82vjjM04fInac1/jWtWel7pEYIpwmrVnssbnpa5nCEzt2bLxLc3jDNy5nLYmk/a8O+15NyqW
UbHMf6NY+sCqUbGc7likYjkVi1Qsp2IZFcuoWOYjiqWfsUjFMrpjGRXLqVikYjkVi1Qs96sUS3+PZVQs
pzsWqVhOxSIVy6lYRsUyKpZRscwPKVY/mK63FzYTBJQskFCFwJQIaDlGQJMwY50joOEKCZVDJDRHQMsU
ASUIzBQBDZcIaD5CAsMCAa0SJJRskNBkgATGcSmqcB2DHIGJa5WF09zEtRpVSGiFwBThNFcZAkrDcm9m
CEztPQ9r1c/jjCs8etX83Uf3vpIgoA94dG96RELx8cCDFQKKj+5txEf3HmuP7t0jgR/y6N5wHefao3vD
Sbz16N5L+//Fo3tH8dG9ee3Rvbh1Ge15J+15d/GHmfjNUx+mcCqWUbGcikUqllOxSMVyKpZRsYyKZVQs
o2I5FYtULKdikYrlVCyjYhkVy6hYRsVyKhapWE7FIhXLqVhGxTIqllGxzA8p1pegbHy+cFshoH0PCVwP
EJjxNSJo7xFQFWY0CgT02ERC4wcklIQZ3Q0CeNkhMCUSemgjoOSEBB4LBNSM17G7QULVExI4DhFQ/xEJ
PMUZn08viGAVTvMmR0CnOKOFwExukUBzjYA2LSRwmyEwnbDcg7BWX4qwFK2rKiiy9EJWIKD5FAlNEZg8
fInJHAG9O6MML0inJRLKEdBkhoDmCExtxgQB5WFGGWdk8Trm8TTfX6v3ZqRxxizOyBFQbcYEgYnvRxbX
ahaWIoszqrhWtfcjvqUT3LmctiaTtiY77Xk3KpZRsYyKZVQs988olj4JbVQspzsWqVhOxSIVy6lYRsUy
Kpb5iGLpZyxSsYzuWEbFcioWqVhOxSIVy/0qxdLfYxkVy+mORSqWU7FIxXIqllGxjIplPqJY+hmL6sU6
ni7Ne+0LnTkCWo+Q0Pj74VdfJ0VAgzUCKsOMXoGA9n0klO6RUNZBAsMlAjiuEJh4HfsBAsq2SGBfIKBe
vI5VOIl2eUACmwQBjcN1HOKM9ja8IVVYik7+eqn/tI0z+gjMtIsE+gsEtIgzJgjMEAmNw1qdirAU/as/
grjn/XqBgOp73hGYUdiP3joioEXY0n5bIKD6nvcnJJTU9rwjgK/1Pe9I6I0970jgOd4b7g5IqLbnvXpB
AqchAuqF63hrz/ulVbg3fM4R0H28/zQRmLjnvbFBQHHP+3WKwMTvOf0zAtKHKYw+TGH0KR2nYpGK5VQs
UrGcimVULKNiGRXLqFhOxSIVy6lYpGI5FcuoWEbFMiqWUbGcikUqllOx6H9SrPj/tlaxXlGxSHcsp2KR
iuVULKNimXqxdsE8PgN0joCW8TmjKQITH+A5XiKgOGNYIKBNfIBntkZC8VmmSYUAtgsEZoaENrXnvq6Q
wKZAQMN4HYtwEv35BgnUnvuahhds44x+OIldGU5zkCOgVW25EZg8nOYorNUuPi91MEVg4lql8TSLOOMK
T8Q0kwOemQmnDAEN10jgvEJgFmdEsB0goCzMOOQIqF17zmh47muzCjM28TmjQwR0niCgzhYJVeE5o+3a
s0zjs2WH4YGq91l4lmm/9izTcB2156Xeh5NoJuFZpqf4TNZemHHeITCz8FjXfXwEbnxe6qlEYLZhueMz
WZtFWIratmJtTTba8+60592oWEbFMiqWUbHcP6NY+iS0UbGc7likYjkVi1Qsp2IZFcuoWOYjiqWfsUjF
MrpjGRXLqVikYjkVi1Qs96sUS3+PZVQspzsWqVhOxSIVy6lYRsUy9WLlQRHhuMHhVxAYHH4FgcFhg8MO
xw0Ov4LA4bjBYYPDDscNDr+CwOE44ajDcYPDDsdfQWBw+BUEBocNDjscNzjscPwVBAaHDQ6/goBw1OTv
PhP65gOeCX1AQPGZ0HfvPxM6PEv5hzwT+owEas+Ebnz8M6GfZwhMfNjyu8+EPn/8M6Fv6s+ERkL/xjOh
cesy2vNO2vPu4g8z8ZunPkzhVCyjYjkVi1Qsp2KRiuVULKNiGRXLqFhGxXIqFqlYTsUiFcupWEbFMiqW
UbGMiuVULFKxnIpFKpZTsYyKZVQso2KZH1Is/D4jM+80LrRKBLQZIoHmCIFJmoigv0FAZZjRKRDQqYuE
kvArnu7TMGOwQkBrBGaOgI59BJSFX8p1KhBQJ17HuoWEyvhbosYIaBiu4xxnNGq/GayHAJq139oVZ/QQ
mGk4zW7tt3aFGa0JAhPXKv5Grfv8ckaj93+veSuXxEAIUwAAAABJRU5ErkJggg==
</value>
</data>
</root>

View File

@ -0,0 +1,169 @@
namespace LayoutBXLYT
{
partial class Texture_Selector
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Texture_Selector));
this.stTextBox1 = new Toolbox.Library.Forms.STTextBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.btnOk = new Toolbox.Library.Forms.STButton();
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.pictureBoxCustom1 = new Toolbox.Library.Forms.PictureBoxCustom();
this.btnAdd = new Toolbox.Library.Forms.STButton();
this.btnEdit = new Toolbox.Library.Forms.STButton();
this.contentContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).BeginInit();
this.SuspendLayout();
//
// contentContainer
//
this.contentContainer.Controls.Add(this.btnEdit);
this.contentContainer.Controls.Add(this.btnAdd);
this.contentContainer.Controls.Add(this.pictureBoxCustom1);
this.contentContainer.Controls.Add(this.listViewCustom1);
this.contentContainer.Controls.Add(this.btnOk);
this.contentContainer.Controls.Add(this.stLabel1);
this.contentContainer.Controls.Add(this.stTextBox1);
this.contentContainer.Controls.SetChildIndex(this.stTextBox1, 0);
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
this.contentContainer.Controls.SetChildIndex(this.btnOk, 0);
this.contentContainer.Controls.SetChildIndex(this.listViewCustom1, 0);
this.contentContainer.Controls.SetChildIndex(this.pictureBoxCustom1, 0);
this.contentContainer.Controls.SetChildIndex(this.btnAdd, 0);
this.contentContainer.Controls.SetChildIndex(this.btnEdit, 0);
//
// stTextBox1
//
this.stTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stTextBox1.Location = new System.Drawing.Point(56, 31);
this.stTextBox1.Name = "stTextBox1";
this.stTextBox1.Size = new System.Drawing.Size(163, 20);
this.stTextBox1.TabIndex = 0;
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(12, 33);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(38, 13);
this.stLabel1.TabIndex = 1;
this.stLabel1.Text = "Name:";
//
// btnOk
//
this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOk.Location = new System.Drawing.Point(459, 361);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(75, 23);
this.btnOk.TabIndex = 2;
this.btnOk.Text = "Ok";
this.btnOk.UseVisualStyleBackColor = false;
//
// listViewCustom1
//
this.listViewCustom1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.listViewCustom1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listViewCustom1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.listViewCustom1.Location = new System.Drawing.Point(9, 57);
this.listViewCustom1.Name = "listViewCustom1";
this.listViewCustom1.OwnerDraw = true;
this.listViewCustom1.Size = new System.Drawing.Size(210, 298);
this.listViewCustom1.TabIndex = 11;
this.listViewCustom1.UseCompatibleStateImageBehavior = false;
this.listViewCustom1.View = System.Windows.Forms.View.Details;
this.listViewCustom1.SelectedIndexChanged += new System.EventHandler(this.listViewCustom1_SelectedIndexChanged);
//
// columnHeader1
//
this.columnHeader1.Width = 194;
//
// pictureBoxCustom1
//
this.pictureBoxCustom1.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxCustom1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBoxCustom1.BackgroundImage")));
this.pictureBoxCustom1.Location = new System.Drawing.Point(225, 57);
this.pictureBoxCustom1.Name = "pictureBoxCustom1";
this.pictureBoxCustom1.Size = new System.Drawing.Size(309, 298);
this.pictureBoxCustom1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBoxCustom1.TabIndex = 12;
this.pictureBoxCustom1.TabStop = false;
//
// btnAdd
//
this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnAdd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAdd.Location = new System.Drawing.Point(9, 361);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(75, 23);
this.btnAdd.TabIndex = 13;
this.btnAdd.Text = "Add";
this.btnAdd.UseVisualStyleBackColor = false;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// btnEdit
//
this.btnEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnEdit.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnEdit.Location = new System.Drawing.Point(90, 361);
this.btnEdit.Name = "btnEdit";
this.btnEdit.Size = new System.Drawing.Size(75, 23);
this.btnEdit.TabIndex = 14;
this.btnEdit.Text = "Edit";
this.btnEdit.UseVisualStyleBackColor = false;
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
//
// Texture_Selector
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(549, 398);
this.Name = "Texture_Selector";
this.Text = "Texture_Selector";
this.contentContainer.ResumeLayout(false);
this.contentContainer.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STTextBox stTextBox1;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STButton btnOk;
private Toolbox.Library.Forms.PictureBoxCustom pictureBoxCustom1;
private Toolbox.Library.Forms.ListViewCustom listViewCustom1;
private System.Windows.Forms.ColumnHeader columnHeader1;
private Toolbox.Library.Forms.STButton btnAdd;
private Toolbox.Library.Forms.STButton btnEdit;
}
}

View File

@ -0,0 +1,144 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library;
using Toolbox.Library.Forms;
using System.Threading;
namespace LayoutBXLYT
{
public partial class Texture_Selector : STForm
{
public bool UpdateTextures = false;
private Dictionary<string, STGenericTexture> textureList;
private BxlytHeader ActiveLayout;
private Thread Thread;
public Texture_Selector()
{
InitializeComponent();
btnEdit.Enabled = false;
CanResize = false;
}
public string GetSelectedTexture()
{
return stTextBox1.Text;
}
public void LoadTextures(Dictionary<string, STGenericTexture> textures, string originalText, BxlytHeader header)
{
textureList = textures;
ActiveLayout = header;
foreach (var tex in textures.Values) {
AddItem(tex);
}
//Try selecting original texture if possible
if (listViewCustom1.Items.ContainsKey(originalText))
{
listViewCustom1.Items[originalText].Selected = true;
listViewCustom1.Select();
}
else if (listViewCustom1.Items.Count > 0) //If not in the list use the first texture
{
listViewCustom1.Items[0].Selected = true;
listViewCustom1.Select();
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
var textures = ActiveLayout.TextureManager.AddTextures();
foreach (var tex in textures)
{
ActiveLayout.AddTexture(tex.Text);
if (textureList.ContainsKey(tex.Text))
textureList.Remove(tex.Text);
textureList.Add(tex.Text, tex);
AddItem(tex);
listViewCustom1.SelectedItems.Clear();
if (listViewCustom1.Items.ContainsKey(tex.Text))
{
listViewCustom1.Items[tex.Text].Selected = true;
listViewCustom1.Select();
}
UpdateTextures = true;
}
}
private void AddItem(STGenericTexture texture)
{
listViewCustom1.Items.Add(new ListViewItem(texture.Text)
{ Name = texture.Text, Tag = texture, });
}
private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listViewCustom1.SelectedItems.Count > 0)
{
btnEdit.Enabled = true;
string TexName = listViewCustom1.SelectedItems[0].Text;
stTextBox1.Text = TexName;
stTextBox1.Refresh();
DisplayTexture((STGenericTexture)listViewCustom1.SelectedItems[0].Tag);
}
else
btnEdit.Enabled = false;
}
private void DisplayTexture(STGenericTexture texData)
{
pictureBoxCustom1.Image = null;
Thread = new Thread((ThreadStart)(() =>
{
pictureBoxCustom1.Image = Toolbox.Library.Imaging.GetLoadingImage();
var image = texData.GetBitmap();
if (pictureBoxCustom1.InvokeRequired)
{
pictureBoxCustom1.Invoke((MethodInvoker)delegate {
pictureBoxCustom1.Image = image;
pictureBoxCustom1.Refresh();
});
}
else
pictureBoxCustom1.Image = image;
}));
Thread.Start();
}
private void btnEdit_Click(object sender, EventArgs e)
{
if (listViewCustom1.SelectedItems.Count == 0)
return;
string item = listViewCustom1.SelectedItems[0].Text;
if (textureList.ContainsKey(item))
{
var texture = ActiveLayout.TextureManager.EditTexture(item);
if (texture == null)
return;
textureList[item] = texture;
DisplayTexture(textureList[item]);
}
}
}
}

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBoxCustom1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -28,31 +28,71 @@
/// </summary>
private void InitializeComponent()
{
this.tabControl1 = new System.Windows.Forms.TabControl();
this.stPanel3 = new Toolbox.Library.Forms.STPanel();
this.stPanel2 = new Toolbox.Library.Forms.STPanel();
this.stToolStrip1 = new Toolbox.Library.Forms.STToolStrip();
this.stPanel1 = new Toolbox.Library.Forms.STPanel();
this.stPanel3.SuspendLayout();
this.stPanel2.SuspendLayout();
this.SuspendLayout();
//
// tabControl1
// stPanel3
//
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(411, 288);
this.tabControl1.TabIndex = 0;
this.stPanel3.Controls.Add(this.stPanel2);
this.stPanel3.Controls.Add(this.stPanel1);
this.stPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.stPanel3.Location = new System.Drawing.Point(0, 0);
this.stPanel3.Name = "stPanel3";
this.stPanel3.Size = new System.Drawing.Size(411, 288);
this.stPanel3.TabIndex = 2;
//
// stPanel2
//
this.stPanel2.Controls.Add(this.stToolStrip1);
this.stPanel2.Dock = System.Windows.Forms.DockStyle.Top;
this.stPanel2.Location = new System.Drawing.Point(0, 0);
this.stPanel2.Name = "stPanel2";
this.stPanel2.Size = new System.Drawing.Size(411, 27);
this.stPanel2.TabIndex = 0;
//
// stToolStrip1
//
this.stToolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
this.stToolStrip1.HighlightSelectedTab = false;
this.stToolStrip1.Location = new System.Drawing.Point(0, 0);
this.stToolStrip1.Name = "stToolStrip1";
this.stToolStrip1.Size = new System.Drawing.Size(411, 25);
this.stToolStrip1.TabIndex = 0;
this.stToolStrip1.Text = "stToolStrip1";
//
// stPanel1
//
this.stPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.stPanel1.Location = new System.Drawing.Point(3, 26);
this.stPanel1.Name = "stPanel1";
this.stPanel1.Size = new System.Drawing.Size(411, 262);
this.stPanel1.TabIndex = 1;
//
// PaneEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(411, 288);
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.stPanel3);
this.Name = "PaneEditor";
this.stPanel3.ResumeLayout(false);
this.stPanel2.ResumeLayout(false);
this.stPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabControl1;
private Toolbox.Library.Forms.STPanel stPanel1;
private Toolbox.Library.Forms.STPanel stPanel2;
private Toolbox.Library.Forms.STPanel stPanel3;
private Toolbox.Library.Forms.STToolStrip stToolStrip1;
}
}

View File

@ -8,29 +8,325 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
using Toolbox.Library;
namespace LayoutBXLYT
{
public partial class PaneEditor : LayoutDocked
{
public EventHandler PropertyChanged;
public PaneEditor()
{
InitializeComponent();
stToolStrip1.HighlightSelectedTab = true;
stToolStrip1.ItemClicked += tabMenu_SelectedIndexChanged;
}
public void LoadPane(BasePane pane)
public Dictionary<string, STGenericTexture> GetTextures()
{
LoadBasePane(pane);
return ParentEditor.GetTextures();
}
private void LoadBasePane(BasePane pane)
public void Reset()
{
var page = new TabPage() { Text = "Base Pane" };
var basePaneEditor = new BasePaneEditor();
basePaneEditor.Dock = DockStyle.Fill;
basePaneEditor.LoadPane(pane);
page.Controls.Add(basePaneEditor);
tabControl1.TabPages.Add(page);
stToolStrip1.Items.Clear();
stPanel1.Controls.Clear();
}
private LayoutEditor ParentEditor;
private BxlytMaterial ActiveMaterial;
private BasePane ActivePane;
private bool Loaded = false;
private bool MaterialMode = false;
private Control ActiveEditor
{
get
{
if (stPanel1.Controls.Count == 0) return null;
return stPanel1.Controls[0];
}
}
private STPropertyGrid propertyGrid;
public void LoadProperties(object properties)
{
Reset();
MaterialMode = false;
AddTab("Properties");
if (propertyGrid == null || propertyGrid.Disposing || propertyGrid.IsDisposed)
{
propertyGrid = new STPropertyGrid();
propertyGrid.Dock = DockStyle.Fill;
stPanel1.Controls.Add(propertyGrid);
}
propertyGrid.LoadProperty(properties, ProperyChanged);
}
private void ProperyChanged()
{
PropertyChanged?.Invoke(propertyGrid, EventArgs.Empty);
}
public void RefreshEditor()
{
var editor = ActiveEditor;
if (editor == null) return;
if (editor is BasePaneEditor)
((BasePaneEditor)editor).RefreshEditor();
}
public void LoadMaterial(BxlytMaterial material, LayoutEditor parentEditor)
{
ActiveMaterial = material;
ParentEditor = parentEditor;
Loaded = false;
MaterialMode = true;
stToolStrip1.Items.Clear();
AddTab("Texture Maps", LoadTextureMaps);
AddTab("Colors", LoadColorBlending);
AddTab("Blending", LoadBlending);
AddTab("Combiners", LoadTextureCombiners);
stToolStrip1.Items[Runtime.LayoutEditor.MaterialTabIndex].PerformClick();
Loaded = true;
}
public void LoadPane(BasePane pane, LayoutEditor parentEditor)
{
ParentEditor = parentEditor;
Loaded = false;
MaterialMode = false;
ActivePane = pane;
stToolStrip1.Items.Clear();
AddTab("Pane", LoadBasePane);
if (pane is IPicturePane)
{
ActiveMaterial = ((IPicturePane)ActivePane).Material;
AddTab("Picture Pane", LoadPicturePane);
AddTab("Texture Maps", LoadTextureMaps);
AddTab("Colors", LoadColorBlending);
AddTab("Blending", LoadBlending);
AddTab("Combiners", LoadTextureCombiners);
}
if (pane is IWindowPane)
{
//Note active material is set in window pane editor based on frame selector
AddTab("Window Pane", LoadWindowPane);
AddTab("Texture Maps", LoadWindowLoadTextureMaps);
AddTab("Colors", LoadWindowColorBlending);
AddTab("Blending", LoadWindowMatBlending);
AddTab("Combiners", LoadWindowTextureCombiners);
}
if (pane is ITextPane)
{
ActiveMaterial = ((ITextPane)ActivePane).Material;
AddTab("Text Pane", LoadTextPane);
AddTab("Colors", LoadColorBlending);
AddTab("Blending", LoadBlending);
}
if (pane is IPartPane)
{
AddTab("Part Pane", LoadPartPane);
}
AddTab("User Data", LoadUserData);
int tabIndex;
if (pane is IPicturePane)
tabIndex = Runtime.LayoutEditor.PicturePaneTabIndex;
else if (pane is IWindowPane)
tabIndex = Runtime.LayoutEditor.WindowPaneTabIndex;
else if (pane is ITextPane)
tabIndex = Runtime.LayoutEditor.TextPaneTabIndex;
else
tabIndex = Runtime.LayoutEditor.NullPaneTabIndex;
stToolStrip1.Items[tabIndex].PerformClick();
Loaded = true;
}
public void UpdateTextureList() {
ParentEditor.UpdateLayoutTextureList();
}
private void AddTab(string name, EventHandler eventHandler = null, Image image = null)
{
stToolStrip1.Items.Add(new STToolStipMenuButton(name, image, eventHandler)
{
DisplayStyle = ToolStripItemDisplayStyle.Text,
});
}
//Default to the previously used editor if the editor is closed and reopened
private void UpdateTabIndex()
{
if (ActivePane == null && !MaterialMode || !Loaded) return;
int tabIndex = stToolStrip1.SelectedTabIndex;
if (MaterialMode)
Runtime.LayoutEditor.MaterialTabIndex = tabIndex;
else if (ActivePane is IPicturePane)
Runtime.LayoutEditor.PicturePaneTabIndex = tabIndex;
else if (ActivePane is IWindowPane)
Runtime.LayoutEditor.WindowPaneTabIndex = tabIndex;
else if (ActivePane is ITextPane)
Runtime.LayoutEditor.TextPaneTabIndex = tabIndex;
else
Runtime.LayoutEditor.NullPaneTabIndex = tabIndex;
}
private void LoadUserData(object sender, EventArgs e)
{
UpdateTabIndex();
var userEditor = GetActiveEditor<UserDataEditor>();
if (ActivePane is IUserDataContainer)
userEditor.LoadUserData(ActivePane, ((IUserDataContainer)ActivePane).UserData);
}
private void LoadTextureMaps(object sender, EventArgs e)
{
UpdateTabIndex();
var textureEditor = GetActiveEditor<PaneMatTextureMapsEditor>();
textureEditor.LoadMaterial(ActiveMaterial, this, ParentEditor.GetTextures());
}
private void LoadPartPane(object sender, EventArgs e)
{
UpdateTabIndex();
var partEditor = GetActiveEditor<PartPaneEditor>();
partEditor.LoadPane(ActivePane as IPartPane, this);
}
private void LoadColorBlending(object sender, EventArgs e)
{
UpdateTabIndex();
var colorEditor = GetActiveEditor<PaneMatColorEditor>();
colorEditor.LoadMaterial(ActiveMaterial, this);
}
private void LoadBlending(object sender, EventArgs e)
{
UpdateTabIndex();
var blendEditor = GetActiveEditor<PaneMatBlending>();
blendEditor.LoadMaterial(ActiveMaterial, this);
}
private void LoadTextureCombiners(object sender, EventArgs e)
{
UpdateTabIndex();
var texCombEditor = GetActiveEditor<PaneMatTextureCombiner>();
texCombEditor.LoadMaterial(ActiveMaterial, this);
}
private void LoadTextPane(object sender, EventArgs e)
{
UpdateTabIndex();
var pictureEditor = GetActiveEditor<PaneTextBoxEditor>();
pictureEditor.LoadPane(ActivePane as ITextPane, this);
}
private void LoadPicturePane(object sender, EventArgs e)
{
UpdateTabIndex();
var pictureEditor = GetActiveEditor<BasePictureboxEditor>();
pictureEditor.LoadPane(ActivePane as IPicturePane, this);
}
private void LoadWindowLoadTextureMaps(object sender, EventArgs e)
{
UpdateTabIndex();
var windowEditor = GetActiveEditor<WindowPaneEditor>();
windowEditor.LoadPane(ActivePane as IWindowPane,
WindowPaneEditor.ContentType.Textures, this);
}
private void LoadWindowColorBlending(object sender, EventArgs e)
{
UpdateTabIndex();
var windowEditor = GetActiveEditor<WindowPaneEditor>();
windowEditor.LoadPane(ActivePane as IWindowPane,
WindowPaneEditor.ContentType.ColorInterpolation, this);
}
private void LoadWindowMatBlending(object sender, EventArgs e)
{
UpdateTabIndex();
var windowEditor = GetActiveEditor<WindowPaneEditor>();
windowEditor.LoadPane(ActivePane as IWindowPane,
WindowPaneEditor.ContentType.Blending, this);
}
private void LoadWindowTextureCombiners(object sender, EventArgs e)
{
UpdateTabIndex();
var windowEditor = GetActiveEditor<WindowPaneEditor>();
windowEditor.LoadPane(ActivePane as IWindowPane,
WindowPaneEditor.ContentType.TextureCombiners, this);
}
private void LoadWindowPane(object sender, EventArgs e)
{
UpdateTabIndex();
var windowEditor = GetActiveEditor<WindowPaneEditor>();
windowEditor.LoadPane(ActivePane as IWindowPane,
WindowPaneEditor.ContentType.WindowContent, this);
}
private void LoadBasePane(object sender, EventArgs e)
{
UpdateTabIndex();
var basePaneEditor = GetActiveEditor<BasePaneEditor>();
basePaneEditor.LoadPane(ActivePane, this);
}
private T GetActiveEditor<T>() where T : Control, new()
{
T instance = new T();
if (ActiveEditor?.GetType() == instance.GetType())
return ActiveEditor as T;
else
{
DisposeEdtiors();
stPanel1.Controls.Clear();
instance.Dock = DockStyle.Fill;
stPanel1.Controls.Add(instance);
}
return instance;
}
private void DisposeEdtiors()
{
if (ActiveEditor == null) return;
if (ActiveEditor is STUserControl)
((STUserControl)ActiveEditor).OnControlClosing();
}
protected override void OnFormClosing(FormClosingEventArgs e) {
DisposeEdtiors();
}
private void tabMenu_SelectedIndexChanged(object sender, EventArgs e) {
}
}
}

View File

@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="stToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -0,0 +1,98 @@
namespace LayoutBXLYT
{
partial class PartPaneEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.stTextBox1 = new Toolbox.Library.Forms.STTextBox();
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.SuspendLayout();
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(14, 24);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(48, 13);
this.stLabel1.TabIndex = 0;
this.stLabel1.Text = "Part File:";
//
// stTextBox1
//
this.stTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stTextBox1.Location = new System.Drawing.Point(78, 22);
this.stTextBox1.Name = "stTextBox1";
this.stTextBox1.Size = new System.Drawing.Size(186, 20);
this.stTextBox1.TabIndex = 1;
//
// listViewCustom1
//
this.listViewCustom1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listViewCustom1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.listViewCustom1.Location = new System.Drawing.Point(3, 85);
this.listViewCustom1.Name = "listViewCustom1";
this.listViewCustom1.OwnerDraw = true;
this.listViewCustom1.Size = new System.Drawing.Size(312, 231);
this.listViewCustom1.TabIndex = 2;
this.listViewCustom1.UseCompatibleStateImageBehavior = false;
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(14, 69);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(57, 13);
this.stLabel2.TabIndex = 3;
this.stLabel2.Text = "Properties:";
//
// PartPaneEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stLabel2);
this.Controls.Add(this.listViewCustom1);
this.Controls.Add(this.stTextBox1);
this.Controls.Add(this.stLabel1);
this.Name = "PartPaneEditor";
this.Size = new System.Drawing.Size(318, 319);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STTextBox stTextBox1;
private Toolbox.Library.Forms.ListViewCustom listViewCustom1;
private Toolbox.Library.Forms.STLabel stLabel2;
}
}

View File

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public partial class PartPaneEditor : EditorPanelBase
{
private PaneEditor ParentEditor;
private IPartPane ActivePane;
public PartPaneEditor()
{
InitializeComponent();
}
public void LoadPane(IPartPane pane, PaneEditor paneEditor)
{
ActivePane = pane;
ParentEditor = paneEditor;
stTextBox1.Bind(pane, "LayoutFileName");
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,139 @@
namespace LayoutBXLYT
{
partial class NewTextboxDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.stComboBox1 = new Toolbox.Library.Forms.STComboBox();
this.stTextBox1 = new Toolbox.Library.Forms.STTextBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.btnAdd = new Toolbox.Library.Forms.STButton();
this.btnOk = new Toolbox.Library.Forms.STButton();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.contentContainer.SuspendLayout();
this.SuspendLayout();
//
// contentContainer
//
this.contentContainer.Controls.Add(this.stLabel2);
this.contentContainer.Controls.Add(this.btnOk);
this.contentContainer.Controls.Add(this.btnAdd);
this.contentContainer.Controls.Add(this.stLabel1);
this.contentContainer.Controls.Add(this.stTextBox1);
this.contentContainer.Controls.Add(this.stComboBox1);
this.contentContainer.Size = new System.Drawing.Size(441, 238);
this.contentContainer.Controls.SetChildIndex(this.stComboBox1, 0);
this.contentContainer.Controls.SetChildIndex(this.stTextBox1, 0);
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
this.contentContainer.Controls.SetChildIndex(this.btnAdd, 0);
this.contentContainer.Controls.SetChildIndex(this.btnOk, 0);
this.contentContainer.Controls.SetChildIndex(this.stLabel2, 0);
//
// stComboBox1
//
this.stComboBox1.BorderColor = System.Drawing.Color.Empty;
this.stComboBox1.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.stComboBox1.ButtonColor = System.Drawing.Color.Empty;
this.stComboBox1.FormattingEnabled = true;
this.stComboBox1.IsReadOnly = false;
this.stComboBox1.Location = new System.Drawing.Point(9, 55);
this.stComboBox1.Name = "stComboBox1";
this.stComboBox1.Size = new System.Drawing.Size(158, 21);
this.stComboBox1.TabIndex = 0;
//
// stTextBox1
//
this.stTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stTextBox1.Location = new System.Drawing.Point(9, 95);
this.stTextBox1.Multiline = true;
this.stTextBox1.Name = "stTextBox1";
this.stTextBox1.Size = new System.Drawing.Size(423, 104);
this.stTextBox1.TabIndex = 1;
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(6, 39);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(64, 13);
this.stLabel1.TabIndex = 2;
this.stLabel1.Text = "Select Font:";
//
// btnAdd
//
this.btnAdd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAdd.Location = new System.Drawing.Point(173, 53);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(75, 23);
this.btnAdd.TabIndex = 3;
this.btnAdd.Text = "Add";
this.btnAdd.UseVisualStyleBackColor = false;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// btnOk
//
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOk.Location = new System.Drawing.Point(357, 206);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(75, 23);
this.btnOk.TabIndex = 11;
this.btnOk.Text = "Ok";
this.btnOk.UseVisualStyleBackColor = false;
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(9, 79);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(76, 13);
this.stLabel2.TabIndex = 12;
this.stLabel2.Text = "Text (Optional)";
//
// NewTextboxDialog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(447, 243);
this.Name = "NewTextboxDialog";
this.Text = "New Textbox";
this.contentContainer.ResumeLayout(false);
this.contentContainer.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STComboBox stComboBox1;
private Toolbox.Library.Forms.STTextBox stTextBox1;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STButton btnAdd;
private Toolbox.Library.Forms.STButton btnOk;
private Toolbox.Library.Forms.STLabel stLabel2;
}
}

View File

@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using Toolbox.Library.Forms;
using Toolbox.Library;
using FirstPlugin;
using Toolbox.Library.IO;
namespace LayoutBXLYT
{
public partial class NewTextboxDialog : STForm
{
public NewTextboxDialog()
{
InitializeComponent();
CanResize = false;
}
public string GetText()
{
return stTextBox1.Text;
}
public string GetFont()
{
return (string)stComboBox1.SelectedItem;
}
public void LoadFonts(List<string> fonts)
{
stComboBox1.Items.Clear();
for (int i = 0; i < fonts.Count; i++)
stComboBox1.Items.Add(fonts[i]);
if (stComboBox1.Items.Count > 0)
stComboBox1.SelectedIndex = 0;
else
btnOk.Enabled = false;
}
private void btnAdd_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = Utils.GetAllFilters(new Type[]
{ typeof(BFFNT), typeof(BFTTF) });
if (ofd.ShowDialog() == DialogResult.OK)
{
stComboBox1.Items.Add(Path.GetFileName(ofd.FileName));
stComboBox1.SelectedIndex = stComboBox1.Items.Count - 1;
btnOk.Enabled = true;
var file = STFileLoader.OpenFileFormat(ofd.FileName);
if (file is BFFNT)
{
}
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,852 @@
namespace LayoutBXLYT
{
partial class PaneTextBoxEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PaneTextBoxEditor));
this.stFlowLayoutPanel1 = new Toolbox.Library.Forms.STFlowLayoutPanel();
this.stDropDownPanel1 = new Toolbox.Library.Forms.STDropDownPanel();
this.fontFileCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.scaleYUD = new BarSlider.BarSlider();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.scaleXUD = new BarSlider.BarSlider();
this.sliderItalicTilt = new Toolbox.Library.Forms.STTrackBar();
this.italicTiltUD = new BarSlider.BarSlider();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.stDropDownPanel2 = new Toolbox.Library.Forms.STDropDownPanel();
this.stLabel7 = new Toolbox.Library.Forms.STLabel();
this.chkSizeRestrict = new Toolbox.Library.Forms.STCheckBox();
this.sizeRestrictUD = new BarSlider.BarSlider();
this.stLabel6 = new Toolbox.Library.Forms.STLabel();
this.stTextBox1 = new Toolbox.Library.Forms.STTextBox();
this.alighmentLineCB = new Toolbox.Library.Forms.STComboBox();
this.alighmentHCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel5 = new Toolbox.Library.Forms.STLabel();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.alighmentVCB = new Toolbox.Library.Forms.STComboBox();
this.stDropDownPanel4 = new Toolbox.Library.Forms.STDropDownPanel();
this.stLabel8 = new Toolbox.Library.Forms.STLabel();
this.sliderShadowItalicTilt = new Toolbox.Library.Forms.STTrackBar();
this.chkEnableShadows = new Toolbox.Library.Forms.STCheckBox();
this.shadowItalicTiltUD = new BarSlider.BarSlider();
this.stLabel13 = new Toolbox.Library.Forms.STLabel();
this.shadowOffseYUD = new BarSlider.BarSlider();
this.stLabel12 = new Toolbox.Library.Forms.STLabel();
this.shadowOffseXUD = new BarSlider.BarSlider();
this.shadowScaleYUD = new BarSlider.BarSlider();
this.stLabel11 = new Toolbox.Library.Forms.STLabel();
this.shadowScaleXUD = new BarSlider.BarSlider();
this.vertexColorTopBottomBox1 = new Toolbox.Library.Forms.VertexColorTopBottomBox();
this.shadowColorBox = new Toolbox.Library.Forms.VertexColorTopBottomBox();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.sliderItalicTilt)).BeginInit();
this.stDropDownPanel2.SuspendLayout();
this.stDropDownPanel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.sliderShadowItalicTilt)).BeginInit();
this.SuspendLayout();
//
// stFlowLayoutPanel1
//
this.stFlowLayoutPanel1.AutoScroll = true;
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel1);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel2);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel4);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(350, 726);
this.stFlowLayoutPanel1.TabIndex = 59;
//
// stDropDownPanel1
//
this.stDropDownPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel1.Controls.Add(this.stLabel7);
this.stDropDownPanel1.Controls.Add(this.fontFileCB);
this.stDropDownPanel1.Controls.Add(this.stLabel1);
this.stDropDownPanel1.Controls.Add(this.scaleYUD);
this.stDropDownPanel1.Controls.Add(this.vertexColorTopBottomBox1);
this.stDropDownPanel1.Controls.Add(this.stLabel2);
this.stDropDownPanel1.Controls.Add(this.scaleXUD);
this.stDropDownPanel1.Controls.Add(this.sliderItalicTilt);
this.stDropDownPanel1.Controls.Add(this.italicTiltUD);
this.stDropDownPanel1.Controls.Add(this.stLabel3);
this.stDropDownPanel1.ExpandedHeight = 311;
this.stDropDownPanel1.IsExpanded = true;
this.stDropDownPanel1.Location = new System.Drawing.Point(0, 0);
this.stDropDownPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel1.Name = "stDropDownPanel1";
this.stDropDownPanel1.PanelName = "Font";
this.stDropDownPanel1.PanelValueName = "";
this.stDropDownPanel1.SetIcon = null;
this.stDropDownPanel1.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.Size = new System.Drawing.Size(350, 162);
this.stDropDownPanel1.TabIndex = 0;
//
// fontFileCB
//
this.fontFileCB.BorderColor = System.Drawing.Color.Empty;
this.fontFileCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.fontFileCB.ButtonColor = System.Drawing.Color.Empty;
this.fontFileCB.FormattingEnabled = true;
this.fontFileCB.IsReadOnly = false;
this.fontFileCB.Location = new System.Drawing.Point(73, 32);
this.fontFileCB.Name = "fontFileCB";
this.fontFileCB.Size = new System.Drawing.Size(195, 21);
this.fontFileCB.TabIndex = 1;
this.fontFileCB.SelectedIndexChanged += new System.EventHandler(this.fontFileCB_SelectedIndexChanged);
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(4, 35);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(50, 13);
this.stLabel1.TabIndex = 2;
this.stLabel1.Text = "Font File:";
//
// scaleYUD
//
this.scaleYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.scaleYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.scaleYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.scaleYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.scaleYUD.DataType = null;
this.scaleYUD.DrawSemitransparentThumb = false;
this.scaleYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.scaleYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.scaleYUD.ForeColor = System.Drawing.Color.White;
this.scaleYUD.IncrementAmount = 0.01F;
this.scaleYUD.InputName = "Y";
this.scaleYUD.LargeChange = 5F;
this.scaleYUD.Location = new System.Drawing.Point(170, 65);
this.scaleYUD.Maximum = 300000F;
this.scaleYUD.Minimum = -300000F;
this.scaleYUD.Name = "scaleYUD";
this.scaleYUD.Precision = 0.01F;
this.scaleYUD.ScaleDivisions = 1;
this.scaleYUD.ScaleSubDivisions = 2;
this.scaleYUD.ShowDivisionsText = false;
this.scaleYUD.ShowSmallScale = false;
this.scaleYUD.Size = new System.Drawing.Size(98, 25);
this.scaleYUD.SmallChange = 0.01F;
this.scaleYUD.TabIndex = 50;
this.scaleYUD.Text = "barSlider2";
this.scaleYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.scaleYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.scaleYUD.TickAdd = 0F;
this.scaleYUD.TickColor = System.Drawing.Color.White;
this.scaleYUD.TickDivide = 0F;
this.scaleYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.scaleYUD.UseInterlapsedBar = false;
this.scaleYUD.Value = 30F;
this.scaleYUD.ValueChanged += new System.EventHandler(this.scaleUD_ValueChanged);
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(1, 72);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(37, 13);
this.stLabel2.TabIndex = 4;
this.stLabel2.Text = "Scale:";
//
// scaleXUD
//
this.scaleXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.scaleXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.scaleXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.scaleXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.scaleXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.scaleXUD.DataType = null;
this.scaleXUD.DrawSemitransparentThumb = false;
this.scaleXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.scaleXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.scaleXUD.ForeColor = System.Drawing.Color.White;
this.scaleXUD.IncrementAmount = 0.01F;
this.scaleXUD.InputName = "X";
this.scaleXUD.LargeChange = 5F;
this.scaleXUD.Location = new System.Drawing.Point(72, 65);
this.scaleXUD.Maximum = 300000F;
this.scaleXUD.Minimum = -300000F;
this.scaleXUD.Name = "scaleXUD";
this.scaleXUD.Precision = 0.01F;
this.scaleXUD.ScaleDivisions = 1;
this.scaleXUD.ScaleSubDivisions = 2;
this.scaleXUD.ShowDivisionsText = false;
this.scaleXUD.ShowSmallScale = false;
this.scaleXUD.Size = new System.Drawing.Size(92, 25);
this.scaleXUD.SmallChange = 0.01F;
this.scaleXUD.TabIndex = 49;
this.scaleXUD.Text = "barSlider2";
this.scaleXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.scaleXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.scaleXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.scaleXUD.TickAdd = 0F;
this.scaleXUD.TickColor = System.Drawing.Color.White;
this.scaleXUD.TickDivide = 0F;
this.scaleXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.scaleXUD.UseInterlapsedBar = false;
this.scaleXUD.Value = 30F;
this.scaleXUD.ValueChanged += new System.EventHandler(this.scaleUD_ValueChanged);
//
// sliderItalicTilt
//
this.sliderItalicTilt.Location = new System.Drawing.Point(170, 96);
this.sliderItalicTilt.Name = "sliderItalicTilt";
this.sliderItalicTilt.Size = new System.Drawing.Size(98, 45);
this.sliderItalicTilt.TabIndex = 53;
this.sliderItalicTilt.ValueChanged += new System.EventHandler(this.sliderItalicTilt_ValueChanged);
//
// italicTiltUD
//
this.italicTiltUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.italicTiltUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.italicTiltUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.italicTiltUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.italicTiltUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.italicTiltUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.italicTiltUD.DataType = null;
this.italicTiltUD.DrawSemitransparentThumb = false;
this.italicTiltUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.italicTiltUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.italicTiltUD.ForeColor = System.Drawing.Color.White;
this.italicTiltUD.IncrementAmount = 0.01F;
this.italicTiltUD.InputName = "X";
this.italicTiltUD.LargeChange = 5F;
this.italicTiltUD.Location = new System.Drawing.Point(73, 96);
this.italicTiltUD.Maximum = 300000F;
this.italicTiltUD.Minimum = -300000F;
this.italicTiltUD.Name = "italicTiltUD";
this.italicTiltUD.Precision = 0.01F;
this.italicTiltUD.ScaleDivisions = 1;
this.italicTiltUD.ScaleSubDivisions = 2;
this.italicTiltUD.ShowDivisionsText = false;
this.italicTiltUD.ShowSmallScale = false;
this.italicTiltUD.Size = new System.Drawing.Size(92, 25);
this.italicTiltUD.SmallChange = 0.01F;
this.italicTiltUD.TabIndex = 52;
this.italicTiltUD.Text = "barSlider2";
this.italicTiltUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.italicTiltUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.italicTiltUD.ThumbSize = new System.Drawing.Size(1, 1);
this.italicTiltUD.TickAdd = 0F;
this.italicTiltUD.TickColor = System.Drawing.Color.White;
this.italicTiltUD.TickDivide = 0F;
this.italicTiltUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.italicTiltUD.UseInterlapsedBar = false;
this.italicTiltUD.Value = 30F;
this.italicTiltUD.ValueChanged += new System.EventHandler(this.italicTiltUD_ValueChanged);
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(1, 102);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(62, 13);
this.stLabel3.TabIndex = 51;
this.stLabel3.Text = "Italic Angle:";
//
// stDropDownPanel2
//
this.stDropDownPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel2.Controls.Add(this.chkSizeRestrict);
this.stDropDownPanel2.Controls.Add(this.sizeRestrictUD);
this.stDropDownPanel2.Controls.Add(this.stLabel6);
this.stDropDownPanel2.Controls.Add(this.stTextBox1);
this.stDropDownPanel2.Controls.Add(this.alighmentLineCB);
this.stDropDownPanel2.Controls.Add(this.alighmentHCB);
this.stDropDownPanel2.Controls.Add(this.stLabel5);
this.stDropDownPanel2.Controls.Add(this.stLabel4);
this.stDropDownPanel2.Controls.Add(this.alighmentVCB);
this.stDropDownPanel2.ExpandedHeight = 0;
this.stDropDownPanel2.IsExpanded = true;
this.stDropDownPanel2.Location = new System.Drawing.Point(0, 162);
this.stDropDownPanel2.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel2.Name = "stDropDownPanel2";
this.stDropDownPanel2.PanelName = "Text";
this.stDropDownPanel2.PanelValueName = "";
this.stDropDownPanel2.SetIcon = null;
this.stDropDownPanel2.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.Size = new System.Drawing.Size(350, 223);
this.stDropDownPanel2.TabIndex = 1;
//
// stLabel7
//
this.stLabel7.AutoSize = true;
this.stLabel7.Location = new System.Drawing.Point(271, 41);
this.stLabel7.Name = "stLabel7";
this.stLabel7.Size = new System.Drawing.Size(31, 13);
this.stLabel7.TabIndex = 60;
this.stLabel7.Text = "Color";
this.stLabel7.Click += new System.EventHandler(this.stLabel7_Click);
//
// chkSizeRestrict
//
this.chkSizeRestrict.AutoSize = true;
this.chkSizeRestrict.Location = new System.Drawing.Point(24, 194);
this.chkSizeRestrict.Name = "chkSizeRestrict";
this.chkSizeRestrict.Size = new System.Drawing.Size(99, 17);
this.chkSizeRestrict.TabIndex = 59;
this.chkSizeRestrict.Text = "Size Restriction";
this.chkSizeRestrict.UseVisualStyleBackColor = true;
this.chkSizeRestrict.CheckedChanged += new System.EventHandler(this.chkSizeRestrict_CheckedChanged);
//
// sizeRestrictUD
//
this.sizeRestrictUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.sizeRestrictUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.sizeRestrictUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.sizeRestrictUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.sizeRestrictUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.sizeRestrictUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.sizeRestrictUD.DataType = null;
this.sizeRestrictUD.DrawSemitransparentThumb = false;
this.sizeRestrictUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.sizeRestrictUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.Enabled = false;
this.sizeRestrictUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.sizeRestrictUD.ForeColor = System.Drawing.Color.White;
this.sizeRestrictUD.IncrementAmount = 0.01F;
this.sizeRestrictUD.InputName = "X";
this.sizeRestrictUD.LargeChange = 5F;
this.sizeRestrictUD.Location = new System.Drawing.Point(134, 189);
this.sizeRestrictUD.Maximum = 300000F;
this.sizeRestrictUD.Minimum = -300000F;
this.sizeRestrictUD.Name = "sizeRestrictUD";
this.sizeRestrictUD.Precision = 0.01F;
this.sizeRestrictUD.ScaleDivisions = 1;
this.sizeRestrictUD.ScaleSubDivisions = 2;
this.sizeRestrictUD.ShowDivisionsText = false;
this.sizeRestrictUD.ShowSmallScale = false;
this.sizeRestrictUD.Size = new System.Drawing.Size(121, 25);
this.sizeRestrictUD.SmallChange = 0.01F;
this.sizeRestrictUD.TabIndex = 54;
this.sizeRestrictUD.Text = "barSlider2";
this.sizeRestrictUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.sizeRestrictUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.sizeRestrictUD.ThumbSize = new System.Drawing.Size(1, 1);
this.sizeRestrictUD.TickAdd = 0F;
this.sizeRestrictUD.TickColor = System.Drawing.Color.White;
this.sizeRestrictUD.TickDivide = 0F;
this.sizeRestrictUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.sizeRestrictUD.UseInterlapsedBar = false;
this.sizeRestrictUD.Value = 30F;
//
// stLabel6
//
this.stLabel6.AutoSize = true;
this.stLabel6.Location = new System.Drawing.Point(22, 166);
this.stLabel6.Name = "stLabel6";
this.stLabel6.Size = new System.Drawing.Size(81, 13);
this.stLabel6.TabIndex = 58;
this.stLabel6.Text = "Linel Alignment:";
//
// stTextBox1
//
this.stTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.stTextBox1.Location = new System.Drawing.Point(3, 28);
this.stTextBox1.Multiline = true;
this.stTextBox1.Name = "stTextBox1";
this.stTextBox1.Size = new System.Drawing.Size(340, 67);
this.stTextBox1.TabIndex = 3;
this.stTextBox1.TextChanged += new System.EventHandler(this.stTextBox1_TextChanged);
//
// alighmentLineCB
//
this.alighmentLineCB.BorderColor = System.Drawing.Color.Empty;
this.alighmentLineCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.alighmentLineCB.ButtonColor = System.Drawing.Color.Empty;
this.alighmentLineCB.FormattingEnabled = true;
this.alighmentLineCB.IsReadOnly = false;
this.alighmentLineCB.Location = new System.Drawing.Point(134, 162);
this.alighmentLineCB.Name = "alighmentLineCB";
this.alighmentLineCB.Size = new System.Drawing.Size(157, 21);
this.alighmentLineCB.TabIndex = 57;
this.alighmentLineCB.SelectedIndexChanged += new System.EventHandler(this.alighmentH_SelectedIndexChanged);
//
// alighmentHCB
//
this.alighmentHCB.BorderColor = System.Drawing.Color.Empty;
this.alighmentHCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.alighmentHCB.ButtonColor = System.Drawing.Color.Empty;
this.alighmentHCB.FormattingEnabled = true;
this.alighmentHCB.IsReadOnly = false;
this.alighmentHCB.Location = new System.Drawing.Point(134, 108);
this.alighmentHCB.Name = "alighmentHCB";
this.alighmentHCB.Size = new System.Drawing.Size(157, 21);
this.alighmentHCB.TabIndex = 0;
this.alighmentHCB.SelectedIndexChanged += new System.EventHandler(this.alighmentH_SelectedIndexChanged);
//
// stLabel5
//
this.stLabel5.AutoSize = true;
this.stLabel5.Location = new System.Drawing.Point(22, 138);
this.stLabel5.Name = "stLabel5";
this.stLabel5.Size = new System.Drawing.Size(94, 13);
this.stLabel5.TabIndex = 56;
this.stLabel5.Text = "Vertical Alignment:";
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(22, 111);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(106, 13);
this.stLabel4.TabIndex = 54;
this.stLabel4.Text = "Horizontal Alignment:";
//
// alighmentVCB
//
this.alighmentVCB.BorderColor = System.Drawing.Color.Empty;
this.alighmentVCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.alighmentVCB.ButtonColor = System.Drawing.Color.Empty;
this.alighmentVCB.FormattingEnabled = true;
this.alighmentVCB.IsReadOnly = false;
this.alighmentVCB.Location = new System.Drawing.Point(134, 135);
this.alighmentVCB.Name = "alighmentVCB";
this.alighmentVCB.Size = new System.Drawing.Size(157, 21);
this.alighmentVCB.TabIndex = 55;
this.alighmentVCB.SelectedIndexChanged += new System.EventHandler(this.alighmentH_SelectedIndexChanged);
//
// stDropDownPanel4
//
this.stDropDownPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel4.Controls.Add(this.stLabel8);
this.stDropDownPanel4.Controls.Add(this.sliderShadowItalicTilt);
this.stDropDownPanel4.Controls.Add(this.chkEnableShadows);
this.stDropDownPanel4.Controls.Add(this.shadowItalicTiltUD);
this.stDropDownPanel4.Controls.Add(this.stLabel13);
this.stDropDownPanel4.Controls.Add(this.shadowOffseYUD);
this.stDropDownPanel4.Controls.Add(this.stLabel12);
this.stDropDownPanel4.Controls.Add(this.shadowOffseXUD);
this.stDropDownPanel4.Controls.Add(this.shadowScaleYUD);
this.stDropDownPanel4.Controls.Add(this.stLabel11);
this.stDropDownPanel4.Controls.Add(this.shadowScaleXUD);
this.stDropDownPanel4.Controls.Add(this.shadowColorBox);
this.stDropDownPanel4.ExpandedHeight = 0;
this.stDropDownPanel4.IsExpanded = true;
this.stDropDownPanel4.Location = new System.Drawing.Point(0, 385);
this.stDropDownPanel4.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel4.Name = "stDropDownPanel4";
this.stDropDownPanel4.PanelName = "Shadows";
this.stDropDownPanel4.PanelValueName = "";
this.stDropDownPanel4.SetIcon = null;
this.stDropDownPanel4.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel4.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel4.Size = new System.Drawing.Size(350, 256);
this.stDropDownPanel4.TabIndex = 3;
//
// stLabel8
//
this.stLabel8.AutoSize = true;
this.stLabel8.Location = new System.Drawing.Point(271, 34);
this.stLabel8.Name = "stLabel8";
this.stLabel8.Size = new System.Drawing.Size(31, 13);
this.stLabel8.TabIndex = 61;
this.stLabel8.Text = "Color";
//
// sliderShadowItalicTilt
//
this.sliderShadowItalicTilt.Location = new System.Drawing.Point(170, 119);
this.sliderShadowItalicTilt.Name = "sliderShadowItalicTilt";
this.sliderShadowItalicTilt.Size = new System.Drawing.Size(98, 45);
this.sliderShadowItalicTilt.TabIndex = 56;
this.sliderShadowItalicTilt.ValueChanged += new System.EventHandler(this.sliderItalicTild_ValueChanged);
//
// chkEnableShadows
//
this.chkEnableShadows.AutoSize = true;
this.chkEnableShadows.Location = new System.Drawing.Point(6, 34);
this.chkEnableShadows.Name = "chkEnableShadows";
this.chkEnableShadows.Size = new System.Drawing.Size(62, 17);
this.chkEnableShadows.TabIndex = 60;
this.chkEnableShadows.Text = "Enable:";
this.chkEnableShadows.UseVisualStyleBackColor = true;
//
// shadowItalicTiltUD
//
this.shadowItalicTiltUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowItalicTiltUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.shadowItalicTiltUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.shadowItalicTiltUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.shadowItalicTiltUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowItalicTiltUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.shadowItalicTiltUD.DataType = null;
this.shadowItalicTiltUD.DrawSemitransparentThumb = false;
this.shadowItalicTiltUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.shadowItalicTiltUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.shadowItalicTiltUD.ForeColor = System.Drawing.Color.White;
this.shadowItalicTiltUD.IncrementAmount = 0.01F;
this.shadowItalicTiltUD.InputName = "X";
this.shadowItalicTiltUD.LargeChange = 5F;
this.shadowItalicTiltUD.Location = new System.Drawing.Point(73, 119);
this.shadowItalicTiltUD.Maximum = 300000F;
this.shadowItalicTiltUD.Minimum = -300000F;
this.shadowItalicTiltUD.Name = "shadowItalicTiltUD";
this.shadowItalicTiltUD.Precision = 0.01F;
this.shadowItalicTiltUD.ScaleDivisions = 1;
this.shadowItalicTiltUD.ScaleSubDivisions = 2;
this.shadowItalicTiltUD.ShowDivisionsText = false;
this.shadowItalicTiltUD.ShowSmallScale = false;
this.shadowItalicTiltUD.Size = new System.Drawing.Size(91, 25);
this.shadowItalicTiltUD.SmallChange = 0.01F;
this.shadowItalicTiltUD.TabIndex = 55;
this.shadowItalicTiltUD.Text = "barSlider2";
this.shadowItalicTiltUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowItalicTiltUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.shadowItalicTiltUD.ThumbSize = new System.Drawing.Size(1, 1);
this.shadowItalicTiltUD.TickAdd = 0F;
this.shadowItalicTiltUD.TickColor = System.Drawing.Color.White;
this.shadowItalicTiltUD.TickDivide = 0F;
this.shadowItalicTiltUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.shadowItalicTiltUD.UseInterlapsedBar = false;
this.shadowItalicTiltUD.Value = 30F;
this.shadowItalicTiltUD.ValueChanged += new System.EventHandler(this.shadowItalicTiltUD_ValueChanged);
//
// stLabel13
//
this.stLabel13.AutoSize = true;
this.stLabel13.Location = new System.Drawing.Point(3, 125);
this.stLabel13.Name = "stLabel13";
this.stLabel13.Size = new System.Drawing.Size(62, 13);
this.stLabel13.TabIndex = 54;
this.stLabel13.Text = "Italic Angle:";
//
// shadowOffseYUD
//
this.shadowOffseYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowOffseYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.shadowOffseYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.shadowOffseYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.shadowOffseYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowOffseYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.shadowOffseYUD.DataType = null;
this.shadowOffseYUD.DrawSemitransparentThumb = false;
this.shadowOffseYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.shadowOffseYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.shadowOffseYUD.ForeColor = System.Drawing.Color.White;
this.shadowOffseYUD.IncrementAmount = 0.01F;
this.shadowOffseYUD.InputName = "Y";
this.shadowOffseYUD.LargeChange = 5F;
this.shadowOffseYUD.Location = new System.Drawing.Point(177, 57);
this.shadowOffseYUD.Maximum = 300000F;
this.shadowOffseYUD.Minimum = -300000F;
this.shadowOffseYUD.Name = "shadowOffseYUD";
this.shadowOffseYUD.Precision = 0.01F;
this.shadowOffseYUD.ScaleDivisions = 1;
this.shadowOffseYUD.ScaleSubDivisions = 2;
this.shadowOffseYUD.ShowDivisionsText = false;
this.shadowOffseYUD.ShowSmallScale = false;
this.shadowOffseYUD.Size = new System.Drawing.Size(91, 25);
this.shadowOffseYUD.SmallChange = 0.01F;
this.shadowOffseYUD.TabIndex = 59;
this.shadowOffseYUD.Text = "barSlider2";
this.shadowOffseYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.shadowOffseYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.shadowOffseYUD.TickAdd = 0F;
this.shadowOffseYUD.TickColor = System.Drawing.Color.White;
this.shadowOffseYUD.TickDivide = 0F;
this.shadowOffseYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.shadowOffseYUD.UseInterlapsedBar = false;
this.shadowOffseYUD.Value = 30F;
//
// stLabel12
//
this.stLabel12.AutoSize = true;
this.stLabel12.Location = new System.Drawing.Point(4, 64);
this.stLabel12.Name = "stLabel12";
this.stLabel12.Size = new System.Drawing.Size(38, 13);
this.stLabel12.TabIndex = 57;
this.stLabel12.Text = "Offset:";
//
// shadowOffseXUD
//
this.shadowOffseXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowOffseXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.shadowOffseXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.shadowOffseXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.shadowOffseXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowOffseXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.shadowOffseXUD.DataType = null;
this.shadowOffseXUD.DrawSemitransparentThumb = false;
this.shadowOffseXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.shadowOffseXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.shadowOffseXUD.ForeColor = System.Drawing.Color.White;
this.shadowOffseXUD.IncrementAmount = 0.01F;
this.shadowOffseXUD.InputName = "X";
this.shadowOffseXUD.LargeChange = 5F;
this.shadowOffseXUD.Location = new System.Drawing.Point(73, 57);
this.shadowOffseXUD.Maximum = 300000F;
this.shadowOffseXUD.Minimum = -300000F;
this.shadowOffseXUD.Name = "shadowOffseXUD";
this.shadowOffseXUD.Precision = 0.01F;
this.shadowOffseXUD.ScaleDivisions = 1;
this.shadowOffseXUD.ScaleSubDivisions = 2;
this.shadowOffseXUD.ShowDivisionsText = false;
this.shadowOffseXUD.ShowSmallScale = false;
this.shadowOffseXUD.Size = new System.Drawing.Size(91, 25);
this.shadowOffseXUD.SmallChange = 0.01F;
this.shadowOffseXUD.TabIndex = 58;
this.shadowOffseXUD.Text = "barSlider4";
this.shadowOffseXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowOffseXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.shadowOffseXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.shadowOffseXUD.TickAdd = 0F;
this.shadowOffseXUD.TickColor = System.Drawing.Color.White;
this.shadowOffseXUD.TickDivide = 0F;
this.shadowOffseXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.shadowOffseXUD.UseInterlapsedBar = false;
this.shadowOffseXUD.Value = 30F;
this.shadowOffseXUD.ValueChanged += new System.EventHandler(this.shadowTransform_ValueChanged);
//
// shadowScaleYUD
//
this.shadowScaleYUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowScaleYUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.shadowScaleYUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.shadowScaleYUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.shadowScaleYUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowScaleYUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.shadowScaleYUD.DataType = null;
this.shadowScaleYUD.DrawSemitransparentThumb = false;
this.shadowScaleYUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.shadowScaleYUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.shadowScaleYUD.ForeColor = System.Drawing.Color.White;
this.shadowScaleYUD.IncrementAmount = 0.01F;
this.shadowScaleYUD.InputName = "Y";
this.shadowScaleYUD.LargeChange = 5F;
this.shadowScaleYUD.Location = new System.Drawing.Point(177, 88);
this.shadowScaleYUD.Maximum = 300000F;
this.shadowScaleYUD.Minimum = -300000F;
this.shadowScaleYUD.Name = "shadowScaleYUD";
this.shadowScaleYUD.Precision = 0.01F;
this.shadowScaleYUD.ScaleDivisions = 1;
this.shadowScaleYUD.ScaleSubDivisions = 2;
this.shadowScaleYUD.ShowDivisionsText = false;
this.shadowScaleYUD.ShowSmallScale = false;
this.shadowScaleYUD.Size = new System.Drawing.Size(91, 25);
this.shadowScaleYUD.SmallChange = 0.01F;
this.shadowScaleYUD.TabIndex = 56;
this.shadowScaleYUD.Text = "barSlider2";
this.shadowScaleYUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleYUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.shadowScaleYUD.ThumbSize = new System.Drawing.Size(1, 1);
this.shadowScaleYUD.TickAdd = 0F;
this.shadowScaleYUD.TickColor = System.Drawing.Color.White;
this.shadowScaleYUD.TickDivide = 0F;
this.shadowScaleYUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.shadowScaleYUD.UseInterlapsedBar = false;
this.shadowScaleYUD.Value = 30F;
//
// stLabel11
//
this.stLabel11.AutoSize = true;
this.stLabel11.Location = new System.Drawing.Point(4, 95);
this.stLabel11.Name = "stLabel11";
this.stLabel11.Size = new System.Drawing.Size(37, 13);
this.stLabel11.TabIndex = 54;
this.stLabel11.Text = "Scale:";
//
// shadowScaleXUD
//
this.shadowScaleXUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowScaleXUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.shadowScaleXUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.shadowScaleXUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.shadowScaleXUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.shadowScaleXUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.shadowScaleXUD.DataType = null;
this.shadowScaleXUD.DrawSemitransparentThumb = false;
this.shadowScaleXUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.shadowScaleXUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.shadowScaleXUD.ForeColor = System.Drawing.Color.White;
this.shadowScaleXUD.IncrementAmount = 0.01F;
this.shadowScaleXUD.InputName = "X";
this.shadowScaleXUD.LargeChange = 5F;
this.shadowScaleXUD.Location = new System.Drawing.Point(73, 88);
this.shadowScaleXUD.Maximum = 300000F;
this.shadowScaleXUD.Minimum = -300000F;
this.shadowScaleXUD.Name = "shadowScaleXUD";
this.shadowScaleXUD.Precision = 0.01F;
this.shadowScaleXUD.ScaleDivisions = 1;
this.shadowScaleXUD.ScaleSubDivisions = 2;
this.shadowScaleXUD.ShowDivisionsText = false;
this.shadowScaleXUD.ShowSmallScale = false;
this.shadowScaleXUD.Size = new System.Drawing.Size(91, 25);
this.shadowScaleXUD.SmallChange = 0.01F;
this.shadowScaleXUD.TabIndex = 55;
this.shadowScaleXUD.Text = "barSlider2";
this.shadowScaleXUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.shadowScaleXUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.shadowScaleXUD.ThumbSize = new System.Drawing.Size(1, 1);
this.shadowScaleXUD.TickAdd = 0F;
this.shadowScaleXUD.TickColor = System.Drawing.Color.White;
this.shadowScaleXUD.TickDivide = 0F;
this.shadowScaleXUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.shadowScaleXUD.UseInterlapsedBar = false;
this.shadowScaleXUD.Value = 30F;
//
// vertexColorTopBottomBox1
//
this.vertexColorTopBottomBox1.AutoScroll = true;
this.vertexColorTopBottomBox1.BackColor = System.Drawing.Color.Transparent;
this.vertexColorTopBottomBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("vertexColorTopBottomBox1.BackgroundImage")));
this.vertexColorTopBottomBox1.BottomColor = System.Drawing.Color.Empty;
this.vertexColorTopBottomBox1.Location = new System.Drawing.Point(274, 65);
this.vertexColorTopBottomBox1.Name = "vertexColorTopBottomBox1";
this.vertexColorTopBottomBox1.Size = new System.Drawing.Size(58, 88);
this.vertexColorTopBottomBox1.TabIndex = 1;
this.vertexColorTopBottomBox1.TopColor = System.Drawing.Color.Empty;
this.vertexColorTopBottomBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.vertexColorTopBottomBox1_Paint);
//
// shadowColorBox
//
this.shadowColorBox.BackColor = System.Drawing.Color.Transparent;
this.shadowColorBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("shadowColorBox.BackgroundImage")));
this.shadowColorBox.BottomColor = System.Drawing.Color.Empty;
this.shadowColorBox.Location = new System.Drawing.Point(272, 56);
this.shadowColorBox.Name = "shadowColorBox";
this.shadowColorBox.Size = new System.Drawing.Size(60, 88);
this.shadowColorBox.TabIndex = 4;
this.shadowColorBox.TopColor = System.Drawing.Color.Empty;
//
// PaneTextBoxEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "PaneTextBoxEditor";
this.Size = new System.Drawing.Size(350, 726);
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.sliderItalicTilt)).EndInit();
this.stDropDownPanel2.ResumeLayout(false);
this.stDropDownPanel2.PerformLayout();
this.stDropDownPanel4.ResumeLayout(false);
this.stDropDownPanel4.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.sliderShadowItalicTilt)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Toolbox.Library.Forms.STComboBox alighmentHCB;
private Toolbox.Library.Forms.STComboBox fontFileCB;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STTextBox stTextBox1;
private Toolbox.Library.Forms.STLabel stLabel2;
private BarSlider.BarSlider scaleYUD;
private BarSlider.BarSlider scaleXUD;
private Toolbox.Library.Forms.STLabel stLabel3;
private BarSlider.BarSlider italicTiltUD;
private Toolbox.Library.Forms.STTrackBar sliderItalicTilt;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STLabel stLabel5;
private Toolbox.Library.Forms.STComboBox alighmentVCB;
private Toolbox.Library.Forms.STLabel stLabel6;
private Toolbox.Library.Forms.STComboBox alighmentLineCB;
private Toolbox.Library.Forms.STFlowLayoutPanel stFlowLayoutPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel2;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel4;
private Toolbox.Library.Forms.VertexColorTopBottomBox vertexColorTopBottomBox1;
private Toolbox.Library.Forms.VertexColorTopBottomBox shadowColorBox;
private Toolbox.Library.Forms.STTrackBar sliderShadowItalicTilt;
private Toolbox.Library.Forms.STCheckBox chkEnableShadows;
private BarSlider.BarSlider shadowItalicTiltUD;
private Toolbox.Library.Forms.STLabel stLabel13;
private BarSlider.BarSlider shadowOffseYUD;
private Toolbox.Library.Forms.STLabel stLabel12;
private BarSlider.BarSlider shadowOffseXUD;
private BarSlider.BarSlider shadowScaleYUD;
private Toolbox.Library.Forms.STLabel stLabel11;
private BarSlider.BarSlider shadowScaleXUD;
private Toolbox.Library.Forms.STCheckBox chkSizeRestrict;
private BarSlider.BarSlider sizeRestrictUD;
private Toolbox.Library.Forms.STLabel stLabel7;
private Toolbox.Library.Forms.STLabel stLabel8;
}
}

View File

@ -0,0 +1,210 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public partial class PaneTextBoxEditor : EditorPanelBase
{
private bool loaded = false;
private PaneEditor parentEditor;
private ITextPane activePane;
public PaneTextBoxEditor()
{
InitializeComponent();
sliderItalicTilt.Minimum = -100;
sliderItalicTilt.Maximum = 100;
sliderShadowItalicTilt.Minimum = -100;
sliderShadowItalicTilt.Maximum = 100;
vertexColorTopBottomBox1.OnColorChanged += OnFontColor_ValueChanged;
shadowColorBox.OnColorChanged += OnShadowColor_ValueChanged;
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel4.ResetColors();
}
public void LoadPane(ITextPane pane, PaneEditor paneEditor)
{
loaded = false;
parentEditor = paneEditor;
activePane = pane;
fontFileCB.Items.Clear();
var fonts = pane.GetFonts;
if (fonts != null)
{
foreach (var font in fonts)
fontFileCB.Items.Add(pane.FontName);
}
if (fontFileCB.Items.Contains(pane.FontName))
fontFileCB.SelectedItem = pane.FontName;
scaleXUD.Value = pane.FontSize.X;
scaleYUD.Value = pane.FontSize.Y;
italicTiltUD.Value = pane.ItalicTilt;
italicTiltUD.Value = sliderItalicTilt.Value;
italicTiltUD.Maximum = sliderItalicTilt.Maximum;
vertexColorTopBottomBox1.TopColor = activePane.FontTopColor.Color;
vertexColorTopBottomBox1.BottomColor = activePane.FontBottomColor.Color;
stTextBox1.Text = pane.Text;
// stTextBox1.Bind(pane, pane.Text);
alighmentHCB.Bind(typeof(OriginX), pane, "HorizontalAlignment");
alighmentVCB.Bind(typeof(OriginY), pane, "VerticalAlignment");
alighmentLineCB.Bind(typeof(LineAlign), pane, "LineAlignment");
chkEnableShadows.Bind(pane, "ShadowEnabled");
chkSizeRestrict.Bind(pane, "RestrictedTextLengthEnabled");
if (pane.RestrictedTextLengthEnabled)
sizeRestrictUD.Value = (int)pane.RestrictedLength;
else
sizeRestrictUD.Value = 0;
shadowColorBox.BottomColor = pane.ShadowBackColor.Color;
shadowColorBox.TopColor = pane.ShadowForeColor.Color;
shadowItalicTiltUD.Maximum = sliderShadowItalicTilt.Maximum;
shadowItalicTiltUD.Value = pane.ShadowItalic;
sliderShadowItalicTilt.Value = (int)shadowItalicTiltUD.Value;
shadowOffseXUD.Value = pane.ShadowXY.X;
shadowOffseYUD.Value = pane.ShadowXY.Y;
shadowScaleXUD.Value = pane.ShadowXYSize.X;
shadowScaleYUD.Value = pane.ShadowXYSize.Y;
loaded = true;
}
private void OnFontColor_ValueChanged(object sender, EventArgs e)
{
if (!loaded) return;
activePane.FontTopColor.Color = vertexColorTopBottomBox1.TopColor;
activePane.FontBottomColor.Color = vertexColorTopBottomBox1.BottomColor;
}
private void OnShadowColor_ValueChanged(object sender, EventArgs e)
{
if (!loaded) return;
activePane.ShadowForeColor.Color = shadowColorBox.TopColor;
activePane.ShadowBackColor.Color = shadowColorBox.BottomColor;
}
private bool changing = false;
private void italicTiltUD_ValueChanged(object sender, EventArgs e)
{
if (changing || !loaded) return;
if (italicTiltUD.Value > sliderItalicTilt.Maximum)
return;
sliderItalicTilt.Value = (int)italicTiltUD.Value;
}
private void sliderItalicTilt_ValueChanged(object sender, EventArgs e) {
if (!loaded) return;
changing = true;
italicTiltUD.Value = sliderItalicTilt.Value;
parentEditor.PropertyChanged?.Invoke(sender, e);
changing = false;
}
private void stTextBox1_TextChanged(object sender, EventArgs e) {
activePane.Text = stTextBox1.Text;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void scaleUD_ValueChanged(object sender, EventArgs e) {
if (!loaded) return;
activePane.FontSize = new Syroot.Maths.Vector2F(
scaleXUD.Value, scaleYUD.Value);
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void scaleXUD_ValueChanged(object sender, EventArgs e)
{
}
private void scaleXUD_Scroll(object sender, ScrollEventArgs e)
{
}
private void vertexColorTopBottomBox1_Paint(object sender, PaintEventArgs e)
{
}
private void shadowItalicTiltUD_ValueChanged(object sender, EventArgs e) {
if (changing || !loaded) return;
sliderShadowItalicTilt.Value = (int)shadowItalicTiltUD.Value;
}
private void sliderItalicTild_ValueChanged(object sender, EventArgs e) {
if (!loaded) return;
changing = true;
shadowItalicTiltUD.Value = sliderShadowItalicTilt.Value;
parentEditor.PropertyChanged?.Invoke(sender, e);
changing = false;
}
private void shadowTransform_ValueChanged(object sender, EventArgs e) {
if (!loaded) return;
activePane.ShadowXY = new Syroot.Maths.Vector2F(
shadowOffseXUD.Value, shadowOffseYUD.Value);
activePane.ShadowXYSize = new Syroot.Maths.Vector2F(
shadowScaleXUD.Value, shadowScaleYUD.Value);
}
private void chkSizeRestrict_CheckedChanged(object sender, EventArgs e) {
if (chkSizeRestrict.Checked)
sizeRestrictUD.Enabled = true;
else
sizeRestrictUD.Enabled = false;
}
private void stLabel7_Click(object sender, EventArgs e)
{
}
private void alighmentH_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loaded) return;
activePane.HorizontalAlignment = (OriginX)alighmentHCB.SelectedItem;
activePane.VerticalAlignment = (OriginY)alighmentVCB.SelectedItem;
activePane.LineAlignment = (LineAlign)alighmentLineCB.SelectedItem;
}
private void fontFileCB_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loaded && fontFileCB.SelectedIndex >= 0) return;
activePane.FontName = (string)fontFileCB.SelectedItem;
activePane.FontIndex = (ushort)fontFileCB.SelectedIndex;
}
}
}

View File

@ -0,0 +1,535 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="vertexColorTopBottomBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
<data name="shadowColorBox.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -0,0 +1,877 @@
namespace LayoutBXLYT
{
partial class VertexColorPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VertexColorPanel));
this.BRAUD = new BarSlider.BarSlider();
this.BRBUD = new BarSlider.BarSlider();
this.BRGUD = new BarSlider.BarSlider();
this.BRRUD = new BarSlider.BarSlider();
this.BLAUD = new BarSlider.BarSlider();
this.BLBUD = new BarSlider.BarSlider();
this.BLGUD = new BarSlider.BarSlider();
this.BLRUD = new BarSlider.BarSlider();
this.TRAUD = new BarSlider.BarSlider();
this.TRBUD = new BarSlider.BarSlider();
this.TRGUD = new BarSlider.BarSlider();
this.TRRUD = new BarSlider.BarSlider();
this.TLAUD = new BarSlider.BarSlider();
this.TLBUD = new BarSlider.BarSlider();
this.TLGUD = new BarSlider.BarSlider();
this.TLRUD = new BarSlider.BarSlider();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.btnResetColors = new Toolbox.Library.Forms.STButton();
this.vertexColorBox1 = new Toolbox.Library.Forms.VertexColorBox();
this.SuspendLayout();
//
// BRAUD
//
this.BRAUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRAUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BRAUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BRAUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BRAUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRAUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BRAUD.DataType = null;
this.BRAUD.DrawSemitransparentThumb = false;
this.BRAUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BRAUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BRAUD.ForeColor = System.Drawing.Color.White;
this.BRAUD.IncrementAmount = 0.01F;
this.BRAUD.InputName = "A";
this.BRAUD.LargeChange = 5F;
this.BRAUD.Location = new System.Drawing.Point(455, 95);
this.BRAUD.Maximum = 300000F;
this.BRAUD.Minimum = -300000F;
this.BRAUD.Name = "BRAUD";
this.BRAUD.Precision = 0.01F;
this.BRAUD.ScaleDivisions = 1;
this.BRAUD.ScaleSubDivisions = 2;
this.BRAUD.ShowDivisionsText = false;
this.BRAUD.ShowSmallScale = false;
this.BRAUD.Size = new System.Drawing.Size(89, 25);
this.BRAUD.SmallChange = 0.01F;
this.BRAUD.TabIndex = 72;
this.BRAUD.Text = "barSlider12";
this.BRAUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRAUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BRAUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BRAUD.TickAdd = 0F;
this.BRAUD.TickColor = System.Drawing.Color.White;
this.BRAUD.TickDivide = 0F;
this.BRAUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BRAUD.UseInterlapsedBar = false;
this.BRAUD.Value = 255F;
//
// BRBUD
//
this.BRBUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRBUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BRBUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BRBUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BRBUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRBUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BRBUD.DataType = null;
this.BRBUD.DrawSemitransparentThumb = false;
this.BRBUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BRBUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BRBUD.ForeColor = System.Drawing.Color.White;
this.BRBUD.IncrementAmount = 0.01F;
this.BRBUD.InputName = "B";
this.BRBUD.LargeChange = 5F;
this.BRBUD.Location = new System.Drawing.Point(360, 95);
this.BRBUD.Maximum = 300000F;
this.BRBUD.Minimum = -300000F;
this.BRBUD.Name = "BRBUD";
this.BRBUD.Precision = 0.01F;
this.BRBUD.ScaleDivisions = 1;
this.BRBUD.ScaleSubDivisions = 2;
this.BRBUD.ShowDivisionsText = false;
this.BRBUD.ShowSmallScale = false;
this.BRBUD.Size = new System.Drawing.Size(89, 25);
this.BRBUD.SmallChange = 0.01F;
this.BRBUD.TabIndex = 71;
this.BRBUD.Text = "barSlider2";
this.BRBUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRBUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BRBUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BRBUD.TickAdd = 0F;
this.BRBUD.TickColor = System.Drawing.Color.White;
this.BRBUD.TickDivide = 0F;
this.BRBUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BRBUD.UseInterlapsedBar = false;
this.BRBUD.Value = 255F;
//
// BRGUD
//
this.BRGUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRGUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BRGUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BRGUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BRGUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRGUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BRGUD.DataType = null;
this.BRGUD.DrawSemitransparentThumb = false;
this.BRGUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BRGUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BRGUD.ForeColor = System.Drawing.Color.White;
this.BRGUD.IncrementAmount = 0.01F;
this.BRGUD.InputName = "G";
this.BRGUD.LargeChange = 5F;
this.BRGUD.Location = new System.Drawing.Point(265, 95);
this.BRGUD.Maximum = 300000F;
this.BRGUD.Minimum = -300000F;
this.BRGUD.Name = "BRGUD";
this.BRGUD.Precision = 0.01F;
this.BRGUD.ScaleDivisions = 1;
this.BRGUD.ScaleSubDivisions = 2;
this.BRGUD.ShowDivisionsText = false;
this.BRGUD.ShowSmallScale = false;
this.BRGUD.Size = new System.Drawing.Size(89, 25);
this.BRGUD.SmallChange = 0.01F;
this.BRGUD.TabIndex = 70;
this.BRGUD.Text = "barSlider2";
this.BRGUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRGUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BRGUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BRGUD.TickAdd = 0F;
this.BRGUD.TickColor = System.Drawing.Color.White;
this.BRGUD.TickDivide = 0F;
this.BRGUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BRGUD.UseInterlapsedBar = false;
this.BRGUD.Value = 255F;
//
// BRRUD
//
this.BRRUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRRUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BRRUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BRRUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BRRUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BRRUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BRRUD.DataType = null;
this.BRRUD.DrawSemitransparentThumb = false;
this.BRRUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BRRUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BRRUD.ForeColor = System.Drawing.Color.White;
this.BRRUD.IncrementAmount = 0.01F;
this.BRRUD.InputName = "R";
this.BRRUD.LargeChange = 5F;
this.BRRUD.Location = new System.Drawing.Point(170, 95);
this.BRRUD.Maximum = 300000F;
this.BRRUD.Minimum = -300000F;
this.BRRUD.Name = "BRRUD";
this.BRRUD.Precision = 0.01F;
this.BRRUD.ScaleDivisions = 1;
this.BRRUD.ScaleSubDivisions = 2;
this.BRRUD.ShowDivisionsText = false;
this.BRRUD.ShowSmallScale = false;
this.BRRUD.Size = new System.Drawing.Size(89, 25);
this.BRRUD.SmallChange = 0.01F;
this.BRRUD.TabIndex = 69;
this.BRRUD.Text = "barSlider2";
this.BRRUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BRRUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BRRUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BRRUD.TickAdd = 0F;
this.BRRUD.TickColor = System.Drawing.Color.White;
this.BRRUD.TickDivide = 0F;
this.BRRUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BRRUD.UseInterlapsedBar = false;
this.BRRUD.Value = 255F;
//
// BLAUD
//
this.BLAUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLAUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BLAUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BLAUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BLAUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLAUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BLAUD.DataType = null;
this.BLAUD.DrawSemitransparentThumb = false;
this.BLAUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BLAUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BLAUD.ForeColor = System.Drawing.Color.White;
this.BLAUD.IncrementAmount = 0.01F;
this.BLAUD.InputName = "A";
this.BLAUD.LargeChange = 5F;
this.BLAUD.Location = new System.Drawing.Point(455, 64);
this.BLAUD.Maximum = 300000F;
this.BLAUD.Minimum = -300000F;
this.BLAUD.Name = "BLAUD";
this.BLAUD.Precision = 0.01F;
this.BLAUD.ScaleDivisions = 1;
this.BLAUD.ScaleSubDivisions = 2;
this.BLAUD.ShowDivisionsText = false;
this.BLAUD.ShowSmallScale = false;
this.BLAUD.Size = new System.Drawing.Size(89, 25);
this.BLAUD.SmallChange = 0.01F;
this.BLAUD.TabIndex = 68;
this.BLAUD.Text = "barSlider8";
this.BLAUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLAUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BLAUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BLAUD.TickAdd = 0F;
this.BLAUD.TickColor = System.Drawing.Color.White;
this.BLAUD.TickDivide = 0F;
this.BLAUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BLAUD.UseInterlapsedBar = false;
this.BLAUD.Value = 255F;
//
// BLBUD
//
this.BLBUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLBUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BLBUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BLBUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BLBUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLBUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BLBUD.DataType = null;
this.BLBUD.DrawSemitransparentThumb = false;
this.BLBUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BLBUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BLBUD.ForeColor = System.Drawing.Color.White;
this.BLBUD.IncrementAmount = 0.01F;
this.BLBUD.InputName = "B";
this.BLBUD.LargeChange = 5F;
this.BLBUD.Location = new System.Drawing.Point(360, 64);
this.BLBUD.Maximum = 300000F;
this.BLBUD.Minimum = -300000F;
this.BLBUD.Name = "BLBUD";
this.BLBUD.Precision = 0.01F;
this.BLBUD.ScaleDivisions = 1;
this.BLBUD.ScaleSubDivisions = 2;
this.BLBUD.ShowDivisionsText = false;
this.BLBUD.ShowSmallScale = false;
this.BLBUD.Size = new System.Drawing.Size(89, 25);
this.BLBUD.SmallChange = 0.01F;
this.BLBUD.TabIndex = 67;
this.BLBUD.Text = "barSlider2";
this.BLBUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLBUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BLBUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BLBUD.TickAdd = 0F;
this.BLBUD.TickColor = System.Drawing.Color.White;
this.BLBUD.TickDivide = 0F;
this.BLBUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BLBUD.UseInterlapsedBar = false;
this.BLBUD.Value = 255F;
//
// BLGUD
//
this.BLGUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLGUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BLGUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BLGUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BLGUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLGUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BLGUD.DataType = null;
this.BLGUD.DrawSemitransparentThumb = false;
this.BLGUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BLGUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BLGUD.ForeColor = System.Drawing.Color.White;
this.BLGUD.IncrementAmount = 0.01F;
this.BLGUD.InputName = "G";
this.BLGUD.LargeChange = 5F;
this.BLGUD.Location = new System.Drawing.Point(265, 64);
this.BLGUD.Maximum = 300000F;
this.BLGUD.Minimum = -300000F;
this.BLGUD.Name = "BLGUD";
this.BLGUD.Precision = 0.01F;
this.BLGUD.ScaleDivisions = 1;
this.BLGUD.ScaleSubDivisions = 2;
this.BLGUD.ShowDivisionsText = false;
this.BLGUD.ShowSmallScale = false;
this.BLGUD.Size = new System.Drawing.Size(89, 25);
this.BLGUD.SmallChange = 0.01F;
this.BLGUD.TabIndex = 66;
this.BLGUD.Text = "barSlider2";
this.BLGUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLGUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BLGUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BLGUD.TickAdd = 0F;
this.BLGUD.TickColor = System.Drawing.Color.White;
this.BLGUD.TickDivide = 0F;
this.BLGUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BLGUD.UseInterlapsedBar = false;
this.BLGUD.Value = 255F;
//
// BLRUD
//
this.BLRUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLRUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.BLRUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.BLRUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BLRUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.BLRUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.BLRUD.DataType = null;
this.BLRUD.DrawSemitransparentThumb = false;
this.BLRUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.BLRUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.BLRUD.ForeColor = System.Drawing.Color.White;
this.BLRUD.IncrementAmount = 0.01F;
this.BLRUD.InputName = "R";
this.BLRUD.LargeChange = 5F;
this.BLRUD.Location = new System.Drawing.Point(170, 64);
this.BLRUD.Maximum = 300000F;
this.BLRUD.Minimum = -300000F;
this.BLRUD.Name = "BLRUD";
this.BLRUD.Precision = 0.01F;
this.BLRUD.ScaleDivisions = 1;
this.BLRUD.ScaleSubDivisions = 2;
this.BLRUD.ShowDivisionsText = false;
this.BLRUD.ShowSmallScale = false;
this.BLRUD.Size = new System.Drawing.Size(89, 25);
this.BLRUD.SmallChange = 0.01F;
this.BLRUD.TabIndex = 65;
this.BLRUD.Text = "barSlider2";
this.BLRUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.BLRUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.BLRUD.ThumbSize = new System.Drawing.Size(1, 1);
this.BLRUD.TickAdd = 0F;
this.BLRUD.TickColor = System.Drawing.Color.White;
this.BLRUD.TickDivide = 0F;
this.BLRUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.BLRUD.UseInterlapsedBar = false;
this.BLRUD.Value = 255F;
//
// TRAUD
//
this.TRAUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRAUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TRAUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TRAUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TRAUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRAUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TRAUD.DataType = null;
this.TRAUD.DrawSemitransparentThumb = false;
this.TRAUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TRAUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TRAUD.ForeColor = System.Drawing.Color.White;
this.TRAUD.IncrementAmount = 0.01F;
this.TRAUD.InputName = "A";
this.TRAUD.LargeChange = 5F;
this.TRAUD.Location = new System.Drawing.Point(455, 33);
this.TRAUD.Maximum = 300000F;
this.TRAUD.Minimum = -300000F;
this.TRAUD.Name = "TRAUD";
this.TRAUD.Precision = 0.01F;
this.TRAUD.ScaleDivisions = 1;
this.TRAUD.ScaleSubDivisions = 2;
this.TRAUD.ShowDivisionsText = false;
this.TRAUD.ShowSmallScale = false;
this.TRAUD.Size = new System.Drawing.Size(89, 25);
this.TRAUD.SmallChange = 0.01F;
this.TRAUD.TabIndex = 64;
this.TRAUD.Text = "barSlider4";
this.TRAUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRAUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TRAUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TRAUD.TickAdd = 0F;
this.TRAUD.TickColor = System.Drawing.Color.White;
this.TRAUD.TickDivide = 0F;
this.TRAUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TRAUD.UseInterlapsedBar = false;
this.TRAUD.Value = 255F;
//
// TRBUD
//
this.TRBUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRBUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TRBUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TRBUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TRBUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRBUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TRBUD.DataType = null;
this.TRBUD.DrawSemitransparentThumb = false;
this.TRBUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TRBUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TRBUD.ForeColor = System.Drawing.Color.White;
this.TRBUD.IncrementAmount = 0.01F;
this.TRBUD.InputName = "B";
this.TRBUD.LargeChange = 5F;
this.TRBUD.Location = new System.Drawing.Point(360, 33);
this.TRBUD.Maximum = 300000F;
this.TRBUD.Minimum = -300000F;
this.TRBUD.Name = "TRBUD";
this.TRBUD.Precision = 0.01F;
this.TRBUD.ScaleDivisions = 1;
this.TRBUD.ScaleSubDivisions = 2;
this.TRBUD.ShowDivisionsText = false;
this.TRBUD.ShowSmallScale = false;
this.TRBUD.Size = new System.Drawing.Size(89, 25);
this.TRBUD.SmallChange = 0.01F;
this.TRBUD.TabIndex = 63;
this.TRBUD.Text = "barSlider2";
this.TRBUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRBUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TRBUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TRBUD.TickAdd = 0F;
this.TRBUD.TickColor = System.Drawing.Color.White;
this.TRBUD.TickDivide = 0F;
this.TRBUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TRBUD.UseInterlapsedBar = false;
this.TRBUD.Value = 255F;
//
// TRGUD
//
this.TRGUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRGUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TRGUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TRGUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TRGUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRGUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TRGUD.DataType = null;
this.TRGUD.DrawSemitransparentThumb = false;
this.TRGUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TRGUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TRGUD.ForeColor = System.Drawing.Color.White;
this.TRGUD.IncrementAmount = 0.01F;
this.TRGUD.InputName = "G";
this.TRGUD.LargeChange = 5F;
this.TRGUD.Location = new System.Drawing.Point(265, 33);
this.TRGUD.Maximum = 300000F;
this.TRGUD.Minimum = -300000F;
this.TRGUD.Name = "TRGUD";
this.TRGUD.Precision = 0.01F;
this.TRGUD.ScaleDivisions = 1;
this.TRGUD.ScaleSubDivisions = 2;
this.TRGUD.ShowDivisionsText = false;
this.TRGUD.ShowSmallScale = false;
this.TRGUD.Size = new System.Drawing.Size(89, 25);
this.TRGUD.SmallChange = 0.01F;
this.TRGUD.TabIndex = 62;
this.TRGUD.Text = "barSlider2";
this.TRGUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRGUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TRGUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TRGUD.TickAdd = 0F;
this.TRGUD.TickColor = System.Drawing.Color.White;
this.TRGUD.TickDivide = 0F;
this.TRGUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TRGUD.UseInterlapsedBar = false;
this.TRGUD.Value = 255F;
//
// TRRUD
//
this.TRRUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRRUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TRRUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TRRUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TRRUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TRRUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TRRUD.DataType = null;
this.TRRUD.DrawSemitransparentThumb = false;
this.TRRUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TRRUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TRRUD.ForeColor = System.Drawing.Color.White;
this.TRRUD.IncrementAmount = 0.01F;
this.TRRUD.InputName = "R";
this.TRRUD.LargeChange = 5F;
this.TRRUD.Location = new System.Drawing.Point(170, 33);
this.TRRUD.Maximum = 300000F;
this.TRRUD.Minimum = -300000F;
this.TRRUD.Name = "TRRUD";
this.TRRUD.Precision = 0.01F;
this.TRRUD.ScaleDivisions = 1;
this.TRRUD.ScaleSubDivisions = 2;
this.TRRUD.ShowDivisionsText = false;
this.TRRUD.ShowSmallScale = false;
this.TRRUD.Size = new System.Drawing.Size(89, 25);
this.TRRUD.SmallChange = 0.01F;
this.TRRUD.TabIndex = 61;
this.TRRUD.Text = "barSlider2";
this.TRRUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TRRUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TRRUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TRRUD.TickAdd = 0F;
this.TRRUD.TickColor = System.Drawing.Color.White;
this.TRRUD.TickDivide = 0F;
this.TRRUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TRRUD.UseInterlapsedBar = false;
this.TRRUD.Value = 255F;
//
// TLAUD
//
this.TLAUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLAUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TLAUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TLAUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TLAUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLAUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TLAUD.DataType = null;
this.TLAUD.DrawSemitransparentThumb = false;
this.TLAUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TLAUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TLAUD.ForeColor = System.Drawing.Color.White;
this.TLAUD.IncrementAmount = 0.01F;
this.TLAUD.InputName = "A";
this.TLAUD.LargeChange = 5F;
this.TLAUD.Location = new System.Drawing.Point(455, 2);
this.TLAUD.Maximum = 300000F;
this.TLAUD.Minimum = -300000F;
this.TLAUD.Name = "TLAUD";
this.TLAUD.Precision = 0.01F;
this.TLAUD.ScaleDivisions = 1;
this.TLAUD.ScaleSubDivisions = 2;
this.TLAUD.ShowDivisionsText = false;
this.TLAUD.ShowSmallScale = false;
this.TLAUD.Size = new System.Drawing.Size(89, 25);
this.TLAUD.SmallChange = 0.01F;
this.TLAUD.TabIndex = 60;
this.TLAUD.Text = "barSlider2";
this.TLAUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLAUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TLAUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TLAUD.TickAdd = 0F;
this.TLAUD.TickColor = System.Drawing.Color.White;
this.TLAUD.TickDivide = 0F;
this.TLAUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TLAUD.UseInterlapsedBar = false;
this.TLAUD.Value = 255F;
//
// TLBUD
//
this.TLBUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLBUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TLBUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TLBUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TLBUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLBUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TLBUD.DataType = null;
this.TLBUD.DrawSemitransparentThumb = false;
this.TLBUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TLBUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TLBUD.ForeColor = System.Drawing.Color.White;
this.TLBUD.IncrementAmount = 0.01F;
this.TLBUD.InputName = "B";
this.TLBUD.LargeChange = 5F;
this.TLBUD.Location = new System.Drawing.Point(360, 2);
this.TLBUD.Maximum = 300000F;
this.TLBUD.Minimum = -300000F;
this.TLBUD.Name = "TLBUD";
this.TLBUD.Precision = 0.01F;
this.TLBUD.ScaleDivisions = 1;
this.TLBUD.ScaleSubDivisions = 2;
this.TLBUD.ShowDivisionsText = false;
this.TLBUD.ShowSmallScale = false;
this.TLBUD.Size = new System.Drawing.Size(89, 25);
this.TLBUD.SmallChange = 0.01F;
this.TLBUD.TabIndex = 59;
this.TLBUD.Text = "barSlider2";
this.TLBUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLBUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TLBUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TLBUD.TickAdd = 0F;
this.TLBUD.TickColor = System.Drawing.Color.White;
this.TLBUD.TickDivide = 0F;
this.TLBUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TLBUD.UseInterlapsedBar = false;
this.TLBUD.Value = 255F;
//
// TLGUD
//
this.TLGUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLGUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TLGUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TLGUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TLGUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLGUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TLGUD.DataType = null;
this.TLGUD.DrawSemitransparentThumb = false;
this.TLGUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TLGUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TLGUD.ForeColor = System.Drawing.Color.White;
this.TLGUD.IncrementAmount = 0.01F;
this.TLGUD.InputName = "G";
this.TLGUD.LargeChange = 5F;
this.TLGUD.Location = new System.Drawing.Point(265, 2);
this.TLGUD.Maximum = 300000F;
this.TLGUD.Minimum = -300000F;
this.TLGUD.Name = "TLGUD";
this.TLGUD.Precision = 0.01F;
this.TLGUD.ScaleDivisions = 1;
this.TLGUD.ScaleSubDivisions = 2;
this.TLGUD.ShowDivisionsText = false;
this.TLGUD.ShowSmallScale = false;
this.TLGUD.Size = new System.Drawing.Size(89, 25);
this.TLGUD.SmallChange = 0.01F;
this.TLGUD.TabIndex = 58;
this.TLGUD.Text = "barSlider2";
this.TLGUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLGUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TLGUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TLGUD.TickAdd = 0F;
this.TLGUD.TickColor = System.Drawing.Color.White;
this.TLGUD.TickDivide = 0F;
this.TLGUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TLGUD.UseInterlapsedBar = false;
this.TLGUD.Value = 255F;
//
// TLRUD
//
this.TLRUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLRUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.TLRUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.TLRUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.TLRUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.TLRUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.TLRUD.DataType = null;
this.TLRUD.DrawSemitransparentThumb = false;
this.TLRUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.TLRUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.TLRUD.ForeColor = System.Drawing.Color.White;
this.TLRUD.IncrementAmount = 0.01F;
this.TLRUD.InputName = "R";
this.TLRUD.LargeChange = 5F;
this.TLRUD.Location = new System.Drawing.Point(170, 2);
this.TLRUD.Maximum = 300000F;
this.TLRUD.Minimum = -300000F;
this.TLRUD.Name = "TLRUD";
this.TLRUD.Precision = 0.01F;
this.TLRUD.ScaleDivisions = 1;
this.TLRUD.ScaleSubDivisions = 2;
this.TLRUD.ShowDivisionsText = false;
this.TLRUD.ShowSmallScale = false;
this.TLRUD.Size = new System.Drawing.Size(89, 25);
this.TLRUD.SmallChange = 0.01F;
this.TLRUD.TabIndex = 57;
this.TLRUD.Text = "barSlider2";
this.TLRUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.TLRUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.TLRUD.ThumbSize = new System.Drawing.Size(1, 1);
this.TLRUD.TickAdd = 0F;
this.TLRUD.TickColor = System.Drawing.Color.White;
this.TLRUD.TickDivide = 0F;
this.TLRUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.TLRUD.UseInterlapsedBar = false;
this.TLRUD.Value = 255F;
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(140, 99);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(25, 13);
this.stLabel3.TabIndex = 56;
this.stLabel3.Text = "BR:";
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(140, 70);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(23, 13);
this.stLabel4.TabIndex = 55;
this.stLabel4.Text = "BL:";
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(140, 40);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(25, 13);
this.stLabel2.TabIndex = 54;
this.stLabel2.Text = "TR:";
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(140, 11);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(23, 13);
this.stLabel1.TabIndex = 53;
this.stLabel1.Text = "TL:";
//
// btnResetColors
//
this.btnResetColors.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnResetColors.Location = new System.Drawing.Point(3, 128);
this.btnResetColors.Name = "btnResetColors";
this.btnResetColors.Size = new System.Drawing.Size(129, 23);
this.btnResetColors.TabIndex = 74;
this.btnResetColors.Text = "Reset Colors";
this.btnResetColors.UseVisualStyleBackColor = false;
//
// vertexColorBox1
//
this.vertexColorBox1.BackColor = System.Drawing.Color.Transparent;
this.vertexColorBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("vertexColorBox1.BackgroundImage")));
this.vertexColorBox1.BottomLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.BottomRightColor = System.Drawing.Color.Empty;
this.vertexColorBox1.Location = new System.Drawing.Point(3, 3);
this.vertexColorBox1.Name = "vertexColorBox1";
this.vertexColorBox1.Size = new System.Drawing.Size(129, 119);
this.vertexColorBox1.TabIndex = 73;
this.vertexColorBox1.TopLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.TopRightColor = System.Drawing.Color.Empty;
//
// VertexColorPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.btnResetColors);
this.Controls.Add(this.vertexColorBox1);
this.Controls.Add(this.BRAUD);
this.Controls.Add(this.BRBUD);
this.Controls.Add(this.BRGUD);
this.Controls.Add(this.BRRUD);
this.Controls.Add(this.BLAUD);
this.Controls.Add(this.BLBUD);
this.Controls.Add(this.BLGUD);
this.Controls.Add(this.BLRUD);
this.Controls.Add(this.TRAUD);
this.Controls.Add(this.TRBUD);
this.Controls.Add(this.TRGUD);
this.Controls.Add(this.TRRUD);
this.Controls.Add(this.TLAUD);
this.Controls.Add(this.TLBUD);
this.Controls.Add(this.TLGUD);
this.Controls.Add(this.TLRUD);
this.Controls.Add(this.stLabel3);
this.Controls.Add(this.stLabel4);
this.Controls.Add(this.stLabel2);
this.Controls.Add(this.stLabel1);
this.Name = "VertexColorPanel";
this.Size = new System.Drawing.Size(559, 158);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private BarSlider.BarSlider BRAUD;
private BarSlider.BarSlider BRBUD;
private BarSlider.BarSlider BRGUD;
private BarSlider.BarSlider BRRUD;
private BarSlider.BarSlider BLAUD;
private BarSlider.BarSlider BLBUD;
private BarSlider.BarSlider BLGUD;
private BarSlider.BarSlider BLRUD;
private BarSlider.BarSlider TRAUD;
private BarSlider.BarSlider TRBUD;
private BarSlider.BarSlider TRGUD;
private BarSlider.BarSlider TRRUD;
private BarSlider.BarSlider TLAUD;
private BarSlider.BarSlider TLBUD;
private BarSlider.BarSlider TLGUD;
private BarSlider.BarSlider TLRUD;
private Toolbox.Library.Forms.STLabel stLabel3;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STButton btnResetColors;
private Toolbox.Library.Forms.VertexColorBox vertexColorBox1;
}
}

View File

@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library;
namespace LayoutBXLYT
{
public partial class VertexColorPanel : EditorPanelBase
{
public EventHandler ColorChanged;
public STColor8 ColorTopLeft { get; set; }
public STColor8 ColorTopRight { get; set; }
public STColor8 ColorBottomLeft { get; set; }
public STColor8 ColorBottomRight { get; set; }
public bool IsAnimationMode = false;
public VertexColorPanel()
{
InitializeComponent();
vertexColorBox1.OnColorChanged += OnColorChanged;
}
public void LoadColors(Color[] colors)
{
SetValue(TLRUD, colors[0].R, false);
SetValue(TLGUD, colors[0].G, false);
SetValue(TLBUD, colors[0].B, false);
SetValue(TLAUD, colors[0].A, false);
SetValue(TRRUD, colors[1].R, false);
SetValue(TRGUD, colors[1].G, false);
SetValue(TRBUD, colors[1].B, false);
SetValue(TRAUD, colors[1].A, false);
SetValue(BLRUD, colors[2].R, false);
SetValue(BLGUD, colors[2].G, false);
SetValue(BLBUD, colors[2].B, false);
SetValue(BLAUD, colors[2].A, false);
SetValue(BRRUD, colors[3].R, false);
SetValue(BRGUD, colors[3].G, false);
SetValue(BRBUD, colors[3].B, false);
SetValue(BRAUD, colors[3].A, false);
}
private void UpdateColors()
{
vertexColorBox1.TopLeftColor = Color.FromArgb((byte)TLAUD.Value, (byte)TLRUD.Value, (byte)TLGUD.Value, (byte)TLBUD.Value);
vertexColorBox1.TopRightColor = Color.FromArgb((byte)TRAUD.Value, (byte)TRRUD.Value, (byte)TRGUD.Value, (byte)TRBUD.Value);
vertexColorBox1.BottomLeftColor = Color.FromArgb((byte)BLAUD.Value, (byte)BLRUD.Value, (byte)BLGUD.Value, (byte)BLBUD.Value);
vertexColorBox1.BottomRightColor = Color.FromArgb((byte)BRAUD.Value, (byte)BRRUD.Value, (byte)BRGUD.Value, (byte)BRBUD.Value);
}
private void OnColorChanged(object sender, EventArgs e)
{
SetKeyedValue(TLRUD, vertexColorBox1.TopLeftColor.R);
SetKeyedValue(TLGUD, vertexColorBox1.TopLeftColor.G);
SetKeyedValue(TLBUD, vertexColorBox1.TopLeftColor.B);
SetKeyedValue(TLAUD, vertexColorBox1.TopLeftColor.A);
SetKeyedValue(TRRUD, vertexColorBox1.TopRightColor.R);
SetKeyedValue(TRGUD, vertexColorBox1.TopRightColor.G);
SetKeyedValue(TRBUD, vertexColorBox1.TopRightColor.B);
SetKeyedValue(TRAUD, vertexColorBox1.TopRightColor.A);
SetKeyedValue(BLRUD, vertexColorBox1.BottomLeftColor.R);
SetKeyedValue(BLGUD, vertexColorBox1.BottomLeftColor.G);
SetKeyedValue(BLBUD, vertexColorBox1.BottomLeftColor.B);
SetKeyedValue(BLAUD, vertexColorBox1.BottomLeftColor.A);
SetKeyedValue(BRRUD, vertexColorBox1.BottomRightColor.R);
SetKeyedValue(BRGUD, vertexColorBox1.BottomRightColor.G);
SetKeyedValue(BRBUD, vertexColorBox1.BottomRightColor.B);
SetKeyedValue(BRAUD, vertexColorBox1.BottomRightColor.A);
ColorChanged?.Invoke(sender, e);
}
private void SetKeyedValue(BarSlider.BarSlider barSlider, float value)
{
bool changed = barSlider.Value != value;
if (!changed)
return;
SetValue(barSlider, value, IsAnimationMode);
}
private void SetValue(BarSlider.BarSlider barSlider, float value, bool keyed)
{
barSlider.Maximum = 255;
barSlider.Minimum = 0;
barSlider.Value = value;
}
}
}

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="vertexColorBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -0,0 +1,454 @@
namespace LayoutBXLYT
{
partial class WindowContentEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WindowContentEditor));
this.frameRightUD = new BarSlider.BarSlider();
this.frameLeftUD = new BarSlider.BarSlider();
this.frameDownUD = new BarSlider.BarSlider();
this.frameUpUD = new BarSlider.BarSlider();
this.stLabel5 = new Toolbox.Library.Forms.STLabel();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.stFlowLayoutPanel1 = new Toolbox.Library.Forms.STFlowLayoutPanel();
this.stDropDownPanel1 = new Toolbox.Library.Forms.STDropDownPanel();
this.stDropDownPanel2 = new Toolbox.Library.Forms.STDropDownPanel();
this.btnResetColors = new Toolbox.Library.Forms.STButton();
this.vertexColorBox1 = new Toolbox.Library.Forms.VertexColorBox();
this.chkUseVtxColorsOnFrames = new Toolbox.Library.Forms.STCheckBox();
this.stDropDownPanel3 = new Toolbox.Library.Forms.STDropDownPanel();
this.chkMaterialForAll = new Toolbox.Library.Forms.STCheckBox();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.texRotateCB = new Toolbox.Library.Forms.STComboBox();
this.stFlowLayoutPanel1.SuspendLayout();
this.stDropDownPanel1.SuspendLayout();
this.stDropDownPanel2.SuspendLayout();
this.stDropDownPanel3.SuspendLayout();
this.SuspendLayout();
//
// frameRightUD
//
this.frameRightUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameRightUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.frameRightUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.frameRightUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.frameRightUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameRightUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.frameRightUD.DataType = null;
this.frameRightUD.DrawSemitransparentThumb = false;
this.frameRightUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.frameRightUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.frameRightUD.ForeColor = System.Drawing.Color.White;
this.frameRightUD.IncrementAmount = 0.01F;
this.frameRightUD.InputName = "Y";
this.frameRightUD.LargeChange = 5F;
this.frameRightUD.Location = new System.Drawing.Point(204, 60);
this.frameRightUD.Maximum = 300000F;
this.frameRightUD.Minimum = -300000F;
this.frameRightUD.Name = "frameRightUD";
this.frameRightUD.Precision = 0.01F;
this.frameRightUD.ScaleDivisions = 1;
this.frameRightUD.ScaleSubDivisions = 2;
this.frameRightUD.ShowDivisionsText = false;
this.frameRightUD.ShowSmallScale = false;
this.frameRightUD.Size = new System.Drawing.Size(107, 25);
this.frameRightUD.SmallChange = 0.01F;
this.frameRightUD.TabIndex = 55;
this.frameRightUD.Text = "sizeXUD";
this.frameRightUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameRightUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.frameRightUD.ThumbSize = new System.Drawing.Size(1, 1);
this.frameRightUD.TickAdd = 0F;
this.frameRightUD.TickColor = System.Drawing.Color.White;
this.frameRightUD.TickDivide = 0F;
this.frameRightUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.frameRightUD.UseInterlapsedBar = false;
this.frameRightUD.Value = 30F;
this.frameRightUD.ValueChanged += new System.EventHandler(this.frameUD_ValueChanged);
//
// frameLeftUD
//
this.frameLeftUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameLeftUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.frameLeftUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.frameLeftUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.frameLeftUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameLeftUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.frameLeftUD.DataType = null;
this.frameLeftUD.DrawSemitransparentThumb = false;
this.frameLeftUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.frameLeftUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.frameLeftUD.ForeColor = System.Drawing.Color.White;
this.frameLeftUD.IncrementAmount = 0.01F;
this.frameLeftUD.InputName = "Y";
this.frameLeftUD.LargeChange = 5F;
this.frameLeftUD.Location = new System.Drawing.Point(204, 29);
this.frameLeftUD.Maximum = 300000F;
this.frameLeftUD.Minimum = -300000F;
this.frameLeftUD.Name = "frameLeftUD";
this.frameLeftUD.Precision = 0.01F;
this.frameLeftUD.ScaleDivisions = 1;
this.frameLeftUD.ScaleSubDivisions = 2;
this.frameLeftUD.ShowDivisionsText = false;
this.frameLeftUD.ShowSmallScale = false;
this.frameLeftUD.Size = new System.Drawing.Size(107, 25);
this.frameLeftUD.SmallChange = 0.01F;
this.frameLeftUD.TabIndex = 54;
this.frameLeftUD.Text = "barSlider2";
this.frameLeftUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameLeftUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.frameLeftUD.ThumbSize = new System.Drawing.Size(1, 1);
this.frameLeftUD.TickAdd = 0F;
this.frameLeftUD.TickColor = System.Drawing.Color.White;
this.frameLeftUD.TickDivide = 0F;
this.frameLeftUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.frameLeftUD.UseInterlapsedBar = false;
this.frameLeftUD.Value = 30F;
this.frameLeftUD.ValueChanged += new System.EventHandler(this.frameUD_ValueChanged);
//
// frameDownUD
//
this.frameDownUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameDownUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.frameDownUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.frameDownUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.frameDownUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameDownUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.frameDownUD.DataType = null;
this.frameDownUD.DrawSemitransparentThumb = false;
this.frameDownUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.frameDownUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.frameDownUD.ForeColor = System.Drawing.Color.White;
this.frameDownUD.IncrementAmount = 0.01F;
this.frameDownUD.InputName = "X";
this.frameDownUD.LargeChange = 5F;
this.frameDownUD.Location = new System.Drawing.Point(42, 60);
this.frameDownUD.Maximum = 300000F;
this.frameDownUD.Minimum = -300000F;
this.frameDownUD.Name = "frameDownUD";
this.frameDownUD.Precision = 0.01F;
this.frameDownUD.ScaleDivisions = 1;
this.frameDownUD.ScaleSubDivisions = 2;
this.frameDownUD.ShowDivisionsText = false;
this.frameDownUD.ShowSmallScale = false;
this.frameDownUD.Size = new System.Drawing.Size(107, 25);
this.frameDownUD.SmallChange = 0.01F;
this.frameDownUD.TabIndex = 53;
this.frameDownUD.Text = "sizeXUD";
this.frameDownUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameDownUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.frameDownUD.ThumbSize = new System.Drawing.Size(1, 1);
this.frameDownUD.TickAdd = 0F;
this.frameDownUD.TickColor = System.Drawing.Color.White;
this.frameDownUD.TickDivide = 0F;
this.frameDownUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.frameDownUD.UseInterlapsedBar = false;
this.frameDownUD.Value = 30F;
this.frameDownUD.ValueChanged += new System.EventHandler(this.frameUD_ValueChanged);
//
// frameUpUD
//
this.frameUpUD.ActiveEditColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameUpUD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.BarInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.frameUpUD.BarPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
this.frameUpUD.BarPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.frameUpUD.BarPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.frameUpUD.BorderRoundRectSize = new System.Drawing.Size(32, 32);
this.frameUpUD.DataType = null;
this.frameUpUD.DrawSemitransparentThumb = false;
this.frameUpUD.ElapsedInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.ElapsedPenColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.ElapsedPenColorMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
this.frameUpUD.ElapsedPenColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.frameUpUD.ForeColor = System.Drawing.Color.White;
this.frameUpUD.IncrementAmount = 0.01F;
this.frameUpUD.InputName = "X";
this.frameUpUD.LargeChange = 5F;
this.frameUpUD.Location = new System.Drawing.Point(42, 29);
this.frameUpUD.Maximum = 300000F;
this.frameUpUD.Minimum = -300000F;
this.frameUpUD.Name = "frameUpUD";
this.frameUpUD.Precision = 0.01F;
this.frameUpUD.ScaleDivisions = 1;
this.frameUpUD.ScaleSubDivisions = 2;
this.frameUpUD.ShowDivisionsText = false;
this.frameUpUD.ShowSmallScale = false;
this.frameUpUD.Size = new System.Drawing.Size(107, 25);
this.frameUpUD.SmallChange = 0.01F;
this.frameUpUD.TabIndex = 52;
this.frameUpUD.Text = "barSlider2";
this.frameUpUD.ThumbInnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.ThumbPenColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
this.frameUpUD.ThumbRoundRectSize = new System.Drawing.Size(1, 1);
this.frameUpUD.ThumbSize = new System.Drawing.Size(1, 1);
this.frameUpUD.TickAdd = 0F;
this.frameUpUD.TickColor = System.Drawing.Color.White;
this.frameUpUD.TickDivide = 0F;
this.frameUpUD.TickStyle = System.Windows.Forms.TickStyle.None;
this.frameUpUD.UseInterlapsedBar = false;
this.frameUpUD.Value = 30F;
this.frameUpUD.ValueChanged += new System.EventHandler(this.frameUD_ValueChanged);
//
// stLabel5
//
this.stLabel5.AutoSize = true;
this.stLabel5.Location = new System.Drawing.Point(-2, 63);
this.stLabel5.Name = "stLabel5";
this.stLabel5.Size = new System.Drawing.Size(38, 13);
this.stLabel5.TabIndex = 51;
this.stLabel5.Text = "Down:";
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(-2, 33);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(24, 13);
this.stLabel4.TabIndex = 50;
this.stLabel4.Text = "Up:";
//
// stLabel1
//
this.stLabel1.AutoSize = true;
this.stLabel1.Location = new System.Drawing.Point(164, 67);
this.stLabel1.Name = "stLabel1";
this.stLabel1.Size = new System.Drawing.Size(35, 13);
this.stLabel1.TabIndex = 57;
this.stLabel1.Text = "Right:";
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(164, 37);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(28, 13);
this.stLabel2.TabIndex = 56;
this.stLabel2.Text = "Left:";
//
// stFlowLayoutPanel1
//
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel1);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel2);
this.stFlowLayoutPanel1.Controls.Add(this.stDropDownPanel3);
this.stFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.stFlowLayoutPanel1.FixedHeight = false;
this.stFlowLayoutPanel1.FixedWidth = true;
this.stFlowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.stFlowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stFlowLayoutPanel1.Name = "stFlowLayoutPanel1";
this.stFlowLayoutPanel1.Size = new System.Drawing.Size(353, 458);
this.stFlowLayoutPanel1.TabIndex = 58;
//
// stDropDownPanel1
//
this.stDropDownPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel1.Controls.Add(this.stLabel1);
this.stDropDownPanel1.Controls.Add(this.frameRightUD);
this.stDropDownPanel1.Controls.Add(this.stLabel2);
this.stDropDownPanel1.Controls.Add(this.stLabel4);
this.stDropDownPanel1.Controls.Add(this.stLabel5);
this.stDropDownPanel1.Controls.Add(this.frameLeftUD);
this.stDropDownPanel1.Controls.Add(this.frameUpUD);
this.stDropDownPanel1.Controls.Add(this.frameDownUD);
this.stDropDownPanel1.ExpandedHeight = 0;
this.stDropDownPanel1.IsExpanded = true;
this.stDropDownPanel1.Location = new System.Drawing.Point(0, 0);
this.stDropDownPanel1.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel1.Name = "stDropDownPanel1";
this.stDropDownPanel1.PanelName = "Frame Sizes";
this.stDropDownPanel1.PanelValueName = "";
this.stDropDownPanel1.SetIcon = null;
this.stDropDownPanel1.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel1.Size = new System.Drawing.Size(353, 103);
this.stDropDownPanel1.TabIndex = 0;
//
// stDropDownPanel2
//
this.stDropDownPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel2.Controls.Add(this.btnResetColors);
this.stDropDownPanel2.Controls.Add(this.vertexColorBox1);
this.stDropDownPanel2.Controls.Add(this.chkUseVtxColorsOnFrames);
this.stDropDownPanel2.ExpandedHeight = 0;
this.stDropDownPanel2.IsExpanded = true;
this.stDropDownPanel2.Location = new System.Drawing.Point(0, 103);
this.stDropDownPanel2.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel2.Name = "stDropDownPanel2";
this.stDropDownPanel2.PanelName = "Vertex Colors";
this.stDropDownPanel2.PanelValueName = "";
this.stDropDownPanel2.SetIcon = null;
this.stDropDownPanel2.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel2.Size = new System.Drawing.Size(353, 147);
this.stDropDownPanel2.TabIndex = 1;
//
// btnResetColors
//
this.btnResetColors.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnResetColors.Location = new System.Drawing.Point(148, 30);
this.btnResetColors.Name = "btnResetColors";
this.btnResetColors.Size = new System.Drawing.Size(94, 23);
this.btnResetColors.TabIndex = 4;
this.btnResetColors.Text = "Reset Colors";
this.btnResetColors.UseVisualStyleBackColor = false;
this.btnResetColors.Click += new System.EventHandler(this.btnResetColors_Click);
//
// vertexColorBox1
//
this.vertexColorBox1.BackColor = System.Drawing.Color.Transparent;
this.vertexColorBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("vertexColorBox1.BackgroundImage")));
this.vertexColorBox1.BottomLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.BottomRightColor = System.Drawing.Color.Empty;
this.vertexColorBox1.Location = new System.Drawing.Point(42, 30);
this.vertexColorBox1.Name = "vertexColorBox1";
this.vertexColorBox1.Size = new System.Drawing.Size(100, 100);
this.vertexColorBox1.TabIndex = 3;
this.vertexColorBox1.TopLeftColor = System.Drawing.Color.Empty;
this.vertexColorBox1.TopRightColor = System.Drawing.Color.Empty;
//
// chkUseVtxColorsOnFrames
//
this.chkUseVtxColorsOnFrames.AutoSize = true;
this.chkUseVtxColorsOnFrames.Location = new System.Drawing.Point(148, 113);
this.chkUseVtxColorsOnFrames.Name = "chkUseVtxColorsOnFrames";
this.chkUseVtxColorsOnFrames.Size = new System.Drawing.Size(99, 17);
this.chkUseVtxColorsOnFrames.TabIndex = 1;
this.chkUseVtxColorsOnFrames.Text = "Use On Frames";
this.chkUseVtxColorsOnFrames.UseVisualStyleBackColor = true;
//
// stDropDownPanel3
//
this.stDropDownPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stDropDownPanel3.Controls.Add(this.chkMaterialForAll);
this.stDropDownPanel3.Controls.Add(this.stLabel3);
this.stDropDownPanel3.Controls.Add(this.texRotateCB);
this.stDropDownPanel3.ExpandedHeight = 0;
this.stDropDownPanel3.IsExpanded = true;
this.stDropDownPanel3.Location = new System.Drawing.Point(0, 250);
this.stDropDownPanel3.Margin = new System.Windows.Forms.Padding(0);
this.stDropDownPanel3.Name = "stDropDownPanel3";
this.stDropDownPanel3.PanelName = "Material Settings";
this.stDropDownPanel3.PanelValueName = "";
this.stDropDownPanel3.SetIcon = null;
this.stDropDownPanel3.SetIconAlphaColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.SetIconColor = System.Drawing.SystemColors.Control;
this.stDropDownPanel3.Size = new System.Drawing.Size(353, 116);
this.stDropDownPanel3.TabIndex = 2;
//
// chkMaterialForAll
//
this.chkMaterialForAll.AutoSize = true;
this.chkMaterialForAll.Location = new System.Drawing.Point(19, 70);
this.chkMaterialForAll.Name = "chkMaterialForAll";
this.chkMaterialForAll.Size = new System.Drawing.Size(142, 17);
this.chkMaterialForAll.TabIndex = 3;
this.chkMaterialForAll.Text = "Share Top Left Materials";
this.chkMaterialForAll.UseVisualStyleBackColor = true;
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(16, 37);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(92, 13);
this.stLabel3.TabIndex = 2;
this.stLabel3.Text = "Texture Rotation::";
//
// texRotateCB
//
this.texRotateCB.BorderColor = System.Drawing.Color.Empty;
this.texRotateCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.texRotateCB.ButtonColor = System.Drawing.Color.Empty;
this.texRotateCB.FormattingEnabled = true;
this.texRotateCB.IsReadOnly = false;
this.texRotateCB.Location = new System.Drawing.Point(114, 34);
this.texRotateCB.Name = "texRotateCB";
this.texRotateCB.Size = new System.Drawing.Size(121, 21);
this.texRotateCB.TabIndex = 1;
this.texRotateCB.SelectedIndexChanged += new System.EventHandler(this.texRotateCB_SelectedIndexChanged);
//
// WindowContentEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.Controls.Add(this.stFlowLayoutPanel1);
this.Name = "WindowContentEditor";
this.Size = new System.Drawing.Size(353, 458);
this.stFlowLayoutPanel1.ResumeLayout(false);
this.stDropDownPanel1.ResumeLayout(false);
this.stDropDownPanel1.PerformLayout();
this.stDropDownPanel2.ResumeLayout(false);
this.stDropDownPanel2.PerformLayout();
this.stDropDownPanel3.ResumeLayout(false);
this.stDropDownPanel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private BarSlider.BarSlider frameRightUD;
private BarSlider.BarSlider frameLeftUD;
private BarSlider.BarSlider frameDownUD;
private BarSlider.BarSlider frameUpUD;
private Toolbox.Library.Forms.STLabel stLabel5;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STLabel stLabel1;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.STFlowLayoutPanel stFlowLayoutPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel2;
private Toolbox.Library.Forms.STCheckBox chkUseVtxColorsOnFrames;
private Toolbox.Library.Forms.STButton btnResetColors;
private Toolbox.Library.Forms.VertexColorBox vertexColorBox1;
private Toolbox.Library.Forms.STDropDownPanel stDropDownPanel3;
private Toolbox.Library.Forms.STCheckBox chkMaterialForAll;
private Toolbox.Library.Forms.STLabel stLabel3;
private Toolbox.Library.Forms.STComboBox texRotateCB;
}
}

View File

@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class WindowContentEditor : EditorPanelBase
{
private IWindowPane ActivePane;
private bool Loaded = false;
private PaneEditor parentEditor;
private BxlytWindowFrame activeFrame;
public WindowContentEditor()
{
InitializeComponent();
vertexColorBox1.OnColorChanged += OnColorChanged;
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel3.ResetColors();
}
public void LoadPane(IWindowPane pane, BxlytWindowFrame frame, PaneEditor paneEditor)
{
Loaded = false;
activeFrame = frame;
ActivePane = pane;
parentEditor = paneEditor;
frameUpUD.Value = pane.FrameElementTop;
frameDownUD.Value = pane.FrameElementBottm;
frameLeftUD.Value = pane.FrameElementLeft;
frameRightUD.Value = pane.FrameElementRight;
vertexColorBox1.TopLeftColor = pane.Content.ColorTopLeft.Color;
vertexColorBox1.TopRightColor = pane.Content.ColorTopRight.Color;
vertexColorBox1.BottomLeftColor = pane.Content.ColorBottomLeft.Color;
vertexColorBox1.BottomRightColor = pane.Content.ColorBottomRight.Color;
vertexColorBox1.Refresh();
if (frame == null)
texRotateCB.ResetBind();
else
{
texRotateCB.Bind(typeof(WindowFrameTexFlip), frame, "TextureFlip");
texRotateCB.SelectedItem = frame.TextureFlip;
}
chkMaterialForAll.Bind(pane, "UseOneMaterialForAll");
chkUseVtxColorsOnFrames.Bind(pane, "UseVertexColorForAll");
Loaded = true;
}
private void OnColorChanged(object sender, EventArgs e)
{
if (!Loaded) return;
ActivePane.Content.ColorTopLeft.Color = vertexColorBox1.TopLeftColor;
ActivePane.Content.ColorTopRight.Color = vertexColorBox1.TopRightColor;
ActivePane.Content.ColorBottomLeft.Color = vertexColorBox1.BottomLeftColor;
ActivePane.Content.ColorBottomRight.Color = vertexColorBox1.BottomRightColor;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void btnResetColors_Click(object sender, EventArgs e)
{
vertexColorBox1.TopLeftColor = Color.White;
vertexColorBox1.TopRightColor = Color.White;
vertexColorBox1.BottomLeftColor = Color.White;
vertexColorBox1.BottomRightColor = Color.White;
vertexColorBox1.Refresh();
}
public override void OnControlClosing() {
vertexColorBox1.DisposeControl();
}
private void frameUD_ValueChanged(object sender, EventArgs e)
{
if (!Loaded) return;
ActivePane.FrameElementTop = (ushort)frameUpUD.Value;
ActivePane.FrameElementRight = (ushort)frameRightUD.Value;
ActivePane.FrameElementLeft = (ushort)frameLeftUD.Value;
ActivePane.FrameElementBottm = (ushort)frameDownUD.Value;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
private void texRotateCB_SelectedIndexChanged(object sender, EventArgs e)
{
if (!Loaded || activeFrame == null) return;
activeFrame.TextureFlip = (WindowFrameTexFlip)texRotateCB.SelectedItem;
parentEditor.PropertyChanged?.Invoke(sender, e);
}
}
}

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="vertexColorBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDTbOhAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRF
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
</value>
</data>
</root>

View File

@ -0,0 +1,45 @@
namespace LayoutBXLYT
{
partial class WindowFrameEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// WindowFrameEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "WindowFrameEditor";
this.Size = new System.Drawing.Size(354, 297);
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LayoutBXLYT
{
public partial class WindowFrameEditor : EditorPanelBase
{
public WindowFrameEditor()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,160 @@
namespace LayoutBXLYT
{
partial class WindowFrameEditorSettings
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.typeCB = new Toolbox.Library.Forms.STComboBox();
this.frameLbl = new Toolbox.Library.Forms.STLabel();
this.frameNumCB = new Toolbox.Library.Forms.STComboBox();
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
this.chkRenderContent = new Toolbox.Library.Forms.STCheckBox();
this.windowFrameSelector1 = new LayoutBXLYT.WindowFrameSelector();
this.SuspendLayout();
//
// typeCB
//
this.typeCB.BorderColor = System.Drawing.Color.Empty;
this.typeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.typeCB.ButtonColor = System.Drawing.Color.Empty;
this.typeCB.FormattingEnabled = true;
this.typeCB.IsReadOnly = false;
this.typeCB.Items.AddRange(new object[] {
"All Directions",
"Horizontal",
"Horizontal (No Content)"});
this.typeCB.Location = new System.Drawing.Point(122, 37);
this.typeCB.Name = "typeCB";
this.typeCB.Size = new System.Drawing.Size(127, 21);
this.typeCB.TabIndex = 1;
this.typeCB.SelectedIndexChanged += new System.EventHandler(this.typeCB_SelectedIndexChanged);
//
// frameLbl
//
this.frameLbl.AutoSize = true;
this.frameLbl.Location = new System.Drawing.Point(119, 9);
this.frameLbl.Name = "frameLbl";
this.frameLbl.Size = new System.Drawing.Size(130, 13);
this.frameLbl.TabIndex = 2;
this.frameLbl.Text = "Selected Frame: [Content]";
//
// frameNumCB
//
this.frameNumCB.BorderColor = System.Drawing.Color.Empty;
this.frameNumCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
this.frameNumCB.ButtonColor = System.Drawing.Color.Empty;
this.frameNumCB.FormattingEnabled = true;
this.frameNumCB.IsReadOnly = false;
this.frameNumCB.Items.AddRange(new object[] {
"1 (Top Left)",
"4 (Corners)",
"8 (Corners + Sides)"});
this.frameNumCB.Location = new System.Drawing.Point(122, 59);
this.frameNumCB.Name = "frameNumCB";
this.frameNumCB.Size = new System.Drawing.Size(127, 21);
this.frameNumCB.TabIndex = 3;
this.frameNumCB.SelectedIndexChanged += new System.EventHandler(this.frameNumCB_SelectedIndexChanged);
//
// stLabel2
//
this.stLabel2.AutoSize = true;
this.stLabel2.Location = new System.Drawing.Point(3, 9);
this.stLabel2.Name = "stLabel2";
this.stLabel2.Size = new System.Drawing.Size(90, 13);
this.stLabel2.TabIndex = 4;
this.stLabel2.Text = "Window Settings:";
//
// stLabel3
//
this.stLabel3.AutoSize = true;
this.stLabel3.Location = new System.Drawing.Point(3, 40);
this.stLabel3.Name = "stLabel3";
this.stLabel3.Size = new System.Drawing.Size(34, 13);
this.stLabel3.TabIndex = 5;
this.stLabel3.Text = "Type:";
//
// stLabel4
//
this.stLabel4.AutoSize = true;
this.stLabel4.Location = new System.Drawing.Point(3, 62);
this.stLabel4.Name = "stLabel4";
this.stLabel4.Size = new System.Drawing.Size(44, 13);
this.stLabel4.TabIndex = 6;
this.stLabel4.Text = "Frames:";
//
// chkRenderContent
//
this.chkRenderContent.AutoSize = true;
this.chkRenderContent.Location = new System.Drawing.Point(122, 89);
this.chkRenderContent.Name = "chkRenderContent";
this.chkRenderContent.Size = new System.Drawing.Size(88, 17);
this.chkRenderContent.TabIndex = 7;
this.chkRenderContent.Text = "Hide Content";
this.chkRenderContent.UseVisualStyleBackColor = true;
this.chkRenderContent.CheckedChanged += new System.EventHandler(this.chkRenderContent_CheckedChanged);
//
// windowFrameSelector1
//
this.windowFrameSelector1.Location = new System.Drawing.Point(272, 6);
this.windowFrameSelector1.Name = "windowFrameSelector1";
this.windowFrameSelector1.Size = new System.Drawing.Size(77, 77);
this.windowFrameSelector1.TabIndex = 0;
//
// WindowFrameEditorSettings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.Controls.Add(this.chkRenderContent);
this.Controls.Add(this.stLabel4);
this.Controls.Add(this.stLabel3);
this.Controls.Add(this.stLabel2);
this.Controls.Add(this.frameNumCB);
this.Controls.Add(this.frameLbl);
this.Controls.Add(this.typeCB);
this.Controls.Add(this.windowFrameSelector1);
this.Name = "WindowFrameEditorSettings";
this.Size = new System.Drawing.Size(353, 110);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private WindowFrameSelector windowFrameSelector1;
private Toolbox.Library.Forms.STComboBox typeCB;
private Toolbox.Library.Forms.STLabel frameLbl;
private Toolbox.Library.Forms.STComboBox frameNumCB;
private Toolbox.Library.Forms.STLabel stLabel2;
private Toolbox.Library.Forms.STLabel stLabel3;
private Toolbox.Library.Forms.STLabel stLabel4;
private Toolbox.Library.Forms.STCheckBox chkRenderContent;
}
}

View File

@ -0,0 +1,219 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class WindowFrameEditorSettings : EditorPanelBase
{
public PaneEditor ParentEditor;
public EventHandler FrameSelectChanged;
private bool loaded = false;
private IWindowPane ActivePane;
public WindowFrameEditorSettings()
{
InitializeComponent();
windowFrameSelector1.OnFrameSelected += OnFrameSelected;
}
public void LoadPane(IWindowPane pane, PaneEditor paneEditor, bool reset = false)
{
loaded = false;
ActivePane = pane;
ParentEditor = paneEditor;
windowFrameSelector1.WindowKind = pane.WindowKind;
windowFrameSelector1.FrameCount = pane.FrameCount;
ReloadFrameCounter();
SetupEnums(pane);
if (reset)
windowFrameSelector1.ResetSelection();
windowFrameSelector1.Invalidate();
chkRenderContent.Bind(pane, "NotDrawnContent");
loaded = true;
}
public BxlytMaterial GetActiveMaterial(IWindowPane pane)
{
if (windowFrameSelector1.SelectedFrame == FrameSelect.Content)
return pane.Content.Material;
else
return GetActiveFrame(pane).Material;
}
public BxlytWindowFrame GetActiveFrame(IWindowPane pane)
{
if (pane.WindowKind == WindowKind.Horizontal || pane.WindowKind == WindowKind.HorizontalNoContent)
{
switch (windowFrameSelector1.SelectedFrame)
{
case FrameSelect.Left: return pane.WindowFrames[0];
case FrameSelect.Right: return pane.WindowFrames[1];
default: return null;
}
}
else
{
switch (windowFrameSelector1.SelectedFrame)
{
case FrameSelect.TopLeft: return pane.WindowFrames[0];
case FrameSelect.TopRight: return pane.WindowFrames[1];
case FrameSelect.BottomLeft: return pane.WindowFrames[2];
case FrameSelect.BottomRight: return pane.WindowFrames[3];
case FrameSelect.Top: return pane.WindowFrames[4];
case FrameSelect.Bottom: return pane.WindowFrames[5];
case FrameSelect.Left: return pane.WindowFrames[6];
case FrameSelect.Right: return pane.WindowFrames[7];
default: return null;
}
}
}
private void ReloadFrameCounter()
{
frameNumCB.Items.Clear();
switch (ActivePane.WindowKind)
{
case WindowKind.Around:
this.frameNumCB.Items.AddRange(new object[] {
"1 (Top Left)",
"4 (Corners)",
"8 (Corners + Sides)"});
break;
case WindowKind.Horizontal:
case WindowKind.HorizontalNoContent:
this.frameNumCB.Items.AddRange(new object[] {
"1 (Left)",
"2 (Left and Right)" });
break;
}
}
private void SetupEnums(IWindowPane pane)
{
bool isHorizintal = false;
switch (pane.WindowKind)
{
case WindowKind.Around:
typeCB.SelectedIndex = 0;
break;
case WindowKind.Horizontal:
typeCB.SelectedIndex = 1;
isHorizintal = true;
break;
case WindowKind.HorizontalNoContent:
typeCB.SelectedIndex = 2;
isHorizintal = true;
break;
}
if (isHorizintal)
{
switch (pane.WindowFrames.Count)
{
case 1:
frameNumCB.SelectedIndex = 0;
break;
case 2:
frameNumCB.SelectedIndex = 1;
break;
}
}
else
{
switch (pane.WindowFrames.Count)
{
case 1:
frameNumCB.SelectedIndex = 0;
break;
case 4:
frameNumCB.SelectedIndex = 1;
break;
case 8:
frameNumCB.SelectedIndex = 2;
break;
}
}
}
private void OnFrameSelected(object sender, EventArgs e)
{
frameLbl.Text = $"Selected Frame: [{windowFrameSelector1.SelectedFrame}]";
FrameSelectChanged?.Invoke(sender, e);
}
private void chkRenderContent_CheckedChanged(object sender, EventArgs e) {
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void typeCB_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loaded) return;
switch (typeCB.SelectedIndex)
{
case 0:
ActivePane.WindowKind = WindowKind.Around;
windowFrameSelector1.WindowKind = WindowKind.Around;
break;
case 1:
ActivePane.WindowKind = WindowKind.Horizontal;
windowFrameSelector1.WindowKind = WindowKind.Horizontal;
break;
case 2:
ActivePane.WindowKind = WindowKind.HorizontalNoContent;
windowFrameSelector1.WindowKind = WindowKind.HorizontalNoContent;
break;
}
ReloadFrameCounter();
ActivePane.ReloadFrames();
windowFrameSelector1.Invalidate();
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
private void frameNumCB_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loaded) return;
switch (frameNumCB.SelectedIndex)
{
case 0:
ActivePane.FrameCount = 1;
windowFrameSelector1.FrameCount = 1;
break;
case 1:
ActivePane.FrameCount = 4;
windowFrameSelector1.FrameCount = 4;
break;
case 2:
ActivePane.FrameCount = 8;
windowFrameSelector1.FrameCount = 8;
break;
}
ActivePane.ReloadFrames();
windowFrameSelector1.Invalidate();
ParentEditor.PropertyChanged?.Invoke(sender, e);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,46 @@
namespace LayoutBXLYT
{
partial class WindowFrameSelector
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// WindowFrameSelector
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "WindowFrameSelector";
this.Size = new System.Drawing.Size(209, 191);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowFrameSelector_MouseDown);
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,440 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.IO;
namespace LayoutBXLYT
{
public enum FrameSelect
{
Content,
TopLeft,
Top,
TopRight,
Right,
Left,
Bottom,
BottomLeft,
BottomRight,
}
public partial class WindowFrameSelector : EditorPanelBase
{
public EventHandler OnFrameSelected;
private bool canSelectContent = true;
public bool CanSelectContent
{
get { return canSelectContent; }
set
{
canSelectContent = value;
SetValidSelection();
}
}
private WindowKind windowKind = WindowKind.Around;
public WindowKind WindowKind
{
get { return windowKind; }
set
{
windowKind = value;
SetValidSelection();
}
}
private int frameCount = 1;
public int FrameCount
{
get { return frameCount; }
set
{
frameCount = value;
SetValidSelection();
}
}
public void SetValidSelection()
{
//Make sure to choose no content
if (WindowKind == WindowKind.HorizontalNoContent)
{
if (SelectedFrame == FrameSelect.Content)
SelectedFrame = FrameSelect.Left;
}
if (WindowKind == WindowKind.HorizontalNoContent ||
WindowKind == WindowKind.Horizontal)
{
if (!CanSelectContent && SelectedFrame == FrameSelect.Content)
SelectedFrame = FrameSelect.Left;
if (SelectedFrame == FrameSelect.BottomLeft)
SelectedFrame = FrameSelect.Left;
else if (SelectedFrame == FrameSelect.TopLeft)
SelectedFrame = FrameSelect.Left;
else if (SelectedFrame == FrameSelect.Bottom)
SelectedFrame = FrameSelect.Left;
else if (SelectedFrame == FrameSelect.Top)
SelectedFrame = FrameSelect.Left;
else if (SelectedFrame == FrameSelect.BottomRight)
SelectedFrame = FrameSelect.Right;
else if (SelectedFrame == FrameSelect.TopRight)
SelectedFrame = FrameSelect.Right;
}
else
{
if (frameCount == 4)
{
if (SelectedFrame == FrameSelect.Right)
SelectedFrame = FrameSelect.TopRight;
else if (SelectedFrame == FrameSelect.Bottom)
SelectedFrame = FrameSelect.BottomLeft;
else if (SelectedFrame == FrameSelect.Top)
SelectedFrame = FrameSelect.TopRight;
else if (SelectedFrame == FrameSelect.Left)
SelectedFrame = FrameSelect.TopLeft;
}
if (!CanSelectContent && SelectedFrame == FrameSelect.Content)
SelectedFrame = FrameSelect.TopLeft;
}
}
public FrameSelect SelectedFrame = FrameSelect.Content;
public WindowFrameSelector()
{
InitializeComponent();
}
public void ResetSelection()
{
if (WindowKind == WindowKind.HorizontalNoContent)
SelectLeft();
else
SelectContent();
}
private WindowRectangle TopLeft = new WindowRectangle();
private WindowRectangle TopRight = new WindowRectangle();
private WindowRectangle BottomLeft = new WindowRectangle();
private WindowRectangle BottomRight = new WindowRectangle();
private WindowRectangle Top = new WindowRectangle();
private WindowRectangle Bottom = new WindowRectangle();
private WindowRectangle Right = new WindowRectangle();
private WindowRectangle Left = new WindowRectangle();
private WindowRectangle Content = new WindowRectangle();
private void RefreshRectangle()
{
bool IsHorizontal = WindowKind == WindowKind.Horizontal ||
WindowKind == WindowKind.HorizontalNoContent;
int boundSizeX = (ClientRectangle.Width / 2) / 2;
int boundSizeY = (ClientRectangle.Height / 2) / 2;
int leftPosition = 0;
int rightPosition = ClientRectangle.Width - boundSizeX;
int topPosition = 0;
int bottomPosition = ClientRectangle.Height - boundSizeY;
int centerWidth = ClientRectangle.Width - (ClientRectangle.Width / 2);
int centerHeight = ClientRectangle.Height - (ClientRectangle.Height / 2);
TopLeft.rect = new Rectangle(leftPosition, topPosition, boundSizeX, boundSizeY);
TopRight.rect = new Rectangle(rightPosition, topPosition, boundSizeX, boundSizeY);
BottomLeft.rect = new Rectangle(leftPosition, bottomPosition, boundSizeX, boundSizeY);
BottomRight.rect = new Rectangle(rightPosition, bottomPosition, boundSizeX, boundSizeY);
Top.rect = new Rectangle(boundSizeX, topPosition, centerWidth, boundSizeY);
Bottom.rect = new Rectangle(boundSizeX, bottomPosition, centerWidth, boundSizeY);
Left.rect = new Rectangle(leftPosition, boundSizeY, boundSizeX, centerHeight);
Right.rect = new Rectangle(rightPosition, boundSizeY, boundSizeX, centerHeight);
Content.rect = new Rectangle(boundSizeX, boundSizeY, centerWidth, centerHeight);
if (IsHorizontal)
{
}
}
protected override void OnPaint(PaintEventArgs e)
{
using (var foreBrush = new SolidBrush(this.ForeColor))
using (var brush = new SolidBrush(this.BackColor))
{
//Draw normal rectangle
e.Graphics.DrawRectangle(new Pen(brush), ClientRectangle);
var outlineColor = new Pen(foreBrush);
//Draw border
float penWidth = 1;
float shrinkAmount = outlineColor.Width / 2;
RefreshRectangle();
if (WindowKind == WindowKind.Horizontal)
{
Left.DrawRectangle(e.Graphics, this.ForeColor);
Right.DrawRectangle(e.Graphics, this.ForeColor);
Content.DrawRectangle(e.Graphics, this.ForeColor);
}
else if (WindowKind == WindowKind.HorizontalNoContent)
{
Left.DrawRectangle(e.Graphics, this.ForeColor);
Right.DrawRectangle(e.Graphics, this.ForeColor);
}
else
{
e.Graphics.DrawRectangle(
outlineColor,
ClientRectangle.X + shrinkAmount,
ClientRectangle.Y + shrinkAmount,
ClientRectangle.Width - penWidth,
ClientRectangle.Height - penWidth);
TopLeft.DrawRectangle(e.Graphics, this.ForeColor);
TopRight.DrawRectangle(e.Graphics, this.ForeColor);
BottomLeft.DrawRectangle(e.Graphics, this.ForeColor);
BottomRight.DrawRectangle(e.Graphics, this.ForeColor);
Top.DrawRectangle(e.Graphics, this.ForeColor);
Bottom.DrawRectangle(e.Graphics, this.ForeColor);
Left.DrawRectangle(e.Graphics, this.ForeColor);
Right.DrawRectangle(e.Graphics, this.ForeColor);
Content.DrawRectangle(e.Graphics, this.ForeColor);
}
}
}
public class WindowRectangle
{
public Rectangle rect;
public bool Selected = false;
public void DrawRectangle(Graphics g, Color outlineColor)
{
if (Selected)
g.FillRectangle(new SolidBrush(Color.Red), rect);
var outlinePen = new Pen(outlineColor);
g.DrawRectangle(outlinePen, rect);
}
}
private void WindowFrameSelector_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (WindowKind == WindowKind.Horizontal)
{
if (FrameCount == 1)
{
//One frame (left)
if (Right.rect.IsHit(e.Location))
{
SelectLeft();
Right.Selected = true;
}
if (Left.rect.IsHit(e.Location))
{
SelectLeft();
Right.Selected = true;
}
}
else
{
if (Right.rect.IsHit(e.Location))
SelectRight();
if (Left.rect.IsHit(e.Location))
SelectLeft();
}
if (Content.rect.IsHit(e.Location))
SelectContent();
}
else if (WindowKind == WindowKind.HorizontalNoContent)
{
if (FrameCount == 1)
{
//One frame (left)
if (Right.rect.IsHit(e.Location))
SelectLeft();
if (Left.rect.IsHit(e.Location))
SelectLeft();
}
else
{
if (Right.rect.IsHit(e.Location))
SelectRight();
if (Left.rect.IsHit(e.Location))
SelectLeft();
}
}
else
{
switch (FrameCount)
{
case 1:
if (TopLeft.rect.IsHit(e.Location))
SelectCorners();
if (TopRight.rect.IsHit(e.Location))
SelectCorners();
if (BottomLeft.rect.IsHit(e.Location))
SelectCorners();
if (BottomRight.rect.IsHit(e.Location))
SelectCorners();
if (Top.rect.IsHit(e.Location))
SelectCorners();
if (Bottom.rect.IsHit(e.Location))
SelectCorners();
if (Right.rect.IsHit(e.Location))
SelectCorners();
if (Left.rect.IsHit(e.Location))
SelectCorners();
if (Content.rect.IsHit(e.Location))
SelectContent();
break;
case 4:
if (TopLeft.rect.IsHit(e.Location))
SelectTopLeft();
if (TopRight.rect.IsHit(e.Location))
SelectTopRight();
if (BottomLeft.rect.IsHit(e.Location))
SelectBottomLeft();
if (BottomRight.rect.IsHit(e.Location))
SelectBottomRight();
if (Top.rect.IsHit(e.Location))
SelectTopLeft();
if (Bottom.rect.IsHit(e.Location))
SelectBottomRight();
if (Right.rect.IsHit(e.Location))
SelectTopRight();
if (Left.rect.IsHit(e.Location))
SelectBottomLeft();
if (Content.rect.IsHit(e.Location))
SelectContent();
break;
case 8:
if (TopLeft.rect.IsHit(e.Location))
SelectTopLeft();
if (TopRight.rect.IsHit(e.Location))
SelectTopRight();
if (BottomLeft.rect.IsHit(e.Location))
SelectBottomLeft();
if (BottomRight.rect.IsHit(e.Location))
SelectBottomRight();
if (Top.rect.IsHit(e.Location))
SelectTop();
if (Bottom.rect.IsHit(e.Location))
SelectBottom();
if (Right.rect.IsHit(e.Location))
SelectRight();
if (Left.rect.IsHit(e.Location))
SelectLeft();
if (Content.rect.IsHit(e.Location))
SelectContent();
break;
}
}
}
this.Invalidate();
}
private void SelectContent()
{
UpdateSelection(FrameSelect.Content);
Content.Selected = true;
}
private void SelectCorners()
{
UpdateSelection(FrameSelect.TopLeft);
TopLeft.Selected = true;
TopRight.Selected = true;
BottomLeft.Selected = true;
BottomRight.Selected = true;
}
private void SelectTopLeft()
{
UpdateSelection(FrameSelect.TopLeft);
TopLeft.Selected = true;
}
private void SelectBottomLeft()
{
UpdateSelection(FrameSelect.BottomLeft);
BottomLeft.Selected = true;
}
private void SelectLeft()
{
UpdateSelection(FrameSelect.Left);
Left.Selected = true;
}
private void SelectBottom()
{
UpdateSelection(FrameSelect.Bottom);
Bottom.Selected = true;
}
private void SelectTop()
{
UpdateSelection(FrameSelect.Top);
Top.Selected = true;
}
private void SelectTopRight()
{
UpdateSelection(FrameSelect.TopRight);
TopRight.Selected = true;
}
private void SelectRight()
{
UpdateSelection(FrameSelect.Right);
Right.Selected = true;
}
private void SelectBottomRight()
{
UpdateSelection(FrameSelect.BottomRight);
BottomRight.Selected = true;
}
private void UpdateSelection(FrameSelect frameSelect)
{
DeselectAll();
bool Changed = SelectedFrame != frameSelect;
SelectedFrame = frameSelect;
//Frame has been changed, then update this
if (Changed)
OnFrameSelected?.Invoke(this, EventArgs.Empty);
}
private void DeselectAll()
{
Content.Selected = false;
TopLeft.Selected = false;
TopRight.Selected = false;
BottomLeft.Selected = false;
BottomRight.Selected = false;
Top.Selected = false;
Bottom.Selected = false;
Right.Selected = false;
Left.Selected = false;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,72 @@
namespace LayoutBXLYT
{
partial class WindowPaneEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.stPanel1 = new Toolbox.Library.Forms.STPanel();
this.windowFrameEditor1 = new LayoutBXLYT.WindowFrameEditorSettings();
this.SuspendLayout();
//
// stPanel1
//
this.stPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.stPanel1.Location = new System.Drawing.Point(0, 115);
this.stPanel1.Name = "stPanel1";
this.stPanel1.Size = new System.Drawing.Size(390, 275);
this.stPanel1.TabIndex = 1;
//
// windowFrameEditor1
//
this.windowFrameEditor1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.windowFrameEditor1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.windowFrameEditor1.Location = new System.Drawing.Point(3, 0);
this.windowFrameEditor1.Name = "windowFrameEditor1";
this.windowFrameEditor1.Size = new System.Drawing.Size(387, 112);
this.windowFrameEditor1.TabIndex = 0;
//
// WindowPaneEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.stPanel1);
this.Controls.Add(this.windowFrameEditor1);
this.Name = "WindowPaneEditor";
this.Size = new System.Drawing.Size(393, 393);
this.ResumeLayout(false);
}
#endregion
private WindowFrameEditorSettings windowFrameEditor1;
private Toolbox.Library.Forms.STPanel stPanel1;
}
}

View File

@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
namespace LayoutBXLYT
{
public partial class WindowPaneEditor : EditorPanelBase
{
private IWindowPane ActivePane;
private ContentType EditorContentType;
private PaneEditor ParentEditor;
public enum ContentType
{
WindowContent,
Textures,
ColorInterpolation,
TextureCombiners,
Blending,
}
public WindowPaneEditor()
{
InitializeComponent();
windowFrameEditor1.FrameSelectChanged += OnWindowFrameChanged;
}
public BxlytMaterial GetActiveMaterial()
{
return windowFrameEditor1.GetActiveMaterial(ActivePane);
}
public BxlytWindowFrame GetActiveFrame()
{
return windowFrameEditor1.GetActiveFrame(ActivePane);
}
public void LoadPane(IWindowPane pane, ContentType contentType, PaneEditor paneEditor)
{
bool HasChanged = (pane != ActivePane);
ActivePane = pane;
ParentEditor = paneEditor;
EditorContentType = contentType;
windowFrameEditor1.LoadPane(pane, paneEditor, HasChanged);
LoadEditors();
}
private void OnWindowFrameChanged(object sender, EventArgs e) {
LoadEditors();
}
private void LoadEditors()
{
var mat = GetActiveMaterial();
switch (EditorContentType)
{
case ContentType.Textures:
var textureEditor = GetActiveEditor<PaneMatTextureMapsEditor>();
textureEditor.LoadMaterial(mat, ParentEditor, ParentEditor.GetTextures());
break;
case ContentType.WindowContent:
var contentEditor = GetActiveEditor<WindowContentEditor>();
contentEditor.LoadPane(ActivePane, GetActiveFrame(), ParentEditor);
break;
case ContentType.ColorInterpolation:
var colorEditor = GetActiveEditor<PaneMatColorEditor>();
colorEditor.LoadMaterial(mat, ParentEditor);
break;
case ContentType.TextureCombiners:
var texComb = GetActiveEditor<PaneMatTextureCombiner>();
texComb.LoadMaterial(mat, ParentEditor);
break;
case ContentType.Blending:
var matBlend = GetActiveEditor<PaneMatBlending>();
matBlend.LoadMaterial(mat, ParentEditor);
break;
}
}
private Control ActiveEditor
{
get
{
if (stPanel1.Controls.Count == 0) return null;
return stPanel1.Controls[0];
}
}
private T GetActiveEditor<T>() where T : Control, new()
{
T instance = new T();
if (ActiveEditor?.GetType() == instance.GetType())
return ActiveEditor as T;
else
{
DisposeEdtiors();
stPanel1.Controls.Clear();
instance.Dock = DockStyle.Fill;
stPanel1.Controls.Add(instance);
}
return instance;
}
public override void OnControlClosing() {
DisposeEdtiors();
}
private void DisposeEdtiors()
{
if (ActiveEditor == null) return;
if (ActiveEditor is STUserControl)
((STUserControl)ActiveEditor).OnControlClosing();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -97,6 +97,7 @@ namespace LayoutBXLYT
private LayoutTextDocked TextConverter;
private LayoutPartsEditor LayoutPartsEditor;
private STAnimationPanel AnimationPanel;
private PaneEditor LayoutPaneEditor;
private bool isLoaded = false;
public void LoadBxlyt(BxlytHeader header)
@ -168,6 +169,11 @@ namespace LayoutBXLYT
isLoaded = true;
}
public Dictionary<string, STGenericTexture> GetTextures()
{
return Textures;
}
public void LoadBxlan(BxlanHeader header)
{
AnimationFiles.Add(header);
@ -201,6 +207,8 @@ namespace LayoutBXLYT
LayoutProperties.Reset();
if (TextConverter != null)
TextConverter.Reset();
if (LayoutPaneEditor != null)
LayoutPaneEditor.Reset();
}
private void ReloadEditors(BxlytHeader activeLayout)
@ -212,7 +220,7 @@ namespace LayoutBXLYT
if (LayoutHierarchy != null)
LayoutHierarchy.LoadLayout(activeLayout, ObjectSelected);
if (LayoutTextureList != null)
LayoutTextureList.LoadTextures(activeLayout);
LayoutTextureList.LoadTextures(this, activeLayout, Textures);
if (TextConverter != null)
{
if (ActiveLayout.FileInfo is BFLYT)
@ -259,7 +267,7 @@ namespace LayoutBXLYT
}
}
}
if (LayoutProperties != null && (string)sender == "Select")
if (LayoutPaneEditor != null && (string)sender == "Select")
{
ActiveViewport?.SelectedPanes.Clear();
@ -267,13 +275,17 @@ namespace LayoutBXLYT
var node = ((TreeViewEventArgs)e).Node;
if (node.Tag is BasePane)
LoadPaneEditorOnSelect(node.Tag as BasePane);
else if (node.Tag is BxlytMaterial)
{
var pane = node.Tag as BasePane;
LayoutProperties.LoadProperties(pane, OnProperyChanged);
ActiveViewport?.SelectedPanes.Add(pane);
LayoutPaneEditor.Text = $"Properties [{((BxlytMaterial)node.Tag).Name}]";
LayoutPaneEditor.LoadMaterial((BxlytMaterial)node.Tag, this);
}
else
LayoutProperties.LoadProperties(node.Tag, OnProperyChanged);
{
LayoutPaneEditor.Text = $"Properties";
LayoutPaneEditor.LoadProperties(node.Tag);
}
}
}
if (ActiveViewport != null)
@ -289,6 +301,34 @@ namespace LayoutBXLYT
}
}
public void UpdateViewport() {
ActiveViewport?.UpdateViewport();
}
public void LoadPaneEditorOnSelect(BasePane pane)
{
if (pane is IPicturePane)
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Picture Pane)";
else if (pane is ITextPane)
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Text Box Pane)";
else if (pane is IWindowPane)
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Window Pane)";
else if (pane is IBoundryPane)
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Boundry Pane)";
else if (pane is IPartPane)
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Part Pane)";
else
LayoutPaneEditor.Text = $"Properties [{pane.Name}] | (Null Pane)";
LayoutPaneEditor.LoadPane(pane, this);
ActiveViewport?.SelectedPanes.Add(pane);
}
public void RefreshEditors()
{
LayoutPaneEditor?.RefreshEditor();
}
public void UpdateHiearchyNodeSelection(BasePane pane)
{
var nodeWrapper = pane.NodeWrapper;
@ -381,15 +421,36 @@ namespace LayoutBXLYT
private void ShowPropertiesPanel()
{
if (LayoutProperties != null)
return;
if (LayoutPaneEditor == null)
LayoutPaneEditor = new PaneEditor();
LayoutPaneEditor.Text = "Properties";
LayoutPaneEditor.PropertyChanged += OnPanePropertyChanged;
LayoutProperties = new LayoutProperties();
LayoutProperties.Text = "Properties";
if (LayoutHierarchy != null)
LayoutProperties.Show(LayoutHierarchy.Pane, DockAlignment.Bottom, 0.5);
LayoutPaneEditor.Show(LayoutHierarchy.Pane, DockAlignment.Bottom, 0.5);
else
LayoutProperties.Show(dockPanel1, DockState.DockRight);
LayoutPaneEditor.Show(dockPanel1, DockState.DockRight);
/* if (LayoutProperties != null)
return;
LayoutProperties = new LayoutProperties();
LayoutProperties.Text = "Properties";
if (LayoutHierarchy != null)
LayoutProperties.Show(LayoutHierarchy.Pane, DockAlignment.Bottom, 0.5);
else
LayoutProperties.Show(dockPanel1, DockState.DockRight);*/
}
public void ShowPaneEditor(BasePane pane)
{
/* if (LayoutPaneEditor == null)
LayoutPaneEditor = new PaneEditor();
LayoutPaneEditor.PropertyChanged += OnPanePropertyChanged;
LayoutPaneEditor.LoadPane(pane);
LayoutPaneEditor.Show();*/
}
public void ShowAnimationHierarchy()
@ -420,7 +481,7 @@ namespace LayoutBXLYT
LayoutTextureList = new LayoutTextureList();
LayoutTextureList.Text = "Texture List";
LayoutTextureList.LoadTextures(ActiveLayout);
LayoutTextureList.LoadTextures(this, ActiveLayout, Textures);
LayoutTextureList.Show(dockPanel1, DockState.DockRight);
}
@ -445,6 +506,11 @@ namespace LayoutBXLYT
LayoutHierarchy?.UpdateTree();
}
public void UpdateLayoutTextureList()
{
LayoutTextureList?.LoadTextures(this, ActiveLayout, Textures);
}
private void OnAnimationPlaying(object sender, EventArgs e)
{
if (LayoutAnimEditor != null)
@ -868,6 +934,9 @@ namespace LayoutBXLYT
AnimationPanel?.OnControlClosing();
GamePreviewWindow?.OnControlClosing();
GamePreviewWindow?.Dispose();
LayoutPaneEditor?.Close();
LayoutAnimEditor?.Close();
LayoutHierarchy?.Close();
}
private void undoToolStripMenuItem_Click(object sender, EventArgs e) {
@ -889,6 +958,8 @@ namespace LayoutBXLYT
if (ActiveViewport == null)
return;
RefreshEditors();
redoToolStripMenuItem.Enabled = false;
undoToolStripMenuItem.Enabled = false;
@ -898,6 +969,11 @@ namespace LayoutBXLYT
redoToolStripMenuItem.Enabled = true;
}
private void OnPanePropertyChanged(object sender, EventArgs e)
{
ActiveViewport?.UpdateViewport();
}
private void viewPartsAsNullPanesToolStripMenuItem_Click(object sender, EventArgs e)
{
Runtime.LayoutEditor.PartsAsNullPanes = viewPartsAsNullPanesToolStripMenuItem.Checked;
@ -906,11 +982,41 @@ namespace LayoutBXLYT
#region Pane Adding
public BasePane AddNewNullPane()
public BasePane AddNewTextPane()
{
NewTextboxDialog newTextDlg = new NewTextboxDialog();
newTextDlg.LoadFonts(ActiveLayout.Fonts);
if (newTextDlg.ShowDialog() == DialogResult.OK)
{
string font = newTextDlg.GetFont();
int fontIndex = ActiveLayout.AddFont(font);
string text = newTextDlg.GetText();
BasePane pane = null;
if (ActiveLayout is BFLYT.Header)
pane = new BFLYT.TXT1((BFLYT.Header)ActiveLayout, RenamePane("T_text"));
if (pane != null)
{
((ITextPane)pane).FontIndex = (ushort)fontIndex;
((ITextPane)pane).FontName = font;
((ITextPane)pane).Text = text;
pane.NodeWrapper = LayoutHierarchy.CreatePaneWrapper(pane);
((ITextPane)pane).MaterialIndex = (ushort)ActiveLayout.AddMaterial(((ITextPane)pane).Material);
ActiveLayout.AddPane(pane, ActiveLayout.RootPane);
}
return pane;
}
else return null;
}
public BasePane AddNewBoundryPane()
{
BasePane pane = null;
if (ActiveLayout is BFLYT.Header)
pane = new BFLYT.PAN1((BFLYT.Header)ActiveLayout, "N_null");
pane = new BFLYT.BND1((BFLYT.Header)ActiveLayout, RenamePane("B_bound"));
if (pane != null)
{
@ -921,6 +1027,58 @@ namespace LayoutBXLYT
return pane;
}
public BasePane AddNewWindowPane()
{
BasePane pane = null;
if (ActiveLayout is BFLYT.Header)
pane = new BFLYT.WND1((BFLYT.Header)ActiveLayout, RenamePane("W_window"));
if (pane != null)
{
pane.NodeWrapper = LayoutHierarchy.CreatePaneWrapper(pane);
ActiveLayout.AddPane(pane, ActiveLayout.RootPane);
}
return pane;
}
public BasePane AddNewPicturePane()
{
BasePane pane = null;
if (ActiveLayout is BFLYT.Header)
pane = new BFLYT.PIC1((BFLYT.Header)ActiveLayout, RenamePane("P_pict"));
if (pane != null)
{
pane.NodeWrapper = LayoutHierarchy.CreatePaneWrapper(pane);
((IPicturePane)pane).MaterialIndex = (ushort)ActiveLayout.AddMaterial(((IPicturePane)pane).Material);
ActiveLayout.AddPane(pane, ActiveLayout.RootPane);
}
return pane;
}
public BasePane AddNewNullPane()
{
BasePane pane = null;
if (ActiveLayout is BFLYT.Header)
pane = new BFLYT.PAN1((BFLYT.Header)ActiveLayout, RenamePane("N_null"));
if (pane != null)
{
pane.NodeWrapper = LayoutHierarchy.CreatePaneWrapper(pane);
ActiveLayout.AddPane(pane, ActiveLayout.RootPane);
}
return pane;
}
private string RenamePane(string name)
{
List<string> names = ActiveLayout.PaneLookup.Values.ToList().Select(o => o.Name).ToList();
return Utils.RenameDuplicateString(names, name); ;
}
#endregion
}
}

View File

@ -96,8 +96,8 @@ namespace LayoutBXLYT
private void LoadTextures(List<string> textures)
{
TreeNode node = new TreeNode("Textures");
treeView1.Nodes.Add(node);
ActiveLayout.TextureFolder = new TreeNode("Textures");
treeView1.Nodes.Add(ActiveLayout.TextureFolder);
for (int i = 0; i < textures.Count; i++)
{
TreeNode matNode = new TreeNode(textures[i]);
@ -108,7 +108,7 @@ namespace LayoutBXLYT
matNode.ContextMenuStrip.Items.Add(menu);
matNode.ImageKey = "texture";
matNode.SelectedImageKey = "texture";
node.Nodes.Add(matNode);
ActiveLayout.TextureFolder.Nodes.Add(matNode);
}
}
@ -132,31 +132,34 @@ namespace LayoutBXLYT
private void LoadFonts(List<string> fonts)
{
TreeNode node = new TreeNode("Fonts");
treeView1.Nodes.Add(node);
ActiveLayout.FontFolder = new TreeNode("Fonts");
treeView1.Nodes.Add(ActiveLayout.FontFolder);
for (int i = 0; i < fonts.Count; i++)
{
TreeNode matNode = new TreeNode(fonts[i]);
matNode.ImageKey = "font";
matNode.SelectedImageKey = "font";
node.Nodes.Add(matNode);
ActiveLayout.FontFolder.Nodes.Add(matNode);
}
}
private void LoadMaterials(List<BxlytMaterial> materials)
{
TreeNode node = new TreeNode("Materials");
treeView1.Nodes.Add(node);
ActiveLayout.MaterialFolder = new TreeNode("Materials");
treeView1.Nodes.Add(ActiveLayout.MaterialFolder);
for (int i = 0; i < materials.Count; i++)
{
TreeNode matNode = new TreeNode(materials[i].Name);
MatWrapper matNode = new MatWrapper(materials[i].Name);
materials[i].NodeWrapper = matNode;
matNode.Tag = materials[i];
matNode.ImageKey = "material";
matNode.SelectedImageKey = "material";
node.Nodes.Add(matNode);
ActiveLayout.MaterialFolder.Nodes.Add(matNode);
}
}
private void CreateQuickAccess(BxlytHeader bxlyt)
{
var panes = new List<BasePane>();
@ -356,14 +359,9 @@ namespace LayoutBXLYT
if (e.Node.Tag == null)
return;
if (e.Button == MouseButtons.Left)
{
/* if (e.Node.Tag is BasePane)
{
PaneEditor editor = new PaneEditor();
editor.LoadPane((BasePane)e.Node.Tag);
editor.Show();
}*/
if (e.Button == MouseButtons.Left) {
if (e.Node.Tag is BasePane)
ParentEditor.ShowPaneEditor(e.Node.Tag as BasePane);
}
}
}

View File

@ -28,9 +28,11 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LayoutTextureList));
this.stToolStrip1 = new Toolbox.Library.Forms.STToolStrip();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.btnAdd = new System.Windows.Forms.ToolStripButton();
this.btnEdit = new System.Windows.Forms.ToolStripButton();
this.btnRemove = new System.Windows.Forms.ToolStripButton();
this.listViewTpyeCB = new Toolbox.Library.Forms.STComboBox();
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
@ -43,32 +45,46 @@
//
// stToolStrip1
//
this.stToolStrip1.HighlightSelectedTab = false;
this.stToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripButton1,
this.toolStripButton2});
this.btnAdd,
this.btnEdit,
this.btnRemove});
this.stToolStrip1.Location = new System.Drawing.Point(0, 0);
this.stToolStrip1.Name = "stToolStrip1";
this.stToolStrip1.Size = new System.Drawing.Size(533, 25);
this.stToolStrip1.TabIndex = 11;
this.stToolStrip1.Text = "stToolStrip1";
//
// toolStripButton1
// btnAdd
//
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton1.Image = global::FirstPlugin.Properties.Resources.AddIcon;
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
this.toolStripButton1.Text = "toolStripButton1";
this.btnAdd.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnAdd.Image = global::FirstPlugin.Properties.Resources.AddIcon;
this.btnAdd.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(23, 22);
this.btnAdd.Text = "Add Texture";
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// toolStripButton2
// btnEdit
//
this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton2.Image = global::FirstPlugin.Properties.Resources.RemoveIcon;
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton2.Name = "toolStripButton2";
this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
this.toolStripButton2.Text = "toolStripButton2";
this.btnEdit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnEdit.Image = ((System.Drawing.Image)(resources.GetObject("btnEdit.Image")));
this.btnEdit.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btnEdit.Name = "btnEdit";
this.btnEdit.Size = new System.Drawing.Size(23, 22);
this.btnEdit.Text = "Edit Texture";
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
//
// btnRemove
//
this.btnRemove.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnRemove.Image = global::FirstPlugin.Properties.Resources.RemoveIcon;
this.btnRemove.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btnRemove.Name = "btnRemove";
this.btnRemove.Size = new System.Drawing.Size(23, 22);
this.btnRemove.Text = "Remove Texture";
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
//
// listViewTpyeCB
//
@ -101,7 +117,10 @@
this.listViewCustom1.TabIndex = 13;
this.listViewCustom1.UseCompatibleStateImageBehavior = false;
this.listViewCustom1.View = System.Windows.Forms.View.Details;
this.listViewCustom1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.listViewCustom1_ItemDrag);
this.listViewCustom1.SelectedIndexChanged += new System.EventHandler(this.listViewCustom1_SelectedIndexChanged);
this.listViewCustom1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listViewCustom1_DragEnter);
this.listViewCustom1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewCustom1_KeyDown);
this.listViewCustom1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listViewCustom1_MouseClick);
//
// columnHeader1
@ -147,8 +166,8 @@
#endregion
private Toolbox.Library.Forms.STToolStrip stToolStrip1;
private System.Windows.Forms.ToolStripButton toolStripButton1;
private System.Windows.Forms.ToolStripButton toolStripButton2;
private System.Windows.Forms.ToolStripButton btnAdd;
private System.Windows.Forms.ToolStripButton btnRemove;
private Toolbox.Library.Forms.STComboBox listViewTpyeCB;
private Toolbox.Library.Forms.ListViewCustom listViewCustom1;
private System.Windows.Forms.ColumnHeader columnHeader1;
@ -156,5 +175,6 @@
private System.Windows.Forms.ColumnHeader columnHeader3;
private System.Windows.Forms.ColumnHeader columnHeader4;
private System.Windows.Forms.ColumnHeader columnHeader5;
private System.Windows.Forms.ToolStripButton btnEdit;
}
}

View File

@ -17,7 +17,13 @@ namespace LayoutBXLYT
{
public partial class LayoutTextureList : LayoutDocked
{
ImageList imgList = new ImageList();
private LayoutEditor ParentEditor;
private BxlytHeader ActiveLayout;
private Dictionary<string, STGenericTexture> TextureList;
ImageList imgListSmall = new ImageList();
ImageList imgListBig = new ImageList();
public LayoutTextureList()
{
InitializeComponent();
@ -29,11 +35,17 @@ namespace LayoutBXLYT
listViewTpyeCB.Items.Add(View.Tile);
listViewTpyeCB.SelectedIndex = 0;
listViewCustom1.FullRowSelect = true;
btnEdit.Enabled = false;
imgList = new ImageList()
imgListSmall = new ImageList()
{
ImageSize = new Size(30, 30),
ColorDepth = ColorDepth.Depth32Bit,
};
imgListBig = new ImageList()
{
ColorDepth = ColorDepth.Depth32Bit,
ImageSize = new Size(30, 30),
ImageSize = new Size(80, 80),
};
}
@ -42,10 +54,14 @@ namespace LayoutBXLYT
if (Thread != null && Thread.IsAlive)
Thread.Abort();
for (int i = 0; i < imgList.Images.Count; i++)
imgList.Images[i].Dispose();
for (int i = 0; i < imgListBig.Images.Count; i++)
imgListBig.Images[i].Dispose();
imgList.Images.Clear();
for (int i = 0; i < imgListSmall.Images.Count; i++)
imgListSmall.Images[i].Dispose();
imgListBig.Images.Clear();
imgListSmall.Images.Clear();
listViewCustom1.Items.Clear();
isLoaded = false;
@ -53,17 +69,21 @@ namespace LayoutBXLYT
private bool isLoaded = false;
private Thread Thread;
public void LoadTextures(BxlytHeader header)
public void LoadTextures(LayoutEditor parentEditor, BxlytHeader header,
Dictionary<string, STGenericTexture> textureList)
{
ParentEditor = parentEditor;
TextureList = textureList;
ActiveLayout = header;
listViewCustom1.Items.Clear();
imgList.Images.Clear();
imgList.Images.Add(new Bitmap(30, 30));
listViewCustom1.LargeImageList = imgList;
listViewCustom1.SmallImageList = imgList;
var textureList = header.GetTextures;
imgListSmall.Images.Clear();
imgListSmall.Images.Add(new Bitmap(30, 30));
imgListBig.Images.Clear();
imgListBig.Images.Add(new Bitmap(60, 60));
listViewCustom1.LargeImageList = imgListBig;
listViewCustom1.SmallImageList = imgListSmall;
listViewCustom1.BeginUpdate();
foreach (var texture in header.Textures)
{
@ -118,15 +138,18 @@ namespace LayoutBXLYT
{
listViewCustom1.Invoke((MethodInvoker)delegate {
var item = listViewCustom1.Items[index];
item.ImageIndex = imgList.Images.Count;
item.ImageIndex = imgListBig.Images.Count;
item.SubItems.Add(texture.Format.ToString());
item.SubItems.Add(texture.Width.ToString());
item.SubItems.Add(texture.Height.ToString());
item.SubItems.Add(texture.DataSize);
// Running on the UI thread
imgList.Images.Add(temp);
var dummy = imgList.Handle;
imgListBig.Images.Add(temp);
imgListSmall.Images.Add(temp);
var dummy = imgListBig.Handle;
var dummy2 = imgListSmall.Handle;
});
}
@ -171,5 +194,114 @@ namespace LayoutBXLYT
}
}
private void listViewCustom1_ItemDrag(object sender, ItemDragEventArgs e) {
DoDragDrop(e.Item, DragDropEffects.Move);
}
private void btnRemove_Click(object sender, EventArgs e) {
RemoveSelectedTextures();
}
private void RemoveSelectedTextures()
{
var result = MessageBox.Show("Are you sure you want to remove these textures?",
"Layout Edtior", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
foreach (ListViewItem item in listViewCustom1.SelectedItems)
{
var texture = item.Text;
if (TextureList.ContainsKey(texture))
TextureList.Remove(texture);
ActiveLayout.RemoveTexture(texture);
listViewCustom1.Items.Remove(item);
ParentEditor.UpdateViewport();
}
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
var textures = ActiveLayout.TextureManager.AddTextures();
if (textures == null) return;
foreach (var tex in textures)
{
if (tex == null)
continue;
ActiveLayout.AddTexture(tex.Text);
if (TextureList.ContainsKey(tex.Text))
TextureList.Remove(tex.Text);
TextureList.Add(tex.Text, tex);
ListViewItem item = new ListViewItem();
item.Text = tex.Text;
item.ImageIndex = 0;
listViewCustom1.BeginUpdate();
listViewCustom1.Items.Add(item);
//Add icon
if (Thread != null && Thread.IsAlive)
Thread.Abort();
int index = listViewCustom1.Items.IndexOf(item);
Thread = new Thread((ThreadStart)(() =>
{
LoadTextureIcon(index, tex);
}));
Thread.Start();
listViewCustom1.SelectedItems.Clear();
if (listViewCustom1.Items.ContainsKey(tex.Text))
{
listViewCustom1.Items[tex.Text].Selected = true;
listViewCustom1.Select();
}
listViewCustom1.EndUpdate();
ParentEditor.UpdateViewport();
}
}
private void listViewCustom1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete && listViewCustom1.SelectedItems.Count > 0) {
RemoveSelectedTextures();
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
if (listViewCustom1.SelectedItems.Count == 0)
return;
string textName = listViewCustom1.SelectedItems[0].Text;
if (TextureList.ContainsKey(textName))
{
var texture = ActiveLayout.TextureManager.EditTexture(textName);
if (texture == null)
return;
TextureList[textName] = texture;
//Update the icon by reloading all of them
LoadTextures(ParentEditor, ActiveLayout, TextureList);
}
}
private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listViewCustom1.SelectedItems.Count > 0)
btnEdit.Enabled = true;
else
btnEdit.Enabled = false;
}
}
}

View File

@ -120,4 +120,24 @@
<metadata name="stToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnEdit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALfSURBVHhe7ZBh0pswFANzsJ69l+lB2pKRMwYW/IxIPgfe
zuyfWFKwH0mSJEmSJEmSJOPy6/efv3dS1/ah8TupZzgGDd5RPUcfNHRn9SxxaOTu6mnaULmoyKWhe0/q
uA2VJ3V8C6z7W+WLYL2BVb4I1htY5YtgvYFVHpTe+yzzkc4LqzwYdJdaxVb0ZFdY5cGguyxVdEY0h1jl
gaB7kIrPiOYQqzwQdA9S8RnRHGKVB4LuQSo+I5pDrPJA0D1IxWdEc4hVHgy6y1JFZ0RziFUeDLpLrWIr
erIrrPIOZ+30srxLUcdIb36GVd7gzK1PUH9v93dbZeDsvU9gfbNVXkBbRUWGxPpeq1xBO0sVHQ7rW62y
oI0tVTmFs/aW39i1a5X/Q/2WqlqcuVdvdW86ZepG1cQhhto7WqZerWK7OUW6oJ2iIt1YW0fK1KlV7AVl
ioqEoP5SRbuwdnrLlK9VbAVli4rsQr0tVQljbfSUKVur2CbUKSqCUL6lqiGsfrRMuVrFmlC3qMgMykXV
RBOnGypTplaxMLRRVOQJndcqFt7b4mjvSatM57WKdUNbxdb55HOkgjJFRTY50nmxV6azWsUOQ5sRVV9B
2aIiSG9+xlaZfq99lk+AtvdUbRPqFBVZ0ZNdQeWWqp4G/QepeBPqFhWZEc0hVN5TtdOh/6pVLAxtFBV5
EclsQuUtVXkb9J9FRbqgnaIiT1rnu1CZVPzt0H8XFemCdoqKvP8BFf0Y9A1FRbqgneLW+bMYgcq1in0c
+pZJHXdDW3uq1obKRUV+jLO/Z7m3pyptqDyp4x/n7O+p77in4m2s8pdCd16qaBur/MXQvWsVa2OVvxy6
e1GRNlb5AtD9J3XcxipfBOsNrPJFsN7AKl8E6w2s8kWw3sAqXwTrDag8qeNbYN2fypM6vjx090kdx6CB
u6uniUEDd1bP0gcN3VU9ST80djf1FMeh0Tuo6ydJkiRJkiRJkgzF4/EPk30xhoCOfDYAAAAASUVORK5C
YII=
</value>
</data>
</root>

View File

@ -62,18 +62,84 @@ namespace LayoutBXLYT
public class UndoActionPaneDelete : IRevertAction
{
public BxlytHeader layoutFile;
public List<BasePane> topMostPanes = new List<BasePane>();
public List<PaneInfo> targetPanes = new List<PaneInfo>();
public UndoActionPaneDelete(List<BasePane> panes, BxlytHeader header)
{
layoutFile = header;
GetTopMostPanes(panes, topMostPanes, header.RootPane);
for (int i = 0; i < panes.Count; i++)
targetPanes.Add(new PaneInfo(panes[i], header.PaneLookup[panes[i].Parent.Name]));
targetPanes.Add(new PaneInfo(panes[i], panes[i].Parent));
}
//Loop through each pane in the heiarchy until it finds the first set of panes
//The topmost panes are only going to be removed for adding with redo to be easier
private void GetTopMostPanes(List<BasePane> panes, List<BasePane> topMost, BasePane root)
{
foreach (var child in root.Childern)
{
if (panes.Contains(child))
topMost.Add(child);
}
if (topMost.Count == 0)
{
foreach (var child in root.Childern)
GetTopMostPanes(panes, topMost, child);
}
}
public IRevertAction Revert()
{
Console.WriteLine("Redo pane remove ");
for (int i = 0; i < targetPanes.Count; i++)
layoutFile.AddPane(targetPanes[i].Pane, targetPanes[i].Parent);
{
Console.WriteLine("mats " + targetPanes[i].Materials.Count);
//Try to add any linked materials. If there is none, the list won't add any
if (targetPanes[i].Materials.Count > 0)
{
var mat = targetPanes[i].Materials[0];
var pane = targetPanes[i].Pane;
if (pane is IPicturePane)
{
Console.WriteLine("IPicturePane pane ");
layoutFile.AddMaterial(mat, ((IPicturePane)pane).MaterialIndex);
((IPicturePane)pane).Material = mat;
}
else if (pane is ITextPane)
{
layoutFile.AddMaterial(mat, ((ITextPane)pane).MaterialIndex);
((ITextPane)pane).Material = mat;
}
else if (pane is IWindowPane)
{
var wnd = pane as IWindowPane;
layoutFile.AddMaterial(mat, wnd.Content.MaterialIndex);
wnd.Content.Material = mat;
for (int m = 0; m < wnd.WindowFrames.Count; m++)
{
mat = targetPanes[i].Materials[m + 1];
layoutFile.AddMaterial(mat, wnd.WindowFrames[m].MaterialIndex);
wnd.WindowFrames[m].Material = mat;
}
}
}
//Add the panes
if (!layoutFile.PaneLookup.ContainsKey(targetPanes[i].Pane.Name))
layoutFile.PaneLookup.Add(targetPanes[i].Pane.Name, targetPanes[i].Pane);
}
//Handle children via topmost list
foreach (var pane in topMostPanes)
layoutFile.AddPane(pane, pane.Parent);
return this;
}
@ -82,10 +148,30 @@ namespace LayoutBXLYT
public BasePane Parent;
public BasePane Pane;
public List<BxlytMaterial> Materials = new List<BxlytMaterial>();
public PaneInfo(BasePane pane, BasePane parent)
{
Pane = pane;
Parent = parent;
if (parent == null)
throw new Exception("parent is null!");
//We need to add any materials that the material referenced
if (pane is IPicturePane)
Materials.Add(((IPicturePane)pane).Material);
else if (pane is ITextPane)
Materials.Add(((ITextPane)pane).Material);
else if (pane is IWindowPane)
{
var wnd = pane as IWindowPane;
Materials.Add(wnd.Content.Material);
foreach (var windowFrame in wnd.WindowFrames)
Materials.Add(windowFrame.Material);
}
Console.WriteLine($"Pane Undo {pane.Name} {pane} mats " + Materials.Count);
}
}
}

View File

@ -35,6 +35,7 @@
//
// glControl1
//
this.glControl1.AllowDrop = true;
this.glControl1.BackColor = System.Drawing.Color.Black;
this.glControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.glControl1.Location = new System.Drawing.Point(0, 0);
@ -43,6 +44,8 @@
this.glControl1.TabIndex = 0;
this.glControl1.VSync = false;
this.glControl1.Load += new System.EventHandler(this.glControl1_Load);
this.glControl1.DragDrop += new System.Windows.Forms.DragEventHandler(this.glControl1_DragDrop);
this.glControl1.DragEnter += new System.Windows.Forms.DragEventHandler(this.glControl1_DragEnter);
this.glControl1.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl1_Paint);
this.glControl1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.glControl1_KeyDown);
this.glControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.glControl1_MouseDown);

View File

@ -204,7 +204,7 @@ namespace LayoutBXLYT
}
}
private void RenderScene()
private void RenderScene(bool showSelectionBox = false)
{
// GL.Disable(EnableCap.CullFace);
GL.Enable(EnableCap.Blend);
@ -291,6 +291,18 @@ namespace LayoutBXLYT
}
}
if (showSelectionBox)
{
GL.Begin(PrimitiveType.LineLoop);
GL.Color4(Color.Red);
GL.Vertex2(SelectionBox.LeftPoint, SelectionBox.BottomPoint);
GL.Vertex2(SelectionBox.RightPoint, SelectionBox.BottomPoint);
GL.Vertex2(SelectionBox.RightPoint, SelectionBox.TopPoint);
GL.Vertex2(SelectionBox.LeftPoint, SelectionBox.TopPoint);
GL.End();
}
//Create a bounding box for all selected panes
//This box will allow resizing of all selected panes
if (SelectedPanes.Count > 0)
@ -640,7 +652,11 @@ namespace LayoutBXLYT
GL.PopAttrib();
}
private bool mouseHeldDown = false;
private bool mouseCameraDown = false;
private bool mouseDown = false;
private List<BasePane> SelectionBoxPanes = new List<BasePane>();
private bool showSelectionBox = false;
private bool isPicked = false;
private bool mouseMoving = false;
private Point originMouse;
@ -663,12 +679,14 @@ namespace LayoutBXLYT
e.Button == MouseButtons.Middle)
{
originMouse = e.Location;
mouseHeldDown = true;
mouseCameraDown = true;
glControl1.Invalidate();
}
//Pick an object for moving
else if (e.Button == MouseButtons.Left)
{
mouseDown = true;
RenderEditor();
var coords = convertScreenToWorldCoords(e.Location.X, e.Location.Y);
@ -738,10 +756,10 @@ namespace LayoutBXLYT
var selectOverlapping = new STToolStripItem("Select Overlapping");
var createPanes = new STToolStripItem("Create Pane");
createPanes.DropDownItems.Add(new STToolStripItem("Null Pane", CreateNullPaneAction));
createPanes.DropDownItems.Add(new STToolStripItem("Picture Pane"));
createPanes.DropDownItems.Add(new STToolStripItem("Text Box Pane "));
createPanes.DropDownItems.Add(new STToolStripItem("Window Pane"));
createPanes.DropDownItems.Add(new STToolStripItem("Boundry Pane"));
createPanes.DropDownItems.Add(new STToolStripItem("Picture Pane", CreatePicturePaneAction));
createPanes.DropDownItems.Add(new STToolStripItem("Text Box Pane", CreateTextPaneAction));
createPanes.DropDownItems.Add(new STToolStripItem("Window Pane", CreateWindowPaneAction));
createPanes.DropDownItems.Add(new STToolStripItem("Boundry Pane", CreateBoundryPaneAction));
var hitPanes = GetHitPanes(LayoutFile.RootPane, coords.X, coords.Y, new List<BasePane>());
for (int i = 0; i < hitPanes.Count; i++)
@ -769,15 +787,36 @@ namespace LayoutBXLYT
private void CreateNullPaneAction(object sender, EventArgs e) {
var pane = ParentEditor.AddNewNullPane();
SetupNewPane(pane);
SetupNewPane(pane, pickOriginMouse);
}
private void SetupNewPane(BasePane pane)
private void CreatePicturePaneAction(object sender, EventArgs e) {
var pane = ParentEditor.AddNewPicturePane();
SetupNewPane(pane, pickOriginMouse);
}
private void CreateWindowPaneAction(object sender, EventArgs e) {
var pane = ParentEditor.AddNewWindowPane();
SetupNewPane(pane, pickOriginMouse);
}
private void CreateTextPaneAction(object sender, EventArgs e) {
var pane = ParentEditor.AddNewTextPane();
SetupNewPane(pane, pickOriginMouse);
}
private void CreateBoundryPaneAction(object sender, EventArgs e) {
var pane = ParentEditor.AddNewBoundryPane();
SetupNewPane(pane, pickOriginMouse);
}
private void SetupNewPane(BasePane pane, Point point)
{
if (pane == null) return;
pane.Translate = new Syroot.Maths.Vector3F(pickOriginMouse.X, pickOriginMouse.Y, 0);
SelectedPanes.Add(pane);
SelectedPanes.Clear();
pane.Translate = new Syroot.Maths.Vector3F(point.X, point.Y, 0);
ParentEditor.LoadPaneEditorOnSelect(pane);
glControl1.Invalidate();
}
@ -810,13 +849,28 @@ namespace LayoutBXLYT
private void DeleteSelectedPanes()
{
if (SelectedPanes.Count == 0) return;
//Make sure to fill all the children in selected panes!
for (int i = 0; i < SelectedPanes.Count; i++)
SelectedPanes.AddRange(GetChildren(SelectedPanes, new List<BasePane>(), SelectedPanes[i]));
UndoManger.AddToUndo(new LayoutUndoManager.UndoActionPaneDelete(SelectedPanes, LayoutFile));
LayoutFile.RemovePanes(SelectedPanes);
LayoutFile.RemovePanes(SelectedPanes, LayoutFile.RootPane);
SelectedPanes.Clear();
ParentEditor?.UpdateHiearchyTree();
glControl1.Invalidate();
}
private List<BasePane> GetChildren(List<BasePane> selectedPanes, List<BasePane> childrenPanes, BasePane parent)
{
if (!selectedPanes.Contains(parent))
childrenPanes.Add(parent);
foreach (var child in parent.Childern)
GetChildren(selectedPanes, childrenPanes, child);
return childrenPanes;
}
private void SelectOverlappingAction(object sender, EventArgs e)
{
var toolMenu = sender as STToolStripItem;
@ -861,6 +915,30 @@ namespace LayoutBXLYT
SearchHit(childPane, X, Y, ref SelectedPane);
}
private List<BasePane> GetHitPanes(BasePane pane, CustomRectangle rect, List<BasePane> SelectedPanes)
{
bool isVisible = pane.Visible;
if (!Runtime.LayoutEditor.DisplayPicturePane && pane is IPicturePane)
isVisible = false;
if (!Runtime.LayoutEditor.DisplayWindowPane && pane is IWindowPane)
isVisible = false;
if (!Runtime.LayoutEditor.DisplayBoundryPane && pane is IBoundryPane)
isVisible = false;
if (!Runtime.LayoutEditor.DisplayTextPane && pane is ITextPane)
isVisible = false;
if (!Runtime.LayoutEditor.DisplayNullPane && pane.IsNullPane)
isVisible = false;
if (isVisible && pane.DisplayInEditor && pane.IsHit(rect) && pane.Name != "RootPane")
if (!SelectedPanes.Contains(pane))
SelectedPanes.Add(pane);
foreach (var childPane in pane.Childern)
GetHitPanes(childPane, rect, SelectedPanes);
return SelectedPanes;
}
private List<BasePane> GetHitPanes(BasePane pane, int X, int Y, List<BasePane> SelectedPanes)
{
bool isVisible = pane.Visible;
@ -923,9 +1001,19 @@ namespace LayoutBXLYT
if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle)
{
pickAxis = PickAxis.All;
mouseHeldDown = false;
mouseCameraDown = false;
mouseDown = false;
isPicked = false;
mouseMoving = false;
showSelectionBox = false;
foreach (var pane in SelectionBoxPanes)
if (!SelectedPanes.Contains(pane))
SelectedPanes.Add(pane);
SelectionBoxPanes.Clear();
ParentEditor.RefreshEditors();
glControl1.Invalidate();
}
}
@ -962,7 +1050,7 @@ namespace LayoutBXLYT
if (UseOrtho)
GL.PopMatrix();
if (SelectedPanes.Count > 0)
if (SelectedPanes.Count > 0 && !showSelectionBox)
{
RenderEditor();
var posWorld = convertScreenToWorldCoords(e.Location.X, e.Location.Y);
@ -970,7 +1058,7 @@ namespace LayoutBXLYT
GL.PopMatrix();
//Setup edge picking with move event
bool isEdge = false;
bool hasPick = false;
foreach (var pane in SelectedPanes)
{
var pickState = SearchEdgePicking(pane, posWorld.X, posWorld.Y);
@ -993,15 +1081,26 @@ namespace LayoutBXLYT
if (pickState == PickAction.DragTopRight)
Cursor.Current = Cursors.SizeNESW;
isEdge = true;
hasPick = true;
}
else if (isPicked && pickAction != PickAction.None)
{
if (pickAction == PickAction.Translate)
Cursor.Current = Cursors.SizeAll;
if (pickAction == PickAction.Rotate)
Cursor.Current = Cursors.SizeAll;
if (pickAction == PickAction.Scale)
Cursor.Current = Cursors.SizeAll;
hasPick = true;
}
}
if (!isEdge)
if (!hasPick)
Cursor.Current = Cursors.Default;
}
if (isPicked)
if (isPicked && !showSelectionBox)
{
RenderEditor();
var temp = e.Location;
@ -1045,7 +1144,7 @@ namespace LayoutBXLYT
}
}
}
else
else if (!showSelectionBox)
{
//Setup edge picking with move event
foreach (var pane in SelectedPanes)
@ -1057,7 +1156,16 @@ namespace LayoutBXLYT
RenderScene();
}
if (mouseHeldDown)
if (mouseDown && !isPicked)
{
RenderEditor();
var temp = e.Location;
var curPos = convertScreenToWorldCoords(temp.X, temp.Y);
var prevPos = convertScreenToWorldCoords(pickOriginMouse.X, pickOriginMouse.Y);
DrawSelectionBox(prevPos, curPos);
}
if (mouseCameraDown)
{
var pos = new Vector2(e.Location.X - originMouse.X, e.Location.Y - originMouse.Y);
Camera.Position.X += pos.X;
@ -1069,6 +1177,38 @@ namespace LayoutBXLYT
}
}
private CustomRectangle SelectionBox;
private void DrawSelectionBox(Point point1, Point point2)
{
SelectionBoxPanes.Clear();
int left = point1.X;
int right = point2.X;
int top = point1.Y;
int bottom = point2.Y;
//Determine each point direction to see what is left/right/top/bottom
if (bottom > top)
{
top = point2.Y;
bottom = point1.Y;
}
if (left > right)
{
right = point1.X;
left = point2.X;
}
showSelectionBox = true;
SelectionBox = new CustomRectangle(left, right, top, bottom);
var hitPanes = GetHitPanes(LayoutFile.RootPane, SelectionBox, new List<BasePane>());
foreach (var pane in hitPanes)
if (!SelectionBoxPanes.Contains(pane))
SelectionBoxPanes.Add(pane);
RenderScene(true);
}
public static Point convertScreenToWorldCoords(int x, int y)
{
int[] viewport = new int[4];
@ -1163,5 +1303,34 @@ namespace LayoutBXLYT
DeleteSelectedPanes();
}
}
private void glControl1_DragEnter(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(typeof(ListViewItem)))
{
e.Effect = DragDropEffects.Move;
}
}
private void glControl1_DragDrop(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(typeof(ListViewItem)))
{
var item = e.Data.GetData(typeof(ListViewItem)) as ListViewItem;
string texture = item.Text;
if (Textures.ContainsKey(texture))
{
var point = this.PointToClient(new Point(e.X, e.Y));
RenderEditor();
var coords = convertScreenToWorldCoords(point.X, point.Y);
GL.PopMatrix();
var pane = ParentEditor.AddNewPicturePane();
pane.Width = Textures[texture].Width;
pane.Height = Textures[texture].Height;
((IPicturePane)pane).Material.AddTexture(texture);
SetupNewPane(pane, coords);
}
}
}
}
}

View File

@ -29,6 +29,7 @@ namespace FirstPlugin
{
IsWIiiU = isWiiU;
listView1.Items.Clear();
if (IsWIiiU)
{
foreach (BFRESGroupNode ftexcont in PluginRuntime.ftexContainers)

View File

@ -83,8 +83,8 @@ namespace FirstPlugin
formatComboBox.Items.Add(SurfaceFormat.BC7_UNORM);
formatComboBox.Items.Add(SurfaceFormat.BC7_SRGB);
compressionModeCB.Items.Add("Fast (Lower Qaulity)");
compressionModeCB.Items.Add("Normal (Good Qaulity)");
compressionModeCB.Items.Add("Fast (Lower Quality)");
compressionModeCB.Items.Add("Normal (Good Quality)");
compressionModeCB.SelectedIndex = 0;
compressionModeCB.Visible = false;

View File

@ -0,0 +1,25 @@
<configuration>
<dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/>
<dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/>
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>
<dllmap os="linux" dll="alut.dll" target="libalut.so.0"/>
<dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/>
<dllmap os="linux" dll="libX11" target="libX11.so.6"/>
<dllmap os="linux" dll="libXi" target="libXi.so.6"/>
<dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/>
<dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/>
<!-- XQuartz compatibility (X11 on Mac) -->
<dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/>
<dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/>
<dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/>
<dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/>
</configuration>

View File

@ -4,7 +4,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />

View File

@ -2,4 +2,7 @@
<packages>
<package id="DockPanelSuite" version="3.0.6" targetFramework="net462" />
<package id="DockPanelSuite.ThemeVS2015" version="3.0.6" targetFramework="net462" />
<package id="OpenTK" version="3.0.0" targetFramework="net462" />
<package id="SharpFont" version="4.0.1" targetFramework="net462" />
<package id="SharpFont.Dependencies" version="2.6" targetFramework="net462" />
</packages>

View File

@ -13,6 +13,12 @@ namespace Toolbox.Library.Forms
public AlphaSelectorHorizontalPanel()
{
InitializeComponent();
this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer,
true);
}
public event EventHandler AlphaChanged;

View File

@ -11,7 +11,29 @@ namespace Toolbox.Library.Forms
{
public class ColorAlphaBox : STPanel
{
public Color Color { get; set; }
private Color color;
public Color Color
{
get { return color; }
set
{
color = value;
this.Invalidate();
}
}
private bool displayAlphaSolid;
public bool DisplayAlphaSolid
{
get { return displayAlphaSolid; }
set
{
displayAlphaSolid = true;
this.BackgroundImage = null;
this.BackColor = Color.Black;
this.Invalidate();
}
}
public ColorAlphaBox()
{
@ -33,6 +55,10 @@ namespace Toolbox.Library.Forms
Brush RGBColor = new SolidBrush(Color.FromArgb(255, Color.R, Color.G, Color.B));
Brush AlphaColor = new SolidBrush(Color.FromArgb(Color.A, Color.R, Color.G, Color.B));
if (DisplayAlphaSolid)
AlphaColor = new SolidBrush(Color.FromArgb(255, Color.A, Color.A, Color.A));
Point rgbPos = new Point(ClientRectangle.X, ClientRectangle.Y);
Point alphaPos = new Point(ClientRectangle.X + ClientRectangle.Width / 2, ClientRectangle.Y);

View File

@ -19,7 +19,22 @@ namespace Toolbox.Library.Forms
private Color BLColor;
private Color BRColor;
private Color AllColor = Color.White;
private Color AllColor
{
get
{
Color[] colors = new Color[4]
{ TLColor, TRColor, BLColor, BRColor };
return Color.FromArgb(
(int)colors.Average(a => a.A),
(int)colors.Average(a => a.R),
(int)colors.Average(a => a.G),
(int)colors.Average(a => a.B));
}
}
private bool SuppressChangeEvent = false;
public Color TopLeftColor
{
@ -63,7 +78,8 @@ namespace Toolbox.Library.Forms
public void ColorChanged()
{
OnColorChanged?.Invoke(null, new EventArgs());
this.Invalidate();
OnColorChanged?.Invoke(this, new EventArgs());
}
public VertexColorBox()
@ -78,6 +94,17 @@ namespace Toolbox.Library.Forms
true);
}
public void DisposeControl()
{
if (colorDlg != null)
{
colorDlg.Close();
colorDlg = null;
}
}
private bool dialogActive;
private STColorDialog colorDlg;
private void OnMouseClick(object sender, MouseEventArgs e)
{
if (TopLeftHit == null) return;
@ -85,38 +112,73 @@ namespace Toolbox.Library.Forms
if (e.Button == MouseButtons.Left)
{
if (TopLeftHit.IsHit(e.Location))
TopLeftColor = LoadColorDialog(TopLeftColor);
LoadColorDialog(TopLeftColor, 0);
if (TopRightHit.IsHit(e.Location))
TopRightColor = LoadColorDialog(TopRightColor);
LoadColorDialog(TopRightColor, 1);
if (BottomLefttHit.IsHit(e.Location))
BottomLeftColor = LoadColorDialog(BottomLeftColor);
LoadColorDialog(BottomLeftColor, 2);
if (BottomRightHit.IsHit(e.Location))
BottomRightColor = LoadColorDialog(BottomRightColor);
LoadColorDialog(BottomRightColor, 3);
if (AllHit.IsHit(e.Location))
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.Color = AllColor;
if (colorDlg.ShowDialog() == DialogResult.OK)
if (dialogActive)
{
TopLeftColor = colorDlg.Color;
TopRightColor = colorDlg.Color;
BottomLeftColor = colorDlg.Color;
BottomRightColor = colorDlg.Color;
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(AllColor);
colorDlg.Show();
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.ColorChanged += delegate
{
//Update only once!
SuppressChangeEvent = true;
TopLeftColor = colorDlg.NewColor;
TopRightColor = colorDlg.NewColor;
BottomLeftColor = colorDlg.NewColor;
BottomRightColor = colorDlg.NewColor;
SuppressChangeEvent = false;
ColorChanged();
};
}
}
this.Invalidate();
}
private Color LoadColorDialog(Color color)
private void LoadColorDialog(Color color, int index)
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.Color = color;
if (colorDlg.ShowDialog() == DialogResult.OK)
return colorDlg.Color;
else
return color;
if (dialogActive)
{
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(color);
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.Show();
colorDlg.ColorChanged += delegate
{
if (index == 0)
TopLeftColor = colorDlg.NewColor;
if (index == 1)
TopRightColor = colorDlg.NewColor;
if (index == 2)
BottomLeftColor = colorDlg.NewColor;
if (index == 3)
BottomRightColor = colorDlg.NewColor;
};
}
private Rectangle TopLeftHit;
@ -147,16 +209,30 @@ namespace Toolbox.Library.Forms
float delta12R = 1f * (c2.R - c1.R) / r.Height;
float delta12G = 1f * (c2.G - c1.G) / r.Height;
float delta12B = 1f * (c2.B - c1.B) / r.Height;
float delta12A = 1f * (c2.A - c1.A) / r.Height;
float delta34R = 1f * (c4.R - c3.R) / r.Height;
float delta34G = 1f * (c4.G - c3.G) / r.Height;
float delta34B = 1f * (c4.B - c3.B) / r.Height;
float delta34A = 1f * (c4.A - c3.A) / r.Height;
var destRect = ClientRectangle;
var image = Toolbox.Library.Properties.Resources.CheckerBackground;
pe.Graphics.DrawImage(Toolbox.Library.Properties.Resources.CheckerBackground,
ClientRectangle, destRect, GraphicsUnit.Pixel);
for (int y = 0; y < r.Height; y++)
{
Color c12 = Color.FromArgb(255, c1.R + (int)(y * delta12R),
c1.G + (int)(y * delta12G), c1.B + (int)(y * delta12B));
Color c34 = Color.FromArgb(255, c3.R + (int)(y * delta34R),
c3.G + (int)(y * delta34G), c3.B + (int)(y * delta34B));
Color c12 = Color.FromArgb(
c1.A + (int)(y * delta12A),
c1.R + (int)(y * delta12R),
c1.G + (int)(y * delta12G),
c1.B + (int)(y * delta12B));
Color c34 = Color.FromArgb(
c3.A + (int)(y * delta34A),
c3.R + (int)(y * delta34R),
c3.G + (int)(y * delta34G),
c3.B + (int)(y * delta34B));
using (LinearGradientBrush lgBrush = new LinearGradientBrush(
new Rectangle(0, y, r.Width, 1), c12, c34, 0f))
{
@ -174,19 +250,19 @@ namespace Toolbox.Library.Forms
var font = new Font(this.Font, FontStyle.Bold);
using (Brush br = new SolidBrush(c1.GrayScale().Inverse()))
using (Brush br = new SolidBrush(AllColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("ALL", font, br, new Point(halfWidth - 10, halfHeight - 10));
using (Brush br = new SolidBrush(TopLeftColor.GrayScale().Inverse()))
using (Brush br = new SolidBrush(TopLeftColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("TL", font, br, new Point(LeftX, topY));
using (Brush br = new SolidBrush(TopRightColor.GrayScale().Inverse()))
using (Brush br = new SolidBrush(TopRightColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("TR", font, br, new Point(RightX, topY));
using (Brush br = new SolidBrush(BottomLeftColor.GrayScale().Inverse()))
using (Brush br = new SolidBrush(BottomLeftColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("BL", font, br, new Point(LeftX, BottomY));
using (Brush br = new SolidBrush(BottomRightColor.GrayScale().Inverse()))
using (Brush br = new SolidBrush(BottomRightColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("BR", font, br, new Point(RightX, BottomY));
// pe.Graphics.FillRectangle(linearGradientBrush, ClientRectangle);

View File

@ -0,0 +1,197 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using Toolbox.Library.IO;
namespace Toolbox.Library.Forms
{
public class VertexColorTopBottomBox : STPanel
{
public EventHandler OnColorChanged;
private Color TColor;
private Color BColor;
private Color AllColor
{
get
{
Color[] colors = new Color[2]
{ TColor, BColor };
return Color.FromArgb(
(int)colors.Average(a => a.A),
(int)colors.Average(a => a.R),
(int)colors.Average(a => a.G),
(int)colors.Average(a => a.B));
}
}
private bool SuppressChangeEvent = false;
public Color TopColor
{
get { return TColor; }
set
{
TColor = value;
ColorChanged();
}
}
public Color BottomColor
{
get { return BColor; }
set
{
BColor = value;
ColorChanged();
}
}
public void ColorChanged()
{
this.Invalidate();
OnColorChanged?.Invoke(this, new EventArgs());
}
public VertexColorTopBottomBox()
{
this.BackgroundImage = Properties.Resources.CheckerBackground;
this.BackColor = Color.Transparent;
this.MouseClick += OnMouseClick;
this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer,
true);
}
public void DisposeControl()
{
if (colorDlg != null)
{
colorDlg.Close();
colorDlg = null;
}
}
private bool dialogActive;
private STColorDialog colorDlg;
private void OnMouseClick(object sender, MouseEventArgs e)
{
if (TopHit == null) return;
if (e.Button == MouseButtons.Left)
{
if (AllHit.IsHit(e.Location))
{
if (dialogActive)
{
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(AllColor);
colorDlg.Show();
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.ColorChanged += delegate
{
//Update only once!
SuppressChangeEvent = true;
TopColor = colorDlg.NewColor;
BottomColor = colorDlg.NewColor;
SuppressChangeEvent = false;
ColorChanged();
};
}
else if (TopHit.IsHit(e.Location))
LoadColorDialog(TopColor, 0);
else if (BottomHit.IsHit(e.Location))
LoadColorDialog(BottomColor, 1);
}
this.Invalidate();
}
private void LoadColorDialog(Color color, int index)
{
if (dialogActive)
{
colorDlg.Focus();
return;
}
dialogActive = true;
colorDlg = new STColorDialog(color);
colorDlg.FormClosed += delegate
{
dialogActive = false;
};
colorDlg.Show();
colorDlg.ColorChanged += delegate
{
if (index == 0)
TopColor = colorDlg.NewColor;
if (index == 1)
BottomColor = colorDlg.NewColor;
};
}
private Rectangle TopHit;
private Rectangle BottomHit;
private Rectangle AllHit;
protected override void OnPaint(PaintEventArgs pe)
{
pe.Graphics.InterpolationMode = InterpolationMode.Bilinear;
pe.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
Rectangle r = ClientRectangle;
int halfWidth = r.Width / 2;
int halfHeight = r.Height / 2;
int LeftX = 10;
int RightX = r.Width - 30;
int topY = 10;
int BottomY = r.Height - 25;
var linearGradientBrush = new LinearGradientBrush(r,
TopColor, BottomColor, LinearGradientMode.Vertical);
pe.Graphics.FillRectangle(linearGradientBrush, r);
var font = new Font(this.Font, FontStyle.Bold);
using (Brush br = new SolidBrush(AllColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("ALL", font, br, new Point(halfWidth - 12, halfHeight - 10));
using (Brush br = new SolidBrush(TopColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("T", font, br, new Point(halfWidth - 7, topY));
using (Brush br = new SolidBrush(BottomColor.GrayScale(true).Inverse()))
pe.Graphics.DrawString("B", font, br, new Point(halfWidth - 7, BottomY));
// pe.Graphics.FillRectangle(linearGradientBrush, ClientRectangle);
const int hitSize = 40;
TopHit = new Rectangle(halfWidth - 10, topY, hitSize, hitSize);
BottomHit = new Rectangle(halfWidth - 10, BottomY, hitSize, hitSize);
AllHit = new Rectangle(halfWidth - 10, halfHeight - 10, hitSize, hitSize);
base.OnPaint(pe);
}
}
}

View File

@ -163,7 +163,12 @@ namespace BarSlider
ActiveEditColor = FormThemes.BaseTheme.TextEditorBackColor;
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
protected override void OnLeave(EventArgs e)
{
DisableTextEditor();
}
protected override void OnMouseClick(MouseEventArgs e)
{
TextEditorActive = true;
@ -1081,6 +1086,9 @@ namespace BarSlider
{
get
{
if (!this.Enabled)
return FormThemes.BaseTheme.DisabledItemColor;
return base.ForeColor;
}
set
@ -1611,6 +1619,8 @@ namespace BarSlider
{
if (TextEditorActive)
return;
return;
int currentPositionX = 0;
int direction = 0;

View File

@ -22,6 +22,7 @@ namespace Toolbox.Library.Forms
BackColor = FormThemes.BaseTheme.DropdownButtonBackColor;
ForeColor = FormThemes.BaseTheme.FormForeColor;
SetIconColor = FormThemes.BaseTheme.DropdownButtonBackColor;
ExpandedImage = pictureBox1.Image;

View File

@ -119,6 +119,12 @@ namespace Toolbox.Library.Forms
stCollapsePanelButton1.SetIconColor = FormThemes.BaseTheme.DropdownButtonBackColor;
}
public void ResetColors()
{
stCollapsePanelButton1.SetIconColor = FormThemes.BaseTheme.DropdownButtonBackColor;
stCollapsePanelButton1.SetIconAlphaColor = FormThemes.BaseTheme.DropdownButtonBackColor;
}
public bool IsExpanded
{
get { return stCollapsePanelButton1.IsExpanded; }

View File

@ -82,6 +82,14 @@ namespace Toolbox.Library.Forms
SelectedIndex = FindStringExact(text);
}
public void ResetBind()
{
DataBindings.Clear();
DataSource = null;
Items.Clear();
}
public void Bind(Type EnumType, object Object, string PropertyName, bool IsReset = true)
{
if (IsReset)

View File

@ -34,6 +34,20 @@ namespace Toolbox.Library.Forms
private static Color borderItemColor = Color.Black;
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
public bool HighlightSelectedTab
{
get {
if (Renderer == null)
return false;
return ((MenuRenderer)this.Renderer).HighlightMenuBar;
}
set {
if (Renderer != null)
((MenuRenderer)this.Renderer).HighlightMenuBar = value;
}
}
public STMenuStrip()
{
if (FormThemes.ActivePreset != FormThemes.Preset.White)
@ -43,6 +57,11 @@ namespace Toolbox.Library.Forms
this.Renderer = new MenuRenderer();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
}
}
public class STContextMenuStrip : ContextMenuStrip
@ -80,9 +99,14 @@ namespace Toolbox.Library.Forms
{
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
public bool HighlightMenuBar
{
get { return ((ColorTable)ColorTable).HighlightMenuBar; }
set { ((ColorTable)ColorTable).HighlightMenuBar = value; }
}
public MenuRenderer() : base(new ColorTable())
{
}
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
@ -115,11 +139,14 @@ namespace Toolbox.Library.Forms
public class ColorTable : ProfessionalColorTable
{
public bool HighlightMenuBar = false;
private static Color titlebarBackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
private static Color borderColor = FormThemes.BaseTheme.FormContextMenuForeColor;
private static Color borderItemColor = Color.Black;
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
private static Color checkedHighlightBackColor = FormThemes.BaseTheme.CheckBoxEnabledBackColor;
public override Color ToolStripDropDownBackground => titlebarBackColor;
@ -143,11 +170,15 @@ namespace Toolbox.Library.Forms
public override Color MenuStripGradientBegin => titlebarBackColor;
public override Color MenuStripGradientEnd => titlebarBackColor;
public override Color MenuItemSelectedGradientBegin => menuSelectItemColor;
public override Color MenuItemSelectedGradientEnd => menuSelectItemColor;
public override Color MenuItemSelectedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
public override Color MenuItemSelectedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
public override Color MenuItemPressedGradientBegin => titlebarBackColor;
public override Color MenuItemPressedGradientEnd => titlebarBackColor;
public override Color MenuItemPressedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color MenuItemPressedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color ButtonCheckedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color ButtonCheckedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color ButtonCheckedGradientMiddle => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
}
}

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Toolbox.Library.Forms
{
public class STRadioButton : RadioButton
{
public STRadioButton()
{
}
}
}

View File

@ -45,6 +45,8 @@ namespace Toolbox.Library.Forms
private void STTextBox_TextChanged(object sender, EventArgs e)
{
if (this.Text.Length == 0) return;
foreach (Binding data in DataBindings)
{
data.WriteValue();

View File

@ -9,14 +9,42 @@ using System.Drawing.Drawing2D;
namespace Toolbox.Library.Forms
{
public class STToolStipMenuButton : ToolStripButton
{
public STToolStipMenuButton(string name, Image image, EventHandler eventHandler)
{
Text = name;
Image = image;
Click += eventHandler;
}
}
public class STToolStrip : ToolStrip
{
public int SelectedTabIndex = -1;
private static Color titlebarBackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
private static Color borderColor = FormThemes.BaseTheme.FormContextMenuForeColor;
private static Color borderItemColor = Color.Black;
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
public bool HighlightSelectedTab
{
get
{
if (Renderer == null)
return false;
return ((MenuRenderer)this.Renderer).HighlightMenuBar;
}
set
{
if (Renderer != null)
((MenuRenderer)this.Renderer).HighlightMenuBar = value;
}
}
public STToolStrip()
{
this.BackColor = titlebarBackColor;
@ -28,8 +56,35 @@ namespace Toolbox.Library.Forms
this.Renderer = new MenuRenderer();
}
}
protected override void OnItemClicked(ToolStripItemClickedEventArgs e)
{
if (HighlightSelectedTab)
{
foreach (var item in Items)
{
var toolStripBtn = item as ToolStripButton;
if (toolStripBtn != null)
{
if (toolStripBtn != e.ClickedItem)
toolStripBtn.Checked = false;
else
toolStripBtn.Checked = true;
}
}
}
SelectedTabIndex = Items.IndexOf(e.ClickedItem);
}
public class MenuRenderer : ToolStripProfessionalRenderer
{
public bool HighlightMenuBar
{
get { return ((ColorTable)ColorTable).HighlightMenuBar; }
set { ((ColorTable)ColorTable).HighlightMenuBar = value; }
}
public MenuRenderer() : base(new ColorTable())
{
@ -56,6 +111,11 @@ namespace Toolbox.Library.Forms
}
public class ColorTable : ProfessionalColorTable
{
public bool HighlightMenuBar = false;
private static Color checkedHighlightBackColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
private static Color uncheckedHighlightBackColor = FormThemes.BaseTheme.CheckBoxBackColor;
public override Color ToolStripDropDownBackground
{
get
@ -64,101 +124,28 @@ namespace Toolbox.Library.Forms
}
}
public override Color ImageMarginGradientBegin
{
get
{
return titlebarBackColor;
}
}
public override Color ImageMarginGradientBegin => HighlightMenuBar ? uncheckedHighlightBackColor : titlebarBackColor;
public override Color ImageMarginGradientMiddle => HighlightMenuBar ? uncheckedHighlightBackColor : titlebarBackColor;
public override Color ImageMarginGradientEnd => HighlightMenuBar ? uncheckedHighlightBackColor : titlebarBackColor;
public override Color MenuBorder => HighlightMenuBar ? uncheckedHighlightBackColor : borderItemColor;
public override Color MenuItemBorder => HighlightMenuBar ? uncheckedHighlightBackColor : borderItemColor;
public override Color ImageMarginGradientMiddle
{
get
{
return titlebarBackColor;
}
}
public override Color MenuStripGradientBegin => HighlightMenuBar ? uncheckedHighlightBackColor : titlebarBackColor;
public override Color MenuStripGradientEnd => HighlightMenuBar ? uncheckedHighlightBackColor : titlebarBackColor;
public override Color ImageMarginGradientEnd
{
get
{
return titlebarBackColor;
}
}
public override Color MenuItemSelected => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
public override Color MenuBorder
{
get
{
return borderColor;
}
}
public override Color ButtonSelectedBorder => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color MenuItemBorder
{
get
{
return borderItemColor;
}
}
public override Color MenuItemSelectedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
public override Color MenuItemSelectedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
public override Color MenuItemSelected
{
get
{
return menuSelectItemColor;
}
}
public override Color MenuItemPressedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color MenuItemPressedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color MenuStripGradientBegin
{
get
{
return titlebarBackColor;
}
}
public override Color MenuStripGradientEnd
{
get
{
return titlebarBackColor;
}
}
public override Color MenuItemSelectedGradientBegin
{
get
{
return menuSelectItemColor;
}
}
public override Color MenuItemSelectedGradientEnd
{
get
{
return menuSelectItemColor;
}
}
public override Color MenuItemPressedGradientBegin
{
get
{
return titlebarBackColor;
}
}
public override Color MenuItemPressedGradientEnd
{
get
{
return titlebarBackColor;
}
}
public override Color ButtonCheckedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color ButtonCheckedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
public override Color ButtonCheckedGradientMiddle => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
}
}
}

View File

@ -104,6 +104,7 @@
this.Controls.Add(this.colorSelector1);
this.Name = "ColorSelectorDropdown";
this.Size = new System.Drawing.Size(310, 244);
this.Load += new System.EventHandler(this.ColorSelectorDropdown_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).EndInit();

View File

@ -64,5 +64,10 @@ namespace Toolbox.Library.Forms
{
ColorApplied?.Invoke(sender,e);
}
private void ColorSelectorDropdown_Load(object sender, EventArgs e)
{
}
}
}

Some files were not shown because too many files have changed in this diff Show More