mirror of
https://git.femboyfinancial.jp/james/lipsync.git
synced 2024-11-26 04:12:00 -08:00
215 lines
7.9 KiB
C#
215 lines
7.9 KiB
C#
/*
|
|
* Settings.cs
|
|
* Copyright (c) 2007-2009 kbinani
|
|
*
|
|
* This file is part of LipSync.
|
|
*
|
|
* LipSync is free software; you can redistribute it and/or
|
|
* modify it under the terms of the BSD License.
|
|
*
|
|
* LipSync is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Runtime.Serialization;
|
|
|
|
using Boare.Lib.AppUtil;
|
|
using Boare.Lib.Vsq;
|
|
|
|
namespace LipSync {
|
|
|
|
[Serializable]
|
|
public class Settings : IDisposable/*, ICloneable*/ {
|
|
const double tpq_sec = 480000000.0;
|
|
|
|
public TimeTableGroup m_group_vsq; //ok
|
|
public List<TimeTableGroup> m_groups_character; //ok
|
|
public TimeTableGroup m_group_another; //ok
|
|
public TimeTableGroup m_group_plugin; //ok
|
|
[Obsolete]
|
|
//public float fps = 30.0f; //ok
|
|
float fps = 30f;
|
|
public int m_screenWidth; //ok
|
|
public int m_screenHeight; //ok
|
|
public float m_totalSec = 0.0f; //ok
|
|
public Size m_movieSize; // = new Size( 512, 384 ); //ok
|
|
public List<PluginConfig> m_plugins_config; //ok
|
|
public string m_audioFile = ""; //ok
|
|
[OptionalField]
|
|
public Color CANVAS_BACKGROUND; // = Color.White; //ok
|
|
[OptionalField, Obsolete]
|
|
public List<Telop> m_telop; //ok
|
|
[OptionalField]
|
|
public float REPEAT_START; //ok
|
|
[OptionalField]
|
|
public float REPEAT_END; //ok
|
|
[OptionalField, Obsolete]//[OptionalField]
|
|
public SortedDictionary<int, Telop> m_telop_ex = new SortedDictionary<int, Telop>(); //OK
|
|
[OptionalField, Obsolete]
|
|
public List<ScoreUnit> m_score_unit;
|
|
[OptionalField, Obsolete]
|
|
public List<TimeSig> m_timesig;
|
|
[OptionalField]
|
|
public List<TimeSigTableEntry> m_timesig_ex;
|
|
[OptionalField]
|
|
public List<TempoTableEntry> m_tempo;
|
|
[OptionalField]
|
|
public int m_base_tempo;
|
|
[OptionalField]
|
|
public uint m_dwRate = 30;
|
|
[OptionalField]
|
|
public uint m_dwScale = 1;
|
|
[NonSerialized]
|
|
private float m_fps_buffer = 30f;
|
|
[NonSerialized]
|
|
public PluginInfo[] m_plugins;
|
|
[OptionalField]
|
|
public List<Telop> m_telop_ex2 = new List<Telop>();
|
|
|
|
/// <summary>
|
|
/// 描画順序で格納された描画物のリスト
|
|
/// </summary>
|
|
[NonSerialized]
|
|
public List<ZorderItem> m_zorder = new List<ZorderItem>();
|
|
[NonSerialized]
|
|
public List<Command> m_commands = new List<Command>();
|
|
[NonSerialized]
|
|
public int m_command_position = -1;
|
|
|
|
public static string _( string s ) {
|
|
return Messaging.GetMessage( s );
|
|
}
|
|
|
|
public Settings() {
|
|
m_zorder = new List<ZorderItem>();
|
|
m_commands = new List<Command>();
|
|
m_command_position = -1;
|
|
m_group_vsq = new TimeTableGroup( _( "VSQ Tracks" ), -1, null );
|
|
m_groups_character = new List<TimeTableGroup>();
|
|
m_group_another = new TimeTableGroup( _( "Another images" ), -1, null );
|
|
m_group_plugin = new TimeTableGroup( _( "Plugin" ), -1, null );
|
|
m_telop_ex2 = new List<Telop>();
|
|
m_screenWidth = 512;
|
|
m_screenHeight = 384;
|
|
m_totalSec = 0.0f;
|
|
m_movieSize = new Size( 512, 384 );
|
|
m_plugins_config = new List<PluginConfig>();
|
|
m_audioFile = "";
|
|
CANVAS_BACKGROUND = Color.White;
|
|
//m_telop = new List<Telop>();
|
|
//m_telop_ex = new SortedDictionary<int, Telop>();
|
|
m_telop_ex2 = new List<Telop>();
|
|
m_score_unit = new List<ScoreUnit>();
|
|
m_score_unit.Add( new ScoreUnit() );
|
|
m_timesig_ex = new List<TimeSigTableEntry>();
|
|
m_tempo = new List<TempoTableEntry>();
|
|
m_base_tempo = 480000;
|
|
m_dwRate = 30;
|
|
m_dwScale = 1;
|
|
m_fps_buffer = (float)m_dwRate / (float)m_dwScale;
|
|
}
|
|
|
|
[OnSerializing]
|
|
private void onSerializing( StreamingContext sc ) {
|
|
m_telop = null;
|
|
m_telop_ex = null;
|
|
}
|
|
|
|
[OnDeserializing]
|
|
private void onDeserializing( StreamingContext sc ) {
|
|
CANVAS_BACKGROUND = Color.White;
|
|
m_telop_ex2 = new List<Telop>();
|
|
REPEAT_START = 0f;
|
|
REPEAT_END = -1f;
|
|
m_score_unit = new List<ScoreUnit>();
|
|
m_dwRate = 0;
|
|
m_dwScale = 0;
|
|
}
|
|
|
|
|
|
[OnDeserialized]
|
|
void onDeserialized( StreamingContext sc ) {
|
|
#if DEBUG
|
|
Console.WriteLine( "Settings.onDeserialized(StreamingContext)" );
|
|
#endif
|
|
m_score_unit = new List<ScoreUnit>();
|
|
m_score_unit.Add( new ScoreUnit() );
|
|
if ( m_telop != null ) {
|
|
if ( m_telop_ex2 != null ) {
|
|
m_telop_ex2.Clear();
|
|
m_telop_ex2 = null;
|
|
}
|
|
m_telop_ex2 = new List<Telop>();
|
|
for ( int i = 0; i < m_telop.Count; i++ ) {
|
|
m_telop_ex2.Add( (Telop)m_telop[i].Clone( i ) );
|
|
}
|
|
m_telop.Clear();
|
|
m_telop = null;
|
|
}
|
|
if ( m_telop_ex != null ) {
|
|
if ( m_telop_ex2 != null ) {
|
|
m_telop_ex2.Clear();
|
|
m_telop_ex2 = null;
|
|
}
|
|
m_telop_ex2 = new List<Telop>();
|
|
int index = -1;
|
|
foreach ( KeyValuePair<int, Telop> telop in m_telop_ex ) {
|
|
index++;
|
|
m_telop_ex2.Add( (Telop)telop.Value.Clone( index ) );
|
|
}
|
|
m_telop_ex.Clear();
|
|
m_telop_ex = null;
|
|
}
|
|
m_commands = new List<Command>();
|
|
m_command_position = -1;
|
|
m_zorder = new List<ZorderItem>();
|
|
if ( m_timesig_ex == null ) {
|
|
m_timesig_ex = new List<TimeSigTableEntry>();
|
|
}
|
|
if ( m_tempo == null ) {
|
|
m_tempo = new List<TempoTableEntry>();
|
|
}
|
|
if ( m_dwRate == 0 ) {
|
|
m_dwScale = 1000;
|
|
m_dwRate = (uint)(fps * m_dwScale);
|
|
}
|
|
m_fps_buffer = (float)m_dwRate / (float)m_dwScale;
|
|
#if DEBUG
|
|
Common.DebugWriteLine( "----------" );
|
|
Common.DebugWriteLine( "Settings.onDeserialized(StreamingContext)" );
|
|
for ( int i = 0; i < m_telop_ex2.Count; i++ ) {
|
|
Common.DebugWriteLine( "i=" + i + "; ID=" + m_telop_ex2[i].ID + "; Text=" + m_telop_ex2[i].Text );
|
|
}
|
|
Common.DebugWriteLine( "----------" );
|
|
#endif
|
|
}
|
|
|
|
public void Dispose() {
|
|
if ( m_group_vsq != null ) {
|
|
m_group_vsq.Dispose();
|
|
m_group_vsq = null;
|
|
}
|
|
if ( m_groups_character != null ) {
|
|
m_groups_character.Clear();
|
|
m_groups_character = null;
|
|
}
|
|
if ( m_group_another != null ) {
|
|
m_group_another.Dispose();
|
|
m_group_another = null;
|
|
}
|
|
if ( m_group_plugin != null ) {
|
|
m_group_plugin.Dispose();
|
|
m_group_plugin = null;
|
|
}
|
|
if ( m_plugins_config != null ) {
|
|
m_plugins_config.Clear();
|
|
m_plugins_config = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|