예제 #1
0
        /// <summary>
        /// タブページの内容からプリセットを作成する。
        /// </summary>
        /// <returns>プリセット。プリセット名が不正な場合は null 。</returns>
        private Preset MakePresetFromTabPages()
        {
            // プリセット名を取得
            var name = textPresetName.Text;
            if (!Preset.IsValidName(name))
            {
                return null;
            }

            // モーフ情報テーブルを作成
            var infoTable = new Dictionary<LipId, MorphInfo>();
            foreach (var idCtrl in this.MorphCtrlTable)
            {
                // タブページからモーフウェイトデータリストを作成
                var weights = new List<MorphWeightData>();
                foreach (var ctrl in idCtrl.Value)
                {
                    if (!string.IsNullOrEmpty(ctrl.NameTextBox.Text))
                    {
                        weights.Add(
                            new MorphWeightData
                            {
                                MorphName = ctrl.NameTextBox.Text,
                                Weight = (float)ctrl.WeightUpDown.Value,
                            });
                    }
                }

                // モーフ情報を追加
                infoTable.Add(idCtrl.Key, new MorphInfo(weights));
            }

            // プリセットを作成
            var preset = new Preset(name, new LipMorphSet(infoTable));

            return preset;
        }
예제 #2
0
        /// <summary>
        /// 指定したプリセットでタブページを更新する。
        /// </summary>
        /// <param name="preset">プリセット。</param>
        private void UpdateTabPages(Preset preset)
        {
            try
            {
                tabLip.SuspendLayout();

                // プリセット名設定
                textPresetName.Text = preset.Name;

                // タブページ更新
                foreach (var idCtrl in this.MorphCtrlTable)
                {
                    var weights = preset.Value[idCtrl.Key].MorphWeights;
                    var ctrls =
                        idCtrl.Value.Select((ctrl, index) => new { ctrl, index });
                    foreach (var c in ctrls)
                    {
                        if (c.index < weights.Count)
                        {
                            // モーフ名とウェイト値を設定
                            var w = weights[c.index];
                            c.ctrl.NameTextBox.Text = w.MorphName;
                            c.ctrl.WeightUpDown.Value = (decimal)w.Weight;
                        }
                        else
                        {
                            // データが無いので既定値にしておく
                            c.ctrl.NameTextBox.Text = string.Empty;
                            c.ctrl.WeightUpDown.Value = 1;
                        }
                    }
                }
            }
            finally
            {
                tabLip.ResumeLayout(true);
            }
        }