comparison fuhtark_test/include/winapi/mspterm.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 #ifndef _MSPTERM_H_
2 #define _MSPTERM_H_
3
4 template <class T> class ITTerminalVtblBase : public ITTerminal {
5 };
6
7 class CBaseTerminal : virtual public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITTerminalVtblBase<CBaseTerminal>,&IID_ITTerminal,&LIBID_TAPI3Lib>,public ITTerminalControl
8 {
9 BEGIN_COM_MAP(CBaseTerminal)
10 COM_INTERFACE_ENTRY(IDispatch)
11 COM_INTERFACE_ENTRY(ITTerminal)
12 COM_INTERFACE_ENTRY(ITTerminalControl)
13 COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal,m_pFTM)
14 END_COM_MAP()
15 DECLARE_VQI()
16 DECLARE_GET_CONTROLLING_UNKNOWN()
17 public:
18 CBaseTerminal();
19 virtual ~CBaseTerminal();
20 public:
21 STDMETHOD(get_TerminalClass)(BSTR *pVal);
22 STDMETHOD(get_TerminalType)(TERMINAL_TYPE *pVal);
23 STDMETHOD(get_State)(TERMINAL_STATE *pVal);
24 STDMETHOD(get_Name)(BSTR *pVal);
25 STDMETHOD(get_MediaType)(long *plMediaType);
26 STDMETHOD(get_Direction)(TERMINAL_DIRECTION *pDirection);
27 public:
28 virtual HRESULT Initialize(IID iidTerminalClass,DWORD dwMediaType,TERMINAL_DIRECTION Direction,MSP_HANDLE htAddress);
29 public:
30 STDMETHOD (get_AddressHandle)(MSP_HANDLE *phtAddress);
31 STDMETHOD (ConnectTerminal)(IGraphBuilder *pGraph,DWORD dwTerminalDirection,DWORD *pdwNumPins,IPin **ppPins);
32 STDMETHOD (CompleteConnectTerminal)(void);
33 STDMETHOD (DisconnectTerminal)(IGraphBuilder *pGraph,DWORD dwReserved);
34 STDMETHOD (RunRenderFilter)(void) = 0;
35 STDMETHOD (StopRenderFilter)(void) = 0;
36 protected:
37 CMSPCritSection m_CritSec;
38 public:
39 TERMINAL_DIRECTION m_TerminalDirection;
40 TERMINAL_TYPE m_TerminalType;
41 TERMINAL_STATE m_TerminalState;
42 TCHAR m_szName[MAX_PATH + 1];
43 IID m_TerminalClassID;
44 DWORD m_dwMediaType;
45 MSP_HANDLE m_htAddress;
46 IUnknown *m_pFTM;
47 CComPtr<IGraphBuilder> m_pGraph;
48 virtual HRESULT AddFiltersToGraph() = 0;
49 virtual HRESULT ConnectFilters() { return S_OK; }
50 virtual HRESULT GetNumExposedPins(IGraphBuilder *pGraph,DWORD *pdwNumPins) = 0;
51 virtual HRESULT GetExposedPins(IPin **ppPins) = 0;
52 virtual DWORD GetSupportedMediaTypes(void) = 0;
53 virtual HRESULT RemoveFiltersFromGraph() = 0;
54 WINBOOL MediaTypeSupported(long lMediaType);
55 };
56
57 class CSingleFilterTerminal : public CBaseTerminal {
58 public:
59 CComPtr<IPin> m_pIPin;
60 CComPtr<IBaseFilter> m_pIFilter;
61 public:
62 STDMETHOD(RunRenderFilter)(void);
63 STDMETHOD(StopRenderFilter)(void);
64 virtual HRESULT GetNumExposedPins(IGraphBuilder *pGraph,DWORD *pdwNumPins);
65 virtual HRESULT GetExposedPins(IPin **ppPins);
66 virtual HRESULT RemoveFiltersFromGraph();
67 };
68
69 class CSingleFilterStaticTerminal : public CSingleFilterTerminal {
70 public:
71 CComPtr<IMoniker> m_pMoniker;
72 WINBOOL m_bMark;
73 virtual HRESULT CompareMoniker(IMoniker *pMoniker);
74 };
75 #endif