示例#1
0
    /*
     * <control controlID="3" controlTypeID="com.balsamiq.mockups::CheckBox" x="143" y="194" w="121" h="22" measuredW="78" measuredH="22" zOrder="4" locked="false" isInGroup="-1"/>
     * <control controlID="5" controlTypeID="com.balsamiq.mockups::Image" x="738" y="216" w="230" h="406" measuredW="77" measuredH="79" zOrder="1" locked="false" isInGroup="-1">
     * <controlProperties>
     * <text>asdasd</text>
     * </controlProperties>
     * </control>
     * <control controlID="6" controlTypeID="com.balsamiq.mockups::RadioButton" x="140" y="267" w="139" h="22" measuredW="101" measuredH="22" zOrder="5" locked="false" isInGroup="-1">
     * <controlProperties>
     * <text>Radio%20Button%201</text>
     * </controlProperties>
     * </control>
     * <control controlID="7" controlTypeID="com.balsamiq.mockups::RadioButton" x="140" y="289" w="139" h="22" measuredW="104" measuredH="22" zOrder="6" locked="false" isInGroup="-1">
     * <controlProperties>
     * <text>Radio%20Button%202</text>
     * </controlProperties>
     * </control>
     * <control controlID="10" controlTypeID="__group__" x="143" y="355" w="139" h="42" measuredW="139" measuredH="42" zOrder="7" locked="false" isInGroup="-1">
     * <controlProperties>
     * <controlName>OtherSelection</controlName>
     * </controlProperties>
     * <groupChildrenDescriptors>
     * <control controlID="0" controlTypeID="com.balsamiq.mockups::RadioButton" x="0" y="0" w="139" h="22" measuredW="104" measuredH="22" zOrder="0" locked="false" isInGroup="10">
     * <controlProperties>
     *  <text>Radio%20Button%203</text>
     * </controlProperties>
     * </control>
     * <control controlID="1" controlTypeID="com.balsamiq.mockups::RadioButton" x="0" y="20" w="139" h="22" measuredW="105" measuredH="22" zOrder="1" locked="false" isInGroup="10">
     * <controlProperties>
     *  <text>Radio%20Button%204</text>
     * </controlProperties>
     * </control>
     * </groupChildrenDescriptors>
     * </control>
     * </controls>
     * </mockup>	 * */

    protected string dumpElements(MagicUIManager.AspectRatio ratio)
    {
        StringBuilder result = new StringBuilder();

        int count = 0;

        if (_controls.ContainsKey(ratio))
        {
            count = _controls[ratio].Count;
        }

        result.Append("Container " + ratio.ToString() + ": {");
        result.Append(string.Format("\"{0}\" = \"{1}\"", "ClientCenter", _containers[ratio].ClientCenter));
        result.Append(string.Format(", \"{0}\" = \"{1}\"", "ClientSize", _containers[ratio].ClientSize));
        result.Append(string.Format(", \"{0}\" = \"{1}\"", "Order", _containers[ratio].Order));
        result.Append(string.Format(", \"{0}\" = \"{1}\"", "Disproportional", _containers[ratio].Disproportional));
        result.AppendLine("} with " + count.ToString() + " controls:");


        if (count > 0)
        {
            foreach (Control control in _controls[ratio])
            {
                result.Append(string.Format("\"{0}\" = \"{1}\"", "RelativeCenter", control.RelativeCenter));
                result.Append(string.Format(", \"{0}\" = \"{1}\"", "RelativeSize", control.RelativeSize));
                foreach (string key in control.Attributes.Keys)
                {
                    result.Append(string.Format(", \"{0}\" = \"{1}\"", key, control.Attributes[key]));
                }
                result.AppendLine("");
            }
        }

        return(result.ToString());
    }
示例#2
0
    protected void distributeControl(Control control)
    {
        control.RelativeCenter = control.UpperLeft + (control.RelativeSize * 0.5f);

        MagicUIManager.AspectRatio closest = assignToContainer(control.RelativeCenter, control.Order);
        if (closest != MagicUIManager.AspectRatio.Unknown)
        {
            List <Control> dest = null;
            if (_controls.ContainsKey(closest))
            {
                dest = _controls[closest];
            }
            else
            {
                dest = new List <Control>();
                _controls.Add(closest, dest);
            }

            dest.Add(control);
        }

        control.RelativeCenter   -= _containers[closest].ClientCenter;
        control.RelativeCenter.x /= _containers[closest].ClientSize.x;
        control.RelativeCenter.y /= _containers[closest].ClientSize.y;
        control.RelativeSize.x   /= _containers[closest].ClientSize.x;
        control.RelativeSize.y   /= _containers[closest].ClientSize.y;

        control.RelativeCenter.y = -control.RelativeCenter.y;
    }
示例#3
0
    public Control[] GetControls(MagicUIManager.AspectRatio aspect)
    {
        // TODO fallback if aspect ratio isn't present?
        if (!_controls.ContainsKey(aspect))
        {
            return(new Control[0]);
        }

        return(_controls[aspect].ToArray());
    }
示例#4
0
    protected MagicUIManager.AspectRatio assignToContainer(Vector2 pos, int order)
    {
        float mindist = float.MaxValue;

        MagicUIManager.AspectRatio closest = MagicUIManager.AspectRatio.Unknown;

        foreach (Container container in _containers.Values)
        {
            if (container.Order > order)
            {
                continue;
            }

            float dist = (pos - container.ClientCenter).magnitude;
            if (dist < mindist)
            {
                mindist = dist;
                closest = container.Aspect;
            }
        }

        return(closest);
    }