public LayoutElement(LayoutElementType type = LayoutElementType.Word, IEnumerable<LayoutElement> children = null) { Type = type; Children = new List<LayoutElement>(); if (children != null) { Children.AddRange(children); SetBoundsFromNodes(false); Text = children.Select(x => x.Text).Where(x => !String.IsNullOrEmpty(x)).ElementsToStringS(delim: " "); } }
public static GridUnitType GetGridUnitType(LayoutElementType type) { switch (type) { case LayoutElementType.Fixed: return(GridUnitType.Absolute); case LayoutElementType.Grow: return(GridUnitType.Auto); default: return(GridUnitType.Star); } }
public static LayoutElement NewRow(IEnumerable<LayoutElement> nodes, LayoutElementType type = LayoutElementType.Row) { RectangleF dummyBounds = new RectangleF(0,0,1,1); var e = new LayoutElement(type, dummyBounds, null, nodes); // set bounds if (!nodes.IsEmpty()) { e.Text = nodes.Select(x => x.Text).Where(x => !String.IsNullOrEmpty(x)).ElementsToStringS(delim: " "); e.SetBoundsFromNodes(false); } return e; }
public static InputElement CreateInputElement(LayoutElementType type, out int elemSize) { InputElement element = new InputElement(); switch(type & LayoutElementType.TypeMask) { case LayoutElementType.Position3: element.SemanticName = "POSITION"; element.Format = SharpDX.DXGI.Format.R32G32B32_Float; elemSize = 12; break; case LayoutElementType.Position4: element.SemanticName = "POSITION"; element.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; elemSize = 16; break; case LayoutElementType.Normal3: element.SemanticName = "NORMAL"; element.Format = SharpDX.DXGI.Format.R32G32B32_Float; elemSize = 12; break; case LayoutElementType.Normal4: element.SemanticName = "NORMAL"; element.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; elemSize = 16; break; case LayoutElementType.Color4: element.SemanticName = "COLOR"; element.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; elemSize = 16; break; case LayoutElementType.TexCoords2: element.SemanticName = "TEXCOORD"; element.Format = SharpDX.DXGI.Format.R32G32_Float; elemSize = 8; break; default: element.SemanticName = "POSITION"; element.Format = SharpDX.DXGI.Format.R32G32B32_Float; elemSize = 12; break; } switch(type & LayoutElementType.SlotMask) { case LayoutElementType.Slot0: element.SemanticName += "0"; element.Slot = 0; break; case LayoutElementType.Slot1: element.SemanticName += "1"; element.Slot = 1; break; case LayoutElementType.Slot2: element.SemanticName += "2"; element.Slot = 2; break; case LayoutElementType.Slot3: element.SemanticName += "3"; element.Slot = 3; break; default: element.Slot = 0; break; } return element; }
public static LayoutElementType CreateElementType(LayoutElementType dataType, LayoutElementType slot = LayoutElementType.NoSlot) { return dataType | slot; }
public static InputLayout CreateInputLayout(Device dxDevice, ShaderSignature signature, LayoutElementType[] elementTypes) { InputElement[] elements = new InputElement[elementTypes.Length]; int offset = 0; for(int i = 0; i < elements.Length; ++i) { var type = elementTypes[i]; int size; var element = CreateInputElement(type, out size); element.AlignedByteOffset = offset; elements[i] = element; offset += size; } return new InputLayout(dxDevice, signature, elements); }
public LayoutElement(LayoutElementType type, RectangleF unitBounds, String text = null, IEnumerable<LayoutElement> nodes = null) { ArgCheck.NotEmpty(unitBounds, "unitBounds empty"); Type = type; UnitBounds = unitBounds; Text = text; if (nodes != null) { Children = new List<LayoutElement>(); Children.AddRange(nodes); } }
Pen GetPen(LayoutElementType Type) { switch (Type) { case LayoutElementType.Word: return Pens.LightBlue; case LayoutElementType.Image: return Pens.Violet; case LayoutElementType.TitleRow: return Pens.Magenta; case LayoutElementType.Row: return Pens.Red; case LayoutElementType.HeaderRow: return Pens.DarkGreen; case LayoutElementType.FooterRow: return Pens.Blue; case LayoutElementType.FootnoteRow: return Pens.Green; case LayoutElementType.Page: return Pens.LightBlue; case LayoutElementType.Column: return Pens.BurlyWood; default: return Pens.Yellow; } }