Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
TVTestPlugin.hを更新
  • Loading branch information
xtne6f committed Jan 14, 2015
1 parent 11b5385 commit a34c698
Show file tree
Hide file tree
Showing 2 changed files with 165 additions and 1 deletion.
165 changes: 164 additions & 1 deletion src/TVTestPlugin.h
Expand Up @@ -114,6 +114,10 @@
・MESSAGE_GETSTATUSITEMINFO
・MESSAGE_STATUSITEMNOTIFY
・MESSAGE_REGISTERTSPROCESSOR
・MESSAGE_REGISTERPANELITEM
・MESSAGE_SETPANELITEM
・MESSAGE_GETPANELITEMINFO
・MESSAGE_SELECTCHANNEL
・以下のイベントを追加した
・EVENT_FILTERGRAPH_INITIALIZE
・EVENT_FILTERGRAPH_INITIALIZED
Expand All @@ -123,6 +127,7 @@
・EVENT_STATUSITEM_DRAW
・EVENT_STATUSITEM_NOTIFY
・EVENT_STATUSITEM_MOUSE
・EVENT_PANELITEM_NOTIFY
・MESSAGE_GETSETTING で取得できる設定に以下を追加した
・OSDFont
・PanelFont
Expand Down Expand Up @@ -430,6 +435,10 @@ enum {
MESSAGE_GETSTATUSITEMINFO, // ステータス項目の情報を取得
MESSAGE_STATUSITEMNOTIFY, // ステータス項目の通知
MESSAGE_REGISTERTSPROCESSOR, // TSプロセッサの登録
MESSAGE_REGISTERPANELITEM, // パネル項目を登録
MESSAGE_SETPANELITEM, // パネル項目の設定
MESSAGE_GETPANELITEMINFO, // パネル項目の情報を取得
MESSAGE_SELECTCHANNEL, // チャンネルを選択する
#endif
MESSAGE_TRAILER
};
Expand Down Expand Up @@ -496,6 +505,7 @@ enum {
EVENT_STATUSITEM_DRAW, // ステータス項目を描画
EVENT_STATUSITEM_NOTIFY, // ステータス項目の通知
EVENT_STATUSITEM_MOUSE, // ステータス項目のマウス操作
EVENT_PANELITEM_NOTIFY, // パネル項目の通知
#endif
EVENT_TRAILER
};
Expand Down Expand Up @@ -597,6 +607,7 @@ inline bool MsgGetCurrentChannelInfo(PluginParam *pParam,ChannelInfo *pInfo) {
}

// チャンネルを設定する
// 機能が追加された MESSAGE_SELECTCHANNEL もあります。
#if TVTEST_PLUGIN_VERSION<TVTEST_PLUGIN_VERSION_(0,0,8)
inline bool MsgSetChannel(PluginParam *pParam,int Space,int Channel) {
return (*pParam->Callback)(pParam,MESSAGE_SETCHANNEL,Space,Channel)!=0;
Expand Down Expand Up @@ -2553,6 +2564,7 @@ struct StatusItemMouseEventInfo {
POINT CursorPos; // カーソル位置(クライアント座標)
RECT ItemRect; // 項目の領域
RECT ContentRect; // 項目の余白を除いた領域
int WheelDelta; // ホイール移動量
};

// ステータス項目のマウス操作の種類
Expand All @@ -2562,7 +2574,13 @@ enum {
STATUS_ITEM_MOUSE_ACTION_LDOUBLECLICK, // 左ダブルクリック
STATUS_ITEM_MOUSE_ACTION_RDOWN, // 右ボタンが押された
STATUS_ITEM_MOUSE_ACTION_RUP, // 右ボタンが離された
STATUS_ITEM_MOUSE_ACTION_MOVE // カーソル移動
STATUS_ITEM_MOUSE_ACTION_RDOUBLECLICK, // 右ダブルクリック
STATUS_ITEM_MOUSE_ACTION_MDOWN, // 中央ボタンが押された
STATUS_ITEM_MOUSE_ACTION_MUP, // 中央ボタンが離された
STATUS_ITEM_MOUSE_ACTION_MDOUBLECLICK, // 中央ダブルクリック
STATUS_ITEM_MOUSE_ACTION_MOVE, // カーソル移動
STATUS_ITEM_MOUSE_ACTION_WHEEL, // ホイール
STATUS_ITEM_MOUSE_ACTION_HORZWHEEL // 横ホイール
};

// TSプロセッサのインターフェースは TVTestInterface.h で宣言されています。
Expand Down Expand Up @@ -2595,6 +2613,134 @@ inline bool MsgRegisterTSProcessor(PluginParam *pParam,const TSProcessorInfo *pI
return (*pParam->Callback)(pParam,MESSAGE_REGISTERTSPROCESSOR,(LPARAM)pInfo,0)!=FALSE;
}

// パネル項目の状態
enum {
PANEL_ITEM_STATE_ENABLED =0x0001U, // 有効(タブに表示されている)
PANEL_ITEM_STATE_ACTIVE =0x0002U // アクティブ
};

// パネル項目の情報
struct PanelItemInfo {
DWORD Size; // 構造体のサイズ
DWORD Flags; // 各種フラグ(現在は常に0)
DWORD Style; // スタイルフラグ(現在は常に0)
int ID; // 識別子
LPCWSTR pszIDText; // 識別子文字列
LPCWSTR pszTitle; // タイトル
};

// パネル項目を登録する
inline bool MsgRegisterPanelItem(PluginParam *pParam,const PanelItemInfo *pInfo) {
return (*pParam->Callback)(pParam,MESSAGE_REGISTERPANELITEM,(LPARAM)pInfo,0)!=FALSE;
}

// パネル項目の設定の情報
struct PanelItemSetInfo {
DWORD Size; // 構造体のサイズ
DWORD Mask; // 設定する情報のマスク(PANEL_ITEM_SET_INFO_MASK_* の組み合わせ)
int ID; // 項目の識別子
DWORD StateMask; // 状態フラグのマスク(PANEL_ITEM_STATE_* の組み合わせ)
DWORD State; // 状態フラグ(PANEL_ITEM_STATE_* の組み合わせ)
};

// パネル項目の設定
enum {
PANEL_ITEM_SET_INFO_MASK_STATE =0x00000001U // StateMask / State を設定
};

// ステータス項目を設定する
// PanelItemSetInfo の Size に構造体のサイズを、Mask に設定したい情報を、
// ID に設定したい項目の識別子を指定して呼び出します。
/*
// 例
// 項目の有効状態を設定する
void EnablePanelItem(PluginParam *pParam, int ID, bool fEnable)
{
PanelItemSetInfo Info;
Info.Size = sizeof(PanelItemSetInfo);
Info.Mask = PANEL_ITEM_SET_INFO_MASK_STATE;
Info.ID = ID;
Info.StateMask = PANEL_ITEM_STATE_ENABLED;
Info.State = fEnable ? PANEL_ITEM_STATE_ENABLED : 0;
MsgSetPanelItem(pParam, &Info);
}
*/
inline bool MsgSetPanelItem(PluginParam *pParam,const PanelItemSetInfo *pInfo) {
return (*pParam->Callback)(pParam,MESSAGE_SETPANELITEM,(LPARAM)pInfo,0)!=FALSE;
}

// パネル項目の情報取得
struct PanelItemGetInfo {
DWORD Size; // 構造体のサイズ
DWORD Mask; // 取得する情報のマスク(PANEL_ITEM_GET_INFO_MASK_* の組み合わせ)
int ID; // 項目の識別子
DWORD State; // 項目の状態フラグ(PANEL_ITEM_STATE_* の組み合わせ)
HWND hwndParent; // 親ウィンドウのハンドル
HWND hwndItem; // 項目のウィンドウハンドル
};

// パネル項目の情報取得マスク
enum {
PANEL_ITEM_GET_INFO_MASK_STATE =0x0001U, // State を取得
PANEL_ITEM_GET_INFO_MASK_HWNDPARENT =0x0002U, // hwndParent を取得
PANEL_ITEM_GET_INFO_MASK_HWNDITEM =0x0004U // hwndItem を取得
};

// パネル項目の情報を取得する
// PanelItemGetInfo の Size に構造体のサイズを、Mask に取得したい情報を、
// ID に取得したい項目の識別子を指定して呼び出します。
inline bool MsgGetPanelItemInfo(PluginParam *pParam,PanelItemGetInfo *pInfo) {
return (*pParam->Callback)(pParam,MESSAGE_GETPANELITEMINFO,(LPARAM)pInfo,0)!=FALSE;
}

// パネル項目の通知情報
// EVENT_PANELITEM_NOTIFY で渡されます
struct PanelItemEventInfo {
int ID; // 項目の識別子
UINT Event; // イベントの種類(PANEL_ITEM_EVENT_* のいずれか)
};

// パネル項目のイベント
enum {
PANEL_ITEM_EVENT_CREATE=1, // 項目を作成する
PANEL_ITEM_EVENT_ACTIVATE, // 項目がアクティブになる
PANEL_ITEM_EVENT_DEACTIVATE, // 項目が非アクティブになる
PANEL_ITEM_EVENT_ENABLE, // 項目が有効になる
PANEL_ITEM_EVENT_DISABLE // 項目が無効になる
};

// パネル項目作成イベントの情報
// PANEL_ITEM_EVENT_CREATE で渡されます。
// hwndItem に作成したウィンドウのハンドルを返します。
struct PanelItemCreateEventInfo {
PanelItemEventInfo EventInfo;
RECT ItemRect;
HWND hwndParent;
HWND hwndItem;
};

// チャンネル選択の情報
struct ChannelSelectInfo {
DWORD Size; // 構造体のサイズ
DWORD Flags; // 各種フラグ(CHANNEL_SELECT_FLAG_* の組み合わせ)
LPCWSTR pszTuner; // チューナー名(NULL で指定なし)
int Space; // チューニング空間(-1 で指定なし)
int Channel; // チャンネル(-1 で指定なし)
WORD NetworkID; // ネットワークID(0 で指定なし)
WORD TransportStreamID; // トランスポートストリームID(0 で指定なし)
WORD ServiceID; // サービスID(0 で指定なし)
};

// チャンネル選択のフラグ
enum {
CHANNEL_SELECT_FLAG_STRICTSERVICE =0x0001U // ServiceID の指定を厳密に扱う
};

// チャンネルを選択する
inline bool MsgSelectChannel(PluginParam *pParam,const ChannelSelectInfo *pInfo) {
return (*pParam->Callback)(pParam,MESSAGE_SELECTCHANNEL,(LPARAM)pInfo,0)!=FALSE;
}

#endif // TVTEST_PLUGIN_VERSION>=TVTEST_PLUGIN_VERSION_(0,0,14)


Expand Down Expand Up @@ -3053,6 +3199,19 @@ class CTVTestApp
bool RegisterTSProcessor(const TSProcessorInfo *pInfo) {
return MsgRegisterTSProcessor(m_pParam,pInfo);
}
bool RegisterPanelItem(const PanelItemInfo *pInfo) {
return MsgRegisterPanelItem(m_pParam,pInfo);
}
bool SetPanelItem(const PanelItemSetInfo *pInfo) {
return MsgSetPanelItem(m_pParam,pInfo);
}
bool GetPanelItemInfo(PanelItemGetInfo *pInfo) {
pInfo->Size=sizeof(PanelItemGetInfo);
return MsgGetPanelItemInfo(m_pParam,pInfo);
}
bool SelectChannel(const ChannelSelectInfo *pInfo) {
return MsgSelectChannel(m_pParam,pInfo);
}
#endif
};

Expand Down Expand Up @@ -3225,6 +3384,8 @@ class CTVTestEventHandler
virtual bool OnStatusItemNotify(StatusItemEventInfo *pInfo) { return false; }
// ステータス項目のマウスイベント
virtual bool OnStatusItemMouseEvent(StatusItemMouseEventInfo *pInfo) { return false; }
// パネル項目の通知
virtual bool OnPanelItemNotify(PanelItemEventInfo *pInfo) { return false; }
#endif

public:
Expand Down Expand Up @@ -3314,6 +3475,8 @@ class CTVTestEventHandler
return OnStatusItemNotify((StatusItemEventInfo*)lParam1);
case EVENT_STATUSITEM_MOUSE:
return OnStatusItemMouseEvent((StatusItemMouseEventInfo*)lParam1);
case EVENT_PANELITEM_NOTIFY:
return OnPanelItemNotify((PanelItemEventInfo*)lParam1);
#endif
}
return 0;
Expand Down
1 change: 1 addition & 0 deletions src/TvtPlay.cpp
Expand Up @@ -2048,6 +2048,7 @@ LRESULT CALLBACK CTvtPlay::EventCallback(UINT Event, LPARAM lParam1, LPARAM lPar
pInfo->Action == TVTest::STATUS_ITEM_MOUSE_ACTION_LUP ? CStatusView::MOUSE_ACTION_LUP :
pInfo->Action == TVTest::STATUS_ITEM_MOUSE_ACTION_LDOUBLECLICK ? CStatusView::MOUSE_ACTION_LDOUBLECLICK :
pInfo->Action == TVTest::STATUS_ITEM_MOUSE_ACTION_RDOWN ? CStatusView::MOUSE_ACTION_RDOWN :
pInfo->Action == TVTest::STATUS_ITEM_MOUSE_ACTION_RDOUBLECLICK ? CStatusView::MOUSE_ACTION_RDOWN :
pInfo->Action == TVTest::STATUS_ITEM_MOUSE_ACTION_MOVE ? CStatusView::MOUSE_ACTION_MOVE : CStatusView::MOUSE_ACTION_NONE;
if (action != CStatusView::MOUSE_ACTION_NONE) {
if (pThis->m_statusView.OnMouseAction(action, pInfo->hwnd, pInfo->CursorPos, pInfo->ItemRect)) {
Expand Down

0 comments on commit a34c698

Please sign in to comment.