-
Notifications
You must be signed in to change notification settings - Fork 0
/
HUD.h
127 lines (86 loc) · 2.57 KB
/
HUD.h
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#pragma once
#include "Window.h"
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <wchar.h>
#include <math.h>
#include <d2d1.h>
#include <d2d1helper.h>
#include <dwrite.h>
#include <wincodec.h>
#include "Vector3D.h"
#include "Point.h"
//#include "RectangleWidget.h"
//#include "HUDWidget.h"
template<class Interface>
inline void SafeRelease(
Interface** ppInterfaceToRelease
)
{
if (*ppInterfaceToRelease != NULL)
{
(*ppInterfaceToRelease)->Release();
(*ppInterfaceToRelease) = NULL;
}
}
//enum class ShapeType
//{
// Filled,
// Empty,
// Filled_Borders
//
//};
enum class ShapeType
{
Filled,
Empty,
Filled_Borders
};
enum class WidgetPositionOffset
{
Center,
Right,
Left
};
class HUD //: public System
{
public:
//HRESULT Initialize();
// void RunMessageLoop();
// Inherited via Window
// void Initialize(RECT screen_rect) ;
void ClearHUD(Vector3D color, float alpha);
void DrawTextOnScreen(D2D1_POINT_2F position,IDWriteTextLayout* text_layout, ID2D1SolidColorBrush* text_brush);
// void DrawNumberOnScreen(int number, Point position, float width, float height, float font_size, Vector3D text_color);
/* void DrawRectangle(Point position,Point size,Vector3D rectangle_color,
WidgetPositionOffset offset = WidgetPositionOffset::Center , ShapeType shape_type= ShapeType::Filled,float border_width = 1, Vector3D border_color = Vector3D(0,0,0));*/
void DrawRectangle(Point position, Point size, ID2D1SolidColorBrush* rectangle_brush,
WidgetPositionOffset offset = WidgetPositionOffset::Center, ShapeType shape_type = ShapeType::Filled,
float border_width = 1, ID2D1SolidColorBrush* border_brush = NULL);
HRESULT BindSurfaceToHUDRT(IDXGISurface* surface);
// void Release() ;
// virtual void OnFocus() override;
// void Resize(RECT screen_rect);
//virtual void OnKillFocus() override;
ID2D1RenderTarget* GetRenderTarget();
ID2D1Factory* GetD2D1Factory();
IDWriteFactory* GetWriteFactory();
RECT GetScreenRect();
void setScreenRect(RECT rect);
///////////////HUD SYSTEM
static HUD* GetHUDSystem();
static void create();
static void release();
private:
HUD();
~HUD();
// HRESULT CreateDeviceIndependentResources();
HRESULT CreateDeviceResources();
RECT m_screen_rect{};
ID2D1RenderTarget* m_pRenderTarget;
static HUD* m_system;
ID2D1Factory* m_pDirect2dFactory = nullptr ;
IDWriteFactory* pDWriteFactory = nullptr;
//friend class HUDWidget;
};