public static void Transition(Window window, List <GSWinVar> src) { // transitions always affect rect or vec4 vars if (src.Count >= 4) { WinRectangle rect = null; var vec4 = (WinVec4)src[0].var; WinFloat val = null; if (vec4 == null) { rect = (WinRectangle)src[0].var; if (rect == null) { val = (WinFloat)src[0].var; } } var from = (WinVec4)src[1].var; var to = (WinVec4)src[2].var; var timeStr = (WinStr)src[3].var; if (!((vec4 != null || rect != null || val != null) && from != null && to != null && timeStr != null)) { common.Warning($"Bad transition in gui {window.Gui.SourceFile} in window {window.Name}\n"); return; } var time = intX.Parse(timeStr); float ac = 0f, dc = 0f; if (src.Count > 4) { var acv = (WinStr)src[4].var; var dcv = (WinStr)src[5].var; Debug.Assert(acv != null && dcv != null); ac = floatX.Parse(acv); dc = floatX.Parse(dcv); } if (vec4 != null) { vec4.Eval = false; window.AddTransition(vec4, from, to, time, ac, dc); } else if (val != null) { val.Eval = false; window.AddTransition(val, from, to, time, ac, dc); } else { rect.Eval = false; window.AddTransition(rect, from, to, time, ac, dc); } window.StartTransition(); } }
public static extern bool GetWindowSizeForClientSize(ref WinRectangle rectangle, WindowStyle style, int menu, uint extendedStyle);
public static extern bool GetWindowArea(IntPtr window, out WinRectangle area);
public SimpleWindow(Window win) { gui = win.Gui; dc = win.dc; drawRect = win.drawRect; clientRect = win.clientRect; textRect = win.textRect; origin = win.origin; fontNum = win.fontNum; name = win.name; matScalex = win.matScalex; matScaley = win.matScaley; borderSize = win.borderSize; textAlign = win.textAlign; textAlignx = win.textAlignx; textAligny = win.textAligny; background = win.background; flags = (int)win.flags; textShadow = win.textShadow; visible = win.visible; text = win.text; rect = win.rect; backColor = win.backColor; matColor = win.matColor; foreColor = win.foreColor; borderColor = win.borderColor; textScale = win.textScale; rotate = win.rotate; shear = win.shear; backGroundName = win.backGroundName; if (backGroundName.Length != 0) { background = declManager.FindMaterial(backGroundName); background.Sort = (float)SS.GUI; background.SetImageClassifications(1); // just for resource tracking } backGroundName.SetMaterialPtr(x => background = x); mParent = win.Parent; hideCursor = win.hideCursor; var parent = win.Parent; if (parent != null) { if (text.NeedsUpdate) { parent.AddUpdateVar(text); } if (visible.NeedsUpdate) { parent.AddUpdateVar(visible); } if (rect.NeedsUpdate) { parent.AddUpdateVar(rect); } if (backColor.NeedsUpdate) { parent.AddUpdateVar(backColor); } if (matColor.NeedsUpdate) { parent.AddUpdateVar(matColor); } if (foreColor.NeedsUpdate) { parent.AddUpdateVar(foreColor); } if (borderColor.NeedsUpdate) { parent.AddUpdateVar(borderColor); } if (textScale.NeedsUpdate) { parent.AddUpdateVar(textScale); } if (rotate.NeedsUpdate) { parent.AddUpdateVar(rotate); } if (shear.NeedsUpdate) { parent.AddUpdateVar(shear); } if (backGroundName.NeedsUpdate) { parent.AddUpdateVar(backGroundName); } } }