📄 dlgtoolsani.cpp
字号:
// DlgToolsANI.cpp : implementation file
//
#include "stdafx.h"
#include "gstools.h"
#include "DlgToolsANI.h"
#include "DlgANISetFrame.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgToolsANI dialog
CDlgToolsANI::CDlgToolsANI(CWnd* pParent /*=NULL*/)
: CDialog(CDlgToolsANI::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgToolsANI)
m_bShowAllFrame = FALSE;
m_bShowAnimation = true;
m_nFrameDelay = 1000;
m_nShowAngle = 0;
m_nRotateAngle = 0;
m_fShowScale = 1.0f;
m_fShowAlpha = 1.0f;
m_fRed = 0.5f;
m_fGreen = 0.5f;
m_fBlue = 0.5f;
m_bShowAuto = true;
m_nTeam = 0;
m_nCache = 0;
m_nSelect_txg = -1;
m_num_frame_per_direction = 0;
m_nBaseAngle = 0.0f;
m_nAction = 0;
m_size_preview_length = 200;
m_size_preview_speed = 3000;
m_bAlpha = TRUE;
m_is_optimize = TRUE;
m_has_shadow = FALSE;
m_bShowFrame = FALSE;
//}}AFX_DATA_INIT
m_ptr_ani = NULL;
}
CDlgToolsANI::~CDlgToolsANI()
{
if(g_pToolsCtl)
g_pToolsCtl->SetTools(NULL);
}
void CDlgToolsANI::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgToolsANI)
DDX_Control(pDX, ID_SLIDER_PREVIEW_SPEED, m_slider_preview_speed);
DDX_Control(pDX, ID_SLIDER_PREVIEW_LENGTH, m_slider_preview_length);
DDX_Control(pDX, IDC_COMBO_IMAGE, m_combo_image);
DDX_Control(pDX, IDC_BTN_SAVE_SETING, m_btn_save_setting);
DDX_Control(pDX, IDC_BTN_SET_BASE_POINT, m_btn_set_base_point);
DDX_Control(pDX, IDC_BUTTON_NEW_FRAME, m_btnNewFrame);
DDX_Control(pDX, IDC_BUTTON_DEL_FRAME, m_btnDeleteFrame);
DDX_Control(pDX, IDC_EDIT_SHOW_ANGLE, m_edit_show_angle);
DDX_Control(pDX, IDC_EDIT_SHOW_ANGLE2, m_edit_rotate_angle);
DDX_Control(pDX, IDC_SLIDER_SHOW_SCALE, m_slider_show_scale);
DDX_Control(pDX, IDC_SLIDER_SHOW_SCALE2, m_slider_show_alpha);
DDX_Control(pDX, IDC_SLIDER_SHOW_ANGLE3, m_slider_red_mix);
DDX_Control(pDX, IDC_SLIDER_SHOW_ANGLE4, m_slider_green_mix);
DDX_Control(pDX, IDC_SLIDER_SHOW_ANGLE5, m_slider_blue_mix);
DDX_Control(pDX, IDC_SLIDER_FRAME_DELAY, m_slider_frame_delay);
DDX_Control(pDX, IDC_SLIDER_SHOW_ANGLE, m_slider_show_angle);
DDX_Control(pDX, IDC_SLIDER_SHOW_ANGLE2, m_slider_rotate_angle);
DDX_Control(pDX, IDC_LIST_FRAME, m_lstAnimation);
DDX_Check(pDX, IDC_CHECK_SHOW_ALL_FRAME, m_bShowAllFrame);
DDX_Check(pDX, IDC_CHECK_SHOW_ANIMATION, m_bShowAnimation);
DDX_Text(pDX, IDC_EDIT_FRAME_DELAY, m_nFrameDelay);
DDV_MinMaxInt(pDX, m_nFrameDelay, 30, 10000);
DDX_Text(pDX, IDC_EDIT_SHOW_ANGLE, m_nShowAngle);
DDX_Text(pDX, IDC_EDIT_SHOW_ANGLE2, m_nRotateAngle);
DDX_Text(pDX, IDC_EDIT_SHOW_SCALE, m_fShowScale);
DDX_Text(pDX, IDC_EDIT_SHOW_SCALE2, m_fShowAlpha);
DDX_Text(pDX, IDC_EDIT_SHOW_ANGLE3, m_fRed);
DDX_Text(pDX, IDC_EDIT_SHOW_ANGLE4, m_fGreen);
DDX_Text(pDX, IDC_EDIT_SHOW_ANGLE5, m_fBlue);
DDX_Check(pDX, IDC_CHECK_SHOW_AUTO_FRAME, m_bShowAuto);
DDX_Text(pDX, IDC_EDIT_TEAM, m_nTeam);
DDX_Text(pDX, IDC_EDIT_CACHE, m_nCache);
DDX_CBIndex(pDX, IDC_COMBO_IMAGE, m_nSelect_txg);
DDX_Text(pDX, IDC_EDIT_FRAME_COUNT, m_num_frame_per_direction);
DDX_Text(pDX, IDC_EDIT_BASE_ANGLE, m_nBaseAngle);
DDX_CBIndex(pDX, IDC_COMBO_ACTION, m_nAction);
DDX_Slider(pDX, ID_SLIDER_PREVIEW_LENGTH, m_size_preview_length);
DDX_Slider(pDX, ID_SLIDER_PREVIEW_SPEED, m_size_preview_speed);
DDX_Check(pDX, IDC_CHECK_ALPHA, m_bAlpha);
DDX_Check(pDX, IDC_CHECK_SHOW_OPTIMIZE, m_is_optimize);
DDX_Check(pDX, IDC_CHECK_SHADOW, m_has_shadow);
DDX_Check(pDX, IDC_CHECK_FRAME, m_bShowFrame);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgToolsANI, CDialog)
//{{AFX_MSG_MAP(CDlgToolsANI)
ON_BN_CLICKED(IDC_CHECK_SHOW_ANIMATION, OnCheckShowAnimation)
ON_BN_CLICKED(IDC_CHECK_SHOW_AUTO_FRAME, OnCheckShowAutoFrame)
ON_EN_CHANGE(IDC_EDIT_SHOW_ANGLE, OnChangeEditShowAngle)
ON_EN_CHANGE(IDC_EDIT_SHOW_SCALE, OnChangeEditShowScale)
ON_WM_SHOWWINDOW()
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_ANGLE, OnCustomdrawSliderShowAngle)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_SCALE, OnCustomdrawSliderShowScale)
ON_EN_CHANGE(IDC_EDIT_FRAME_DELAY, OnChangeEditFrameDelay)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_FRAME_DELAY, OnCustomdrawSliderFrameDelay)
ON_NOTIFY(NM_CLICK, IDC_LIST_FRAME, OnClickListFrame)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_ANGLE2, OnCustomdrawSliderRotateAngle)
ON_EN_CHANGE(IDC_EDIT_SHOW_ANGLE2, OnChangeEditRotateAngle)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_ANGLE3, OnCustomdrawSliderRed)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_ANGLE4, OnCustomdrawSliderGreen)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_ANGLE5, OnCustomdrawSliderBlue)
ON_EN_CHANGE(IDC_EDIT_SHOW_ANGLE3, OnChangeEditRed)
ON_EN_CHANGE(IDC_EDIT_SHOW_ANGLE4, OnChangeEditGreen)
ON_EN_CHANGE(IDC_EDIT_SHOW_ANGLE5, OnChangeEditBlue)
ON_EN_CHANGE(IDC_EDIT_SHOW_SCALE2, OnChangeEditShowAlpha)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_SHOW_SCALE2, OnCustomdrawSliderShowAlpha)
ON_BN_CLICKED(IDC_BUTTON7, OnShowAngle)
ON_BN_CLICKED(IDC_BUTTON6, OnBtnScale)
ON_BN_CLICKED(IDC_BUTTON5, OnBtnAlpha)
ON_BN_CLICKED(IDC_BUTTON4, OnBtnRotate)
ON_BN_CLICKED(IDC_BUTTON3, OnBtnRed)
ON_BN_CLICKED(IDC_BUTTON2, OnBtnGreen)
ON_BN_CLICKED(IDC_BUTTON1, OnBtnBlue)
ON_BN_CLICKED(IDC_BUTTON8, OnBtnFrameDelay)
ON_BN_CLICKED(IDC_BTN_SET_BASE_POINT, OnBtnSetBasePoint)
ON_BN_CLICKED(IDC_BTN_SAVE_SETING, OnBtnSaveSetting)
ON_BN_CLICKED(IDC_BUTTON_NEW_FRAME, OnButtonNewFrame)
ON_BN_CLICKED(IDC_BUTTON_DEL_FRAME, OnButtonDelFrame)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_FRAME, OnDblclkListFrame)
ON_NOTIFY(LVN_KEYDOWN, IDC_LIST_FRAME, OnKeydownListFrame)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
ON_BN_CLICKED(IDC_BUTTON_SAVE_AS, OnButtonSaveAs)
ON_BN_CLICKED(IDC_BUTTON_IMPORT, OnButtonImport)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_PREVIEW_LENGTH, OnCustomdrawSliderPreviewLength)
ON_NOTIFY(NM_RELEASEDCAPTURE, ID_SLIDER_PREVIEW_LENGTH, OnReleasedcaptureSliderPreviewLength)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_PREVIEW_SPEED, OnCustomdrawSliderPreviewSpeed)
ON_NOTIFY(NM_RELEASEDCAPTURE, ID_SLIDER_PREVIEW_SPEED, OnReleasedcaptureSliderPreviewSpeed)
ON_CBN_SELENDOK(IDC_COMBO_ACTION, OnSelendokComboAction)
ON_BN_CLICKED(IDC_CHECK_ALPHA, OnCheckAlpha)
ON_BN_CLICKED(IDC_CHECK_SHOW_OPTIMIZE, OnCheckShowOptimize)
ON_BN_CLICKED(IDC_CHECK_FRAME, OnCheckFrame)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgToolsANI message handlers
BOOL CDlgToolsANI::Create(GSANI& ani)
{
//{{AFX_DATA_INIT(CSplashWnd)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_ptr_ani = &ani;
if(NULL==g_pToolsCtl)
return FALSE;
if (!CDialog::Create(CDlgToolsANI::IDD, g_pToolsCtl))
{
TRACE0("Warning: creation of CStartupDlg dialog failed\n");
return FALSE;
}
ShowWindow(SW_HIDE);
UpdateWindow();
g_pToolsCtl->SetTools(this);
m_ptr_ani->SetFrameDelay(m_nFrameDelay);
return TRUE;
}
BOOL CDlgToolsANI::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_slider_frame_delay.SetRange(10,300);
m_slider_show_angle.SetRange(0,360);
m_slider_rotate_angle.SetRange(0,360);
m_slider_show_alpha.SetRange(0,100);
m_slider_red_mix.SetRange(0,100);
m_slider_green_mix.SetRange(0,100);
m_slider_blue_mix.SetRange(0,100);
m_slider_show_scale.SetRange(10,1000);
CGsTextureGroup* pTxg = m_ptr_ani->GetTextureGroup();
if(pTxg==NULL)
return FALSE;
switch(pTxg->GetSourceFFT())
{
case GSF_TXG:
m_btn_set_base_point.EnableWindow(TRUE);
m_btn_save_setting.EnableWindow(TRUE);
break;
default:
m_btn_set_base_point.EnableWindow(FALSE);
m_btn_save_setting.EnableWindow(FALSE);
break;
}
UpdateSeting();
m_lstAnimation.SetExtendedStyle(LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_lstAnimation.InsertColumn(0,"幀",LVCFMT_LEFT,35);
m_lstAnimation.InsertColumn(1,"索引",LVCFMT_LEFT,38);
m_lstAnimation.InsertColumn(2,"标志",LVCFMT_LEFT,40);
// m_btnDeleteFrame.EnableWindow(false);
// m_btnNewFrame.EnableWindow(false);
Init();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgToolsANI::Init()
{
m_edit_show_angle.EnableWindow(!m_bShowAuto);
m_slider_show_angle.EnableWindow(!m_bShowAuto);
m_slider_preview_length.SetRange(10, 2000);
m_slider_preview_speed.SetRange(100, 5000);
CGsTextureGroup* ptxg = m_ptr_ani->GetTextureGroup();
// m_nFrameDelay = ptxg->GetDefaultDelay();
m_nFrameDelay = m_ptr_ani->GetFrameDelay();
// m_lstAnimation.EnableWindow(!m_bShowAnimation);
// m_btnDeleteFrame.EnableWindow(!m_bShowAnimation);
// m_btnNewFrame.EnableWindow(!m_bShowAnimation);
CGsTextureGroup* pTxg = m_ptr_ani->GetTextureGroup();
m_nBaseAngle = D3DXToDegree(pTxg->GetBaseAngle());
m_nTeam = pTxg->GetTeam();
m_nCache = pTxg->GetCacheSize();
m_combo_image.InsertString(0, m_ptr_ani->GetImage());
m_num_frame_per_direction = m_ptr_ani->GetFrameCount();
m_has_shadow = m_ptr_ani->TestFlag(TXG_FLAG_SHADOW);
m_nSelect_txg = 0;
UpdateSeting();
UpdateFrameList();
// if(m_bShowAnimation)
// {
m_ptr_ani->Play(GS_ANI_PLAY_LOOP, true, 0, 0, m_nFrameDelay);
// }
//
}
void CDlgToolsANI::OnCheckShowAnimation()
{
// TODO: Add your control notification handler code here
UpdateData();
// m_lstAnimation.EnableWindow(!m_bShowAnimation);
// m_lstAnimation.EnableWindow(!m_bShowAnimation);
// m_btnDeleteFrame.EnableWindow(!m_bShowAnimation);
// m_btnNewFrame.EnableWindow(!m_bShowAnimation);
}
void CDlgToolsANI::OnCheckShowAutoFrame()
{
// TODO: Add your control notification handler code here
UpdateData();
m_edit_show_angle.EnableWindow(!m_bShowAuto);
m_slider_show_angle.EnableWindow(!m_bShowAuto);
}
void CDlgToolsANI::OnChangeEditShowAngle()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData();
if(m_nShowAngle<0)
m_nShowAngle = 0;
if(m_nShowAngle>360)
m_nShowAngle = 360;
UpdateData(false);
m_slider_show_angle.SetPos(m_nShowAngle);
// g_pWndAnimation->SetShowAngle(m_nShowAngle);
m_ptr_ani->SetFaceTo(D3DXToRadian(m_nShowAngle));
}
void CDlgToolsANI::OnChangeEditShowScale()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData();
if(m_fShowScale<0.1)
m_fShowScale = 0.1f;
if(m_fShowScale>10)
m_fShowScale = 10;
UpdateData(false);
m_slider_show_scale.SetPos(m_fShowScale*100);
// g_pWndAnimation->SetScale(m_fShowScale);
}
void CDlgToolsANI::OnCustomdrawSliderShowAngle(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_nShowAngle = m_slider_show_angle.GetPos();
UpdateData(false);
// g_pWndAnimation->SetShowAngle(m_nShowAngle);
m_ptr_ani->SetFaceTo(D3DXToRadian(m_nShowAngle));
*pResult = 0;
}
void CDlgToolsANI::OnCustomdrawSliderShowScale(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_fShowScale = m_slider_show_scale.GetPos()/100.0f;
UpdateData(false);
// g_pWndAnimation->SetScale(m_fShowScale);
*pResult = 0;
}
void CDlgToolsANI::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
// if(bShow)
// {
// Init();
// }
}
void CDlgToolsANI::OnChangeEditFrameDelay()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData();
if(m_nFrameDelay<10)
m_nFrameDelay = 10;
if(m_nFrameDelay>3000)
m_nFrameDelay = 3000;
UpdateData(false);
m_slider_frame_delay.SetPos(m_nFrameDelay);
m_ptr_ani->SetFrameDelay(m_nFrameDelay);
// g_pWndAnimation->SetFrameDelay(m_nFrameDelay);
}
void CDlgToolsANI::OnCustomdrawSliderFrameDelay(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_nFrameDelay = m_slider_frame_delay.GetPos();
UpdateData(false);
m_ptr_ani->SetFrameDelay(m_nFrameDelay);
// g_pWndAnimation->SetFrameDelay(m_nFrameDelay);
*pResult = 0;
}
void CDlgToolsANI::OnCustomdrawSliderRotateAngle(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_nRotateAngle = m_slider_rotate_angle.GetPos();
UpdateData(false);
*pResult = 0;
}
void CDlgToolsANI::OnChangeEditRotateAngle()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData();
if(m_nRotateAngle<0)
m_nRotateAngle = 0;
if(m_nRotateAngle>360)
m_nRotateAngle = 360;
UpdateData(false);
m_slider_rotate_angle.SetPos(m_nRotateAngle);
}
void CDlgToolsANI::OnCustomdrawSliderRed(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_fRed = m_slider_red_mix.GetPos()/100.0f;
UpdateData(false);
*pResult = 0;
}
void CDlgToolsANI::OnCustomdrawSliderGreen(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_fGreen = m_slider_green_mix.GetPos()/100.0f;
UpdateData(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -