mirror of
https://git.femboyfinancial.jp/james/lipsync.git
synced 2025-02-18 00:19:02 -08:00
198 lines
6.4 KiB
C#
198 lines
6.4 KiB
C#
/*
|
|
* Winker.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.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
using Boare.Lib.AppUtil;
|
|
|
|
namespace LipSync {
|
|
|
|
public partial class Winker : Form, IMultiLanguageControl {
|
|
private string m_closedeye;
|
|
private string m_in_between;
|
|
public bool Randomize;
|
|
private float m_winkInterval;
|
|
private int m_close_frames = 3;
|
|
private float m_forced_begin;
|
|
private float m_forced_end;
|
|
private float m_max_end;
|
|
|
|
public Winker( string[] titles, float total_sec ) {
|
|
InitializeComponent();
|
|
ApplyLanguage();
|
|
ApplyFont( AppManager.Config.Font.GetFont() );
|
|
comboBox1.Items.Clear();
|
|
comboBox2.Items.Clear();
|
|
for ( int i = 0; i < titles.Length; i++ ) {
|
|
comboBox1.Items.Add( titles[i] );
|
|
comboBox2.Items.Add( titles[i] );
|
|
}
|
|
m_closedeye = "";
|
|
m_in_between = "";
|
|
m_forced_begin = 0f;
|
|
m_forced_end = total_sec;
|
|
m_max_end = total_sec;
|
|
txtForceBegin.Text = m_forced_begin.ToString();
|
|
txtForceEnd.Text = m_forced_end.ToString();
|
|
Randomize = false;
|
|
}
|
|
|
|
public void ApplyFont( Font font ) {
|
|
this.Font = font;
|
|
foreach ( Control c in this.Controls ) {
|
|
Boare.Lib.AppUtil.Misc.ApplyFontRecurse( c, font );
|
|
}
|
|
}
|
|
|
|
public void ApplyLanguage() {
|
|
this.btnCancel.Text = _( "Cancel" );
|
|
this.btnOK.Text = _( "OK" );
|
|
this.label1.Text = _( "Wink interval (sec)" );
|
|
this.checkBox1.Text = _( "Randomize" );
|
|
this.label2.Text = _( "Closed Eye" );
|
|
this.label3.Text = _( "In-between Image" );
|
|
this.label4.Text = _( "Eye-closing frames" );
|
|
this.Text = _( "Generate wink" );
|
|
this.groupBox1.Text = _( "Set image" );
|
|
this.checkForceBegin.Text = _( "Limit start time" );
|
|
this.checkForceEnd.Text = _( "Limit end time" );
|
|
}
|
|
|
|
private static string _( string s ) {
|
|
return Messaging.GetMessage( s );
|
|
}
|
|
|
|
public float WinkInterval {
|
|
get {
|
|
return m_winkInterval;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 閉じ目用画像のタイトル
|
|
/// </summary>
|
|
public string ClosedEye {
|
|
get {
|
|
return m_closedeye;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 閉じ目の中割り用画像のタイトル
|
|
/// </summary>
|
|
public string InBetween {
|
|
get {
|
|
return m_in_between;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 目が閉じて表示されるフレーム数
|
|
/// </summary>
|
|
public int CloseFrames {
|
|
get {
|
|
return m_close_frames;
|
|
}
|
|
}
|
|
|
|
private void btnOK_Click( object sender, EventArgs e ) {
|
|
try {
|
|
m_winkInterval = float.Parse( textBox1.Text );
|
|
if ( checkForceBegin.Checked ) {
|
|
m_forced_begin = float.Parse( txtForceBegin.Text );
|
|
}
|
|
if ( checkForceEnd.Checked ) {
|
|
m_forced_end = float.Parse( txtForceEnd.Text );
|
|
}
|
|
if ( m_forced_begin < 0.0f ) {
|
|
MessageBox.Show( _( "Invalid value has been entered" ), _( "Error" ), MessageBoxButtons.OK, MessageBoxIcon.Exclamation );
|
|
this.DialogResult = DialogResult.Cancel;
|
|
} else if ( m_max_end < m_forced_end ) {
|
|
MessageBox.Show( _( "Invalid value has been entered" ), _( "Error" ), MessageBoxButtons.OK, MessageBoxIcon.Exclamation );
|
|
this.DialogResult = DialogResult.Cancel;
|
|
} else {
|
|
this.DialogResult = DialogResult.OK;
|
|
}
|
|
} catch {
|
|
MessageBox.Show( _( "Invalid value has been entered" ), _( "Error" ), MessageBoxButtons.OK, MessageBoxIcon.Exclamation );
|
|
this.DialogResult = DialogResult.Cancel;
|
|
}
|
|
Randomize = checkBox1.Checked;
|
|
}
|
|
|
|
private void comboBox1_SelectedIndexChanged( object sender, EventArgs e ) {
|
|
m_closedeye = (string)comboBox1.Items[comboBox1.SelectedIndex];
|
|
}
|
|
|
|
private void comboBox2_SelectedIndexChanged( object sender, EventArgs e ) {
|
|
m_in_between = (string)comboBox2.Items[comboBox2.SelectedIndex];
|
|
}
|
|
|
|
private void textBox2_TextChanged( object sender, EventArgs e ) {
|
|
int old = m_close_frames;
|
|
try {
|
|
m_close_frames = int.Parse( textBox2.Text );
|
|
} catch {
|
|
m_close_frames = old;
|
|
}
|
|
}
|
|
|
|
private void checkForceBegin_CheckedChanged( object sender, EventArgs e ) {
|
|
txtForceBegin.Enabled = checkForceBegin.Checked;
|
|
if ( txtForceBegin.Enabled ) {
|
|
txtForceBegin.Focus();
|
|
}
|
|
}
|
|
|
|
private void checkForceEnd_CheckedChanged( object sender, EventArgs e ) {
|
|
txtForceEnd.Enabled = checkForceEnd.Checked;
|
|
if ( txtForceEnd.Enabled ) {
|
|
txtForceEnd.Focus();
|
|
}
|
|
}
|
|
|
|
public bool BeginForced {
|
|
get {
|
|
return checkForceBegin.Checked;
|
|
}
|
|
}
|
|
|
|
public bool EndForced {
|
|
get {
|
|
return checkForceEnd.Checked;
|
|
}
|
|
}
|
|
|
|
public float ForcedBegin {
|
|
get {
|
|
return m_forced_begin;
|
|
}
|
|
set {
|
|
m_forced_begin = value;
|
|
}
|
|
}
|
|
|
|
public float ForcedEnd {
|
|
get {
|
|
return m_forced_end;
|
|
}
|
|
set {
|
|
m_forced_end = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|