/// <summary> /// コンストラクタ。 /// </summary> /// <param name="name"> /// プリセット名。 null を指定すると既定値になる。 /// </param> /// <param name="value"> /// プリセットデータ。 null を指定すると既定値になる。 /// </param> public MorphPreset(string name, MorphInfoSet value) { if (name != null && !IsValidName(name)) { throw new ArgumentException("Invalid preset name.", nameof(name)); } this.Name = name ?? DefaultName; this.Value = value ?? new MorphInfoSet(); }
/// <summary> /// 口形状タイムラインセットとモーフ情報セットから /// モーフ別タイムラインテーブルを作成する。 /// </summary> /// <param name="tlSet">口形状タイムラインセット。</param> /// <param name="morphSet">モーフ情報セット。</param> /// <param name="morphEtoAI"> /// "え" から "あ","い" へのモーフ変更を行うならば true 。 /// </param> /// <returns>モーフ別タイムラインテーブル。</returns> public MorphTimelineTable Make( TimelineSet tlSet, MorphInfoSet morphSet, bool morphEtoAI) { var table = new MorphTimelineTable(); foreach (var mt in tlSet) { var timeline = mt.Value; var morphInfo = morphSet[mt.Key]; timeline.KeyAreas.ForEach( area => { foreach (var mw in morphInfo.MorphWeights) { AddMorphKeyArea(table, area, mw, morphEtoAI); } }); } return table; }
/// <summary> /// モーフ別タイムラインテーブルを作成する。 /// </summary> /// <returns>モーフ別タイムラインテーブル。</returns> private static MorphTimelineTable MakeMorphTimelineTableCore( IEnumerable<LipSyncUnit> units, decimal linkLengthPercent, float longSoundLastWeight, bool edgeClosed, MorphInfoSet morphSet, bool morphEtoAI) { // 口形状別タイムラインセット作成 TimelineSet tlSet = null; { var maker = new TimelineSetMaker(); maker.LinkLengthPercent = linkLengthPercent; maker.LongSoundLastWeight = longSoundLastWeight; maker.IsEdgeClosed = edgeClosed; tlSet = maker.Make(units); } // モーフ別タイムラインテーブル作成 MorphTimelineTable dest = null; { var maker = new MorphTimelineTableMaker(); dest = maker.Make(tlSet, morphSet, morphEtoAI); } return dest; }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="src">編集対象の MorphInfoSet 。</param> public MorphInfoSetViewModel(MorphInfoSet src) { if (src == null) { throw new ArgumentNullException(nameof(src)); } this.Source = src; this.Items = new ReadOnlyObservableCollection<Item>( new ObservableCollection<Item> { new Item(LipId.A, src.A), new Item(LipId.I, src.I), new Item(LipId.U, src.U), new Item(LipId.E, src.E), new Item(LipId.O, src.O), new Item(LipId.Closed, src.Closed), }); }