summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D/D3DUtil.h
blob: 2f2000f0041524d0c3f75402eb719b2289be1ee8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright 2010 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.

#pragma once

#include <d3d11.h>
#include <string>

#include "Common/MathUtil.h"

namespace DX11
{

namespace D3D
{
	// Font creation flags
	#define D3DFONT_BOLD        0x0001
	#define D3DFONT_ITALIC      0x0002

	// Font rendering flags
	#define D3DFONT_CENTERED    0x0001

	class CD3DFont
	{
		ID3D11ShaderResourceView* m_pTexture;
		ID3D11Buffer* m_pVB;
		ID3D11InputLayout* m_InputLayout;
		ID3D11PixelShader* m_pshader;
		ID3D11VertexShader* m_vshader;
		ID3D11BlendState* m_blendstate;
		ID3D11RasterizerState* m_raststate;
		const int m_dwTexWidth;
		const int m_dwTexHeight;
		unsigned int m_LineHeight;
		float m_fTexCoords[128-32][4];

	public:
		CD3DFont();
		// 2D text drawing function
		// Initializing and destroying device-dependent objects
		int Init();
		int Shutdown();
		int DrawTextScaled(float x, float y,
		                   float size,
		                   float spacing, u32 dwColor,
		                   const std::string& text);
	};

	extern CD3DFont font;

	void InitUtils();
	void ShutdownUtils();

	void SetPointCopySampler();
	void SetLinearCopySampler();

	void drawShadedTexQuad(ID3D11ShaderResourceView* texture,
						const D3D11_RECT* rSource,
						int SourceWidth,
						int SourceHeight,
						ID3D11PixelShader* PShader,
						ID3D11VertexShader* VShader,
						ID3D11InputLayout* layout,
						ID3D11GeometryShader* GShader = nullptr,
						float Gamma = 1.0f,
						u32 slice = 0);
	void drawClearQuad(u32 Color, float z);
	void drawColorQuad(u32 Color, float z, float x1, float y1, float x2, float y2);
}

}