doubango/plugins/pluginWinDD/internals/OutputManager.h

62 lines
2.0 KiB
C++
Executable File

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
#ifndef _OUTPUTMANAGER_H_
#define _OUTPUTMANAGER_H_
#include <stdio.h>
#include "CommonTypes.h"
#include "warning.h"
//
// Handles the task of drawing into a window.
// Has the functionality to draw the mouse given a mouse shape buffer and position
//
class OUTPUTMANAGER
{
public:
OUTPUTMANAGER();
~OUTPUTMANAGER();
DUPL_RETURN InitOutput(HWND Window, INT SingleOutput, _Out_ UINT* OutCount, _Out_ RECT* DeskBounds);
DUPL_RETURN UpdateApplicationWindow(_In_ PTR_INFO* PointerInfo, _Inout_ bool* Occluded);
void CleanRefs();
HANDLE GetSharedHandle();
void WindowResize();
private:
// Methods
DUPL_RETURN ProcessMonoMask(bool IsMono, _Inout_ PTR_INFO* PtrInfo, _Out_ INT* PtrWidth, _Out_ INT* PtrHeight, _Out_ INT* PtrLeft, _Out_ INT* PtrTop, _Outptr_result_bytebuffer_(*PtrHeight **PtrWidth * BPP) BYTE** InitBuffer, _Out_ D3D11_BOX* Box);
DUPL_RETURN MakeRTV();
void SetViewPort(UINT Width, UINT Height);
DUPL_RETURN InitShaders();
DUPL_RETURN InitGeometry();
DUPL_RETURN CreateSharedSurf(INT SingleOutput, _Out_ UINT* OutCount, _Out_ RECT* DeskBounds);
DUPL_RETURN DrawFrame();
DUPL_RETURN DrawMouse(_In_ PTR_INFO* PtrInfo);
DUPL_RETURN ResizeSwapChain();
// Vars
IDXGISwapChain1* m_SwapChain;
ID3D11Device* m_Device;
IDXGIFactory2* m_Factory;
ID3D11DeviceContext* m_DeviceContext;
ID3D11RenderTargetView* m_RTV;
ID3D11SamplerState* m_SamplerLinear;
ID3D11BlendState* m_BlendState;
ID3D11VertexShader* m_VertexShader;
ID3D11PixelShader* m_PixelShader;
ID3D11InputLayout* m_InputLayout;
ID3D11Texture2D* m_SharedSurf;
IDXGIKeyedMutex* m_KeyMutex;
HWND m_WindowHandle;
bool m_NeedsResize;
DWORD m_OcclusionCookie;
};
#endif