164 lines
5.2 KiB
C++
164 lines
5.2 KiB
C++
#ifndef _DVCAP_MAINWINDOW_HPP_
|
|
#define _DVCAP_MAINWINDOW_HPP_
|
|
#ifndef _COMMON_WINDOW_HPP_
|
|
#include <common/window.hpp>
|
|
#endif
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _COMMON_SMARTPOINTER_HPP_
|
|
#include <common/pointer.hpp>
|
|
#endif
|
|
#ifndef _COMMON_PUREMENU_HPP_
|
|
#include <common/puremenu.hpp>
|
|
#endif
|
|
#ifndef _COMMON_BLOCK_HPP_
|
|
#include <common/block.hpp>
|
|
#endif
|
|
#ifndef _COMMON_MMTIMER_HPP_
|
|
#include <common/mmtimer.hpp>
|
|
#endif
|
|
#ifndef _STATBAR_STATUSBAREX_HPP_
|
|
#include <statbar/statbarx.hpp>
|
|
#endif
|
|
#ifndef _DVCAP_DEVICENOTIFICATION_HPP_
|
|
#include <dvcap/DeviceNotify.hpp>
|
|
#endif
|
|
#ifndef _DVCAP_CAPTUREDEVICEGRAPH_HPP_
|
|
#include <dvcap/CaptureDeviceGraph.hpp>
|
|
#endif
|
|
#ifndef _TOOLBAR_TOOLBAR_HPP_
|
|
#include <toolbar/toolbar.hpp>
|
|
#endif
|
|
|
|
class MainWindow : public Window
|
|
{
|
|
public:
|
|
MainWindow(void);
|
|
virtual ~MainWindow();
|
|
static String className(void);
|
|
private:
|
|
enum{StatusBarID=200,ToolBarID=201,EditHourID=202,EditMinuteID=203,EditSecondID=204,EditFrameID=205,TCButtonID=206};
|
|
enum{InitialWidth=650,InitialHeight=480,DefaultVideoWidth=360,DefaultVideoHeight=240,WidthEdge=5,HeightEdge=95};
|
|
enum{TimerResolution=55}; // 55 ms
|
|
enum{Part1,Part2,DevStatusPart};
|
|
void registerClass(void);
|
|
void insertHandlers(void);
|
|
void removeHandlers(void);
|
|
void setParts(void);
|
|
void handleDeviceChange(CallbackData &cbData);
|
|
void message(const String &message)const;
|
|
void markGraphModeMenu(int itemID);
|
|
void markToolBarButton(bool enableRecord,bool enableOthers);
|
|
bool setPreviewWindow(void);
|
|
void dvAppSetup(bool graphResult);
|
|
bool dvRefreshMode(void);
|
|
void dvStatusText(const String &text);
|
|
bool dvUpdateTapeInfo(void);
|
|
bool dvPutVcrMode(int mode);
|
|
bool dvDisplayTimecode(void);
|
|
bool dvSeekAtn(void);
|
|
|
|
bool handleFileSetOutput(void);
|
|
void handleFileSetInput(void);
|
|
void handleFileSaveGraph(void);
|
|
void handleFileCaptureSize(void);
|
|
void handleModePreview(void);
|
|
void handleModeDVToFile(void);
|
|
void handleModeDVToFileNoPre(void);
|
|
void handleModeFileToDV(void);
|
|
void handleModeFileToDVNoPre(void);
|
|
void handleModeDVToFileType2(void);
|
|
void handleModeDVToFileNoPreType2(void);
|
|
void handleModeFileToDVType2(void);
|
|
void handleModeFileToDVNoPreType2(void);
|
|
void handleOptionsRefreshMode(void);
|
|
void handleOptionsCheckTape(void);
|
|
void handleOptionsDecodeSize(void);
|
|
void handleOptionsFrameRate(void);
|
|
void handleHelpAbout(void);
|
|
void handlePlay(void);
|
|
void handlePause(void);
|
|
void handleStop(void);
|
|
void handleRecord(void);
|
|
void handleForward(void);
|
|
void handleReverse(void);
|
|
void handleForwardFastest(void);
|
|
void handleSkipNext(void);
|
|
void handleSkipPrev(void);
|
|
void handleReverseFastest(void);
|
|
void handleSeekATN(void);
|
|
|
|
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType userHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType deviceChangeHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType atnTimerHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType capLimitTimerHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType framesTimerHandler(CallbackData &someCallbackData);
|
|
|
|
Callback<MainWindow> mPaintHandler;
|
|
Callback<MainWindow> mDestroyHandler;
|
|
Callback<MainWindow> mCommandHandler;
|
|
Callback<MainWindow> mKeyDownHandler;
|
|
Callback<MainWindow> mSizeHandler;
|
|
Callback<MainWindow> mCreateHandler;
|
|
Callback<MainWindow> mUserHandler;
|
|
Callback<MainWindow> mDeviceChangeHandler;
|
|
Callback<MainWindow> mATNTimerHandler;
|
|
Callback<MainWindow> mCapLimitTimerHandler;
|
|
Callback<MainWindow> mFramesTimerHandler;
|
|
|
|
static char szClassName[];
|
|
static char szMenuName[];
|
|
DeviceNotification mDeviceNotification;
|
|
SmartPointer<StatusBarEx> mStatusBar;
|
|
SmartPointer<ToolBar> mToolBar;
|
|
SmartPointer<CaptureDeviceGraph> mCaptureDeviceGraph;
|
|
SmartPointer<Control> mEdit1;
|
|
SmartPointer<Control> mEdit2;
|
|
SmartPointer<Control> mEdit3;
|
|
SmartPointer<Control> mEdit4;
|
|
SmartPointer<Control> mTCButton;
|
|
CaptureDeviceGraph::GraphType mGraphType;
|
|
PureMenu mAppMenu;
|
|
bool mHaveDevice;
|
|
int mVideoWidth;
|
|
int mVideoHeight;
|
|
DWORD mCapStartTime;
|
|
MMTimer mAtnTimer;
|
|
MMTimer mCapLimitTimer;
|
|
MMTimer mFramesTimer;
|
|
String mStrTimecode; // so we don't have to allocate a string for each timer frequency period
|
|
DWORD mHours; // for timecode handling
|
|
DWORD mMinutes; // for timecode handling
|
|
DWORD mSeconds; // for timecode handling
|
|
String mOutputFileName;
|
|
String mInputFileName;
|
|
};
|
|
|
|
inline
|
|
String MainWindow::className(void)
|
|
{
|
|
return String(szClassName);
|
|
}
|
|
|
|
inline
|
|
void MainWindow::message(const String &message)const
|
|
{
|
|
::MessageBox(*this,message.str(),"DVCAP",MB_OK);
|
|
}
|
|
|
|
inline
|
|
void MainWindow::dvStatusText(const String &text)
|
|
{
|
|
if(!mStatusBar.isOkay())return;
|
|
mStatusBar->setText(text,DevStatusPart);
|
|
}
|
|
#endif
|