summaryrefslogtreecommitdiff
path: root/cheat/gmod/visual_draw.cpp
blob: db282a7cdf1235ac65bfd8ebe232ca43e1a73a54 (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
#include "d3d.hpp"
#include "interface.hpp"
#include "renderer.hpp"
#include "visual.hpp"
#include "settings.hpp"

namespace features
{
	void c_visuals::draw_line( const vec2_t& a, const vec2_t& b, const clr_t& clr ) {
		g_d3d.draw_line( clr, a.x, a.y, b.x, b.y );
	}

	void c_visuals::draw_line( int x, int y, int x1, int y1, const clr_t& clr ) {
		g_d3d.draw_line( clr, x, y, x1, y1 );
	}

	void c_visuals::draw_rect( int x, int y, int w, int h, const clr_t& clr ) {
		g_d3d.draw_rect( clr, x, y, w, h );
	}

	void c_visuals::draw_filled_rect( int x, int y, int w, int h, const clr_t& col ) {
		g_d3d.draw_filled_rect( col, x, y, w, h );
	}

	void c_visuals::draw_circle( int x, int y, int r, const clr_t& col, int res ) {
		g_d3d.draw_circle( col, x, y, r, res );
	}

	void c_visuals::draw_string( int x, int y, int align, bool big, const clr_t& col, const char* msg, ... ) {
		char* buffer = ( char* )_alloca( 1024 );
		va_list list{ };

		memset( buffer, 0, 1024 );

		__crt_va_start( list, msg );
		vsprintf_s( buffer, 1024, msg, list );
		__crt_va_end( list );

		switch( align ) {
		case ALIGN_CENTER:
			g_d3d.draw_text< ALIGN_CENTER >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, big ? D3DFONTFLAG_DROPSHADOW : D3DFONTFLAG_OUTLINE, buffer );
			break;
		case ALIGN_LEFT:
			g_d3d.draw_text< ALIGN_LEFT >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, big ? D3DFONTFLAG_DROPSHADOW : D3DFONTFLAG_OUTLINE, buffer );
			break;
		case ALIGN_RIGHT:
			g_d3d.draw_text< ALIGN_RIGHT >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, big ? D3DFONTFLAG_DROPSHADOW : D3DFONTFLAG_OUTLINE, buffer );
			break;
		}
	}

	void c_visuals::draw_really_big_string( int x, int y, const clr_t& col, const char* msg, ... ) {
		char* buffer = ( char* )_alloca( 1024 );
		va_list list{ };

		memset( buffer, 0, 1024 );

		__crt_va_start( list, msg );
		vsprintf_s( buffer, 1024, msg, list );
		__crt_va_end( list );

		g_d3d.draw_text< ALIGN_LEFT >( ::d3d::fonts.f_18, col, x, y, D3DFONTFLAG_OUTLINE, buffer );
	}
}