private void Process(UIButton button, PhotoshopDocument.Layer layer) { Process((UIVisual)button, layer); PhotoshopDocument.Layer normal = layer.FindSubLayer("#Normal", true); PhotoshopDocument.Layer pushed = layer.FindSubLayer("#Pushed", true); PhotoshopDocument.Layer hovering = layer.FindSubLayer("#Focusing", true); if (hovering == null) { hovering = layer.FindSubLayer("#Hovering", true); } if (hovering == null) { hovering = normal; } if (pushed == null) { pushed = hovering; } if (normal != null) { button.Normal = AddPanelChild(button, "Normal", normal); } if (pushed != null) { button.Pushed = AddPanelChild(button, "Pushed", pushed); } if (hovering != null) { button.Hovering = AddPanelChild(button, "Hovering", hovering); } }
private void Process(UICheckBox button, PhotoshopDocument.Layer layer) { Process((UIButton)button, layer); PhotoshopDocument.Layer normal = layer.FindSubLayer("#CheckedNormal", true); PhotoshopDocument.Layer pushed = layer.FindSubLayer("#CheckedPushed", true); PhotoshopDocument.Layer hovering = layer.FindSubLayer("#CheckedFocusing", true); if (hovering == null) { hovering = layer.FindSubLayer("#CheckedHovering", true); } if (hovering == null) { hovering = normal; } if (pushed == null) { pushed = hovering; } if (normal != null) { button.CheckedNormal = AddPanelChild(button, "CheckedNormal", normal, UIVisibility.Invisible); } if (pushed != null) { button.CheckedPushed = AddPanelChild(button, "CheckedPushed", pushed, UIVisibility.Invisible); } if (hovering != null) { button.CheckedHovering = AddPanelChild(button, "CheckedHovering", hovering, UIVisibility.Invisible); } }
private void Process(UIScrollablePanel panel, PhotoshopDocument.Layer layer) { Process((UIVisual)panel, layer); PhotoshopDocument.Layer content = layer.FindSubLayer("#Content", true); if (content != null) { panel.Content = AddPanelChild(panel, "Content", content); } }
private UIVisual AddChildTo(UIWindow window, PhotoshopDocument.Layer layer) { if (string.IsNullOrEmpty(layer.Name) || layer.Name.StartsWith("#") == false) { return(null); } string name; string type; Dictionary <string, string> args; ParseLayerName(layer.Name, out name, out type, out args); if (layer.IsGroup == false) { if (string.Compare(type, "UIMarkupLabel", true) == 0 || string.Compare(type, "MarkupLabel", true) == 0 || string.Compare(type, "Label", true) == 0) { UILabel label = new UILabel(); label.Name = name; if (args.ContainsKey("0")) { label.Text = args["0"]; } window.AddChild(label); Process(label, layer); return(label); } else if (string.Compare(type, "Document", true) == 0 || string.Compare(type, "Doc", true) == 0) { UIDocument document = new UIDocument(); document.Name = name; if (args.ContainsKey("0")) { document.Text = args["0"]; } window.AddChild(document); Process(document, layer); return(document); } else if (string.Compare(type, "Edit", true) == 0 || string.Compare(type, "EditText", true) == 0 || string.Compare(type, "EditBox", true) == 0) { UIEditText editText = new UIEditText(); editText.Name = name; if (args.ContainsKey("0")) { editText.Text = args["0"]; } window.AddChild(editText); Process(editText, layer); return(editText); } else if (string.Compare(type, "9Patch", true) == 0 || string.Compare(type, "NinePatch", true) == 0 || string.Compare(type, "9P", true) == 0 || string.Compare(type, "9P*", true) == 0) { UIWindow childWindow = new UIWindow(); childWindow.Name = name; window.AddChild(childWindow); Process((UIPanel)childWindow, layer); int bw = layer.Bitmap.Width; int bh = layer.Bitmap.Height; int leftBorder = 0; int topBorder = 0; int rightBorder = 0; int bottomBorder = 0; switch (args.Count) { case 0: leftBorder = bw / 10; topBorder = bh / 10; rightBorder = leftBorder; bottomBorder = topBorder; break; case 1: leftBorder = int.Parse(args["0"] ?? "0"); topBorder = leftBorder; rightBorder = leftBorder; bottomBorder = leftBorder; break; default: leftBorder = int.Parse(args["0"] ?? "0"); topBorder = int.Parse(args["1"] ?? "0"); rightBorder = int.Parse(args["2"] ?? "0"); bottomBorder = int.Parse(args["3"] ?? "0"); break; } int horizontalBorder = leftBorder + rightBorder; int verticalBorder = topBorder + bottomBorder; Bitmap leftTopImage = layer.Bitmap.Clip(new Rectangle(0, 0, leftBorder, topBorder)); Bitmap rightTopImage = layer.Bitmap.Clip(new Rectangle(bw - rightBorder, 0, rightBorder, topBorder)); Bitmap leftBottomImage = layer.Bitmap.Clip(new Rectangle(0, bh - bottomBorder, leftBorder, bottomBorder)); Bitmap rightBottomImage = layer.Bitmap.Clip(new Rectangle(bw - rightBorder, bh - bottomBorder, rightBorder, bottomBorder)); Bitmap leftImage = layer.Bitmap.Clip(new Rectangle(0, topBorder, leftBorder, bh - verticalBorder)); Bitmap topImage = layer.Bitmap.Clip(new Rectangle(leftBorder, 0, bw - horizontalBorder, topBorder)); Bitmap rightImage = layer.Bitmap.Clip(new Rectangle(bw - rightBorder, topBorder, rightBorder, bh - verticalBorder)); Bitmap bottomImage = layer.Bitmap.Clip(new Rectangle(leftBorder, bh - bottomBorder, bw - horizontalBorder, bottomBorder)); Bitmap centerImage = layer.Bitmap.Clip(new Rectangle(leftBorder, topBorder, Math.Max(bw - horizontalBorder, 1), Math.Max(bh - verticalBorder, 1))); var images = new List <UIImage>(9); images.Add(CreateNinePatchPart(leftTopImage, UIAnchorPoint.LeftTop, new Vector2(0.0f, 0.0f), 0, 0, leftBorder, topBorder, UISizeMode.Absolute, UISizeMode.Absolute)); images.Add(CreateNinePatchPart(rightTopImage, UIAnchorPoint.RightTop, new Vector2(1.0f, 0.0f), 0, 0, rightBorder, topBorder, UISizeMode.Absolute, UISizeMode.Absolute)); images.Add(CreateNinePatchPart(leftBottomImage, UIAnchorPoint.LeftBottom, new Vector2(0.0f, 1.0f), 0, 0, leftBorder, bottomBorder, UISizeMode.Absolute, UISizeMode.Absolute)); images.Add(CreateNinePatchPart(rightBottomImage, UIAnchorPoint.RightBottom, new Vector2(1.0f, 1.0f), 0, 0, rightBorder, bottomBorder, UISizeMode.Absolute, UISizeMode.Absolute)); images.Add(CreateNinePatchPart(leftImage, UIAnchorPoint.LeftTop, new Vector2(0.0f, 0.0f), 0, topBorder, leftBorder, -verticalBorder, UISizeMode.Absolute, UISizeMode.Adjustive)); // left images.Add(CreateNinePatchPart(topImage, UIAnchorPoint.LeftTop, new Vector2(0.0f, 0.0f), leftBorder, 0, -horizontalBorder, topBorder, UISizeMode.Adjustive, UISizeMode.Absolute)); // top images.Add(CreateNinePatchPart(rightImage, UIAnchorPoint.RightTop, new Vector2(1.0f, 0.0f), 0, topBorder, rightBorder, -verticalBorder, UISizeMode.Absolute, UISizeMode.Adjustive)); // right images.Add(CreateNinePatchPart(bottomImage, UIAnchorPoint.LeftBottom, new Vector2(0.0f, 1.0f), leftBorder, 0, -horizontalBorder, bottomBorder, UISizeMode.Adjustive, UISizeMode.Absolute)); // bototm bool forceSingleColor = false; if (string.Compare(type, "9P*", true) == 0) { forceSingleColor = true; } images.Add(CreateNinePatchPart( centerImage, UIAnchorPoint.LeftTop, new Vector2(0.0f, 0.0f), leftBorder, topBorder, -horizontalBorder, -verticalBorder, UISizeMode.Adjustive, UISizeMode.Adjustive, forceSingleColor: forceSingleColor)); foreach (var item in images) { if (item != null) { childWindow.AddChild(item); } } return(childWindow); } else { UIImage image = new UIImage(); image.Name = name; window.AddChild(image); Process(image, layer, string.Compare(type, "MaskImage", true) == 0 || string.Compare(type, "MaskSprite", true) == 0); return(image); } } else { if (string.Compare(type, "Button", true) == 0) { UIButton button = new UIButton(); button.Name = name; window.AddChild(button); Process(button, layer); return(button); } else if (string.Compare(type, "CheckBox", true) == 0) { UICheckBox button = new UICheckBox(); button.Name = name; window.AddChild(button); Process(button, layer); return(button); } else if (string.Compare(type, "Radio", true) == 0) { UIRadioButton button = new UIRadioButton(); button.Name = name; window.AddChild(button); Process(button, layer); return(button); } else if (string.Compare(type, "Scrollable", true) == 0) { UIScrollablePanel panel = new UIScrollablePanel(); panel.Name = name; window.AddChild(panel); Process(panel, layer); return(panel); } else { bool hasNormal = layer.FindSubLayer("#Normal", false) != null; bool hasPushed = layer.FindSubLayer("#Pushed", false) != null; bool hasHovering = layer.FindSubLayer("#Hovering", false) != null; bool hasCheckedNormal = layer.FindSubLayer("#CheckedNormal", false) != null; bool hasCheckedPushed = layer.FindSubLayer("#CheckedPushed", false) != null; bool hasCheckedHovering = layer.FindSubLayer("#CheckedHovering", false) != null; if (hasNormal && hasPushed && !hasCheckedNormal && !hasCheckedPushed) { UIButton button = new UIButton(); button.Name = name; window.AddChild(button); Process(button, layer); return(button); } else if (hasNormal && hasCheckedNormal) { UICheckBox button = new UICheckBox(); button.Name = name; window.AddChild(button); Process(button, layer); return(button); } else { UIWindow childWindow = new UIWindow(); childWindow.Name = name; window.AddChild(childWindow); Process(childWindow, layer); return(childWindow); } } } }