Ejemplo n.º 1
0
        public static TjsArray ScaleButton(TjsDict dict, string name, double scaleX, double scaleY)
        {
            TjsValue v = null;

            if (dict.val.TryGetValue(name, out v))
            {
                // 按钮上多记录了一个是否显示: x, y, shown
                TjsArray xys = v as TjsArray;
                if (xys != null && xys.val.Count == 3)
                {
                    TjsNumber x = xys.val[0] as TjsNumber;
                    TjsNumber y = xys.val[1] as TjsNumber;
                    TjsNumber s = xys.val[2] as TjsNumber;

                    if (x != null && y != null && s != null)
                    {
                        TjsArray xysnew = CreatePos((int)(x.val * scaleX), (int)(y.val * scaleY));
                        xysnew.val.Add(new TjsNumber(s.val));
                        dict.val[name] = xysnew;
                        return(xysnew);
                    }
                    else
                    {
                        Debug.Assert(false, "invalid element in button struct");
                    }
                }
                else
                {
                    Debug.Assert(false, "invalid button struct");
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        // 修改字典文件
        static void ModifyDict(TjsDict dict, int sw, int sh, int dw, int dh)
        {
            double scaleX = (double)dw / sw;
            double scaleY = (double)dh / sh;

            TjsHelper.ScaleInteger(dict, "left", scaleX);
            TjsHelper.ScaleInteger(dict, "x", scaleX);
            TjsHelper.ScaleInteger(dict, "marginr", scaleX);
            TjsHelper.ScaleInteger(dict, "marginl", scaleX);

            TjsHelper.ScaleInteger(dict, "top", scaleY);
            TjsHelper.ScaleInteger(dict, "y", scaleY);
            TjsHelper.ScaleInteger(dict, "margint", scaleY);
            TjsHelper.ScaleInteger(dict, "marginb", scaleY);

            // 修改locate数组
            TjsHelper.ScalePosArray(dict, "locate", scaleX, scaleY);

            foreach (KeyValuePair <string, TjsValue> kv in dict.val)
            {
                TjsDict inner = kv.Value as TjsDict;
                if (inner != null)
                {
                    ModifyDict(inner, sw, sh, dw, dh);
                }
            }
        }
Ejemplo n.º 3
0
        public static TjsArray ScalePosArray(TjsDict dict, string name, double scaleX, double scaleY)
        {
            TjsValue v = null;

            if (dict.val.TryGetValue(name, out v))
            {
                // 检查是不是数组
                TjsArray arr = v as TjsArray;
                if (arr != null)
                {
                    // 从中读取两个元素的坐标数组
                    List <TjsValue> arraynew = new List <TjsValue>();
                    foreach (TjsValue pos in arr.val)
                    {
                        Point p = Point.Empty;
                        if (TryGetPos(pos, out p))
                        {
                            // 按比例缩放
                            TjsArray posnew = CreatePos((int)(p.X * scaleX), (int)(p.Y * scaleY));
                            arraynew.Add(posnew);
                        }
                        else
                        {
                            Debug.Assert(false, "invalid struct in pos array");
                        }
                    }

                    dict.val[name] = new TjsArray(arraynew);
                    return(arr);
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
        // 修改setting.tjs
        static void ModifySetting(string dataPath, string title, int sw, int sh, int dh, int dw)
        {
            // 更新setting
            string settingFile = Path.Combine(dataPath, WizardConfig.UI_SETTING);

            // 临时创建一个属性对象用于读取setting
            ProjectProperty info = new ProjectProperty();

            info.LoadSetting(settingFile);
            TjsDict setting = info.setting;

            if (setting != null)
            {
                setting.SetString("title", title);
                setting.SetNumber("width", dw);
                setting.SetNumber("height", dh);

                // 修正缩略图宽度
                int tw = info.thumbnailwidth;
                if (tw > 0)
                {
                    tw = tw * dw / sw;
                    setting.SetValue("savedata/thumbnailwidth", new TjsString(tw.ToString()));
                }

                setting.Save(settingFile, Encoding.Unicode);
            }
        }
Ejemplo n.º 5
0
        // 修改UI布局文件
        static void ModifyLayout(string dataPath, int sw, int sh, int dh, int dw)
        {
            // 更新layout
            string[] layouts = Directory.GetFiles(dataPath, WizardConfig.UI_LAYOUT);
            foreach (string layout in layouts)
            {
                TjsDict setting = TjsValue.Load(layout) as TjsDict;

                if (setting != null)
                {
                    ModifyDict(setting, sw, sh, dw, dh);

                    // 对这个文件里的按钮作特殊处理
                    if (layout.ToLower().EndsWith("uislpos.tjs"))
                    {
                        double scaleX = (double)dw / sw;
                        double scaleY = (double)dh / sh;
                        TjsHelper.ScaleButton(setting, "back", scaleX, scaleY);
                        TjsHelper.ScaleButton(setting, "up", scaleX, scaleY);
                        TjsHelper.ScaleButton(setting, "down", scaleX, scaleY);
                    }
                }

                setting.Save(layout, Encoding.Unicode);
            }
        }
Ejemplo n.º 6
0
        public void LoadSetting(string file)
        {
            setting = null;

            if (File.Exists(file))
            {
                setting = TjsValue.Load(file) as TjsDict;
            }
        }
Ejemplo n.º 7
0
        public static double ScaleInteger(TjsDict dict, string name, double scale)
        {
            TjsValue val = dict.GetValue(name);
            double   num = (val != null) ? val.ToDouble() : double.NaN;

            if (!double.IsNaN(num))
            {
                num = num * scale;
                dict.SetNumber(name, Math.Floor(num));
                return(num);
            }

            string str = dict.GetString(name);

            if (double.TryParse(str, out num))
            {
                num = num * scale;
                dict.SetString(name, Math.Floor(num).ToString());
                return(num);
            }

            return(double.NaN);
        }