OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
dbgpainter.cpp
Go to the documentation of this file.
1#include "dbgpainter.h"
2
3#include "utils/gthfont.h"
4#include "resources.h"
5
6using namespace Tempest;
7
8DbgPainter::DbgPainter(Painter& painter, const Tempest::Matrix4x4& mvp, int w, int h)
9 :painter(painter), mvp(mvp), w(w), h(h) {
10 }
11
12void DbgPainter::setBrush(const Brush& brush) {
13 painter.setBrush(brush);
14 }
15
16void DbgPainter::setPen(const Pen& pen) {
17 painter.setPen(pen);
18 }
19
20void DbgPainter::drawText(int x, int y, std::string_view txt) {
21 auto& fnt = Resources::font(1.0);
22 fnt.drawText(painter,x,y,txt);
23 }
24
25void DbgPainter::drawText(const Tempest::Vec3& a, std::string_view txt) {
26 Vec3 pa = a; float wa = 1;
27 mvp.project(pa.x,pa.y,pa.z, wa);
28 if(wa<0.001f)
29 return;
30 pa /= wa;
31 int x0 = int((pa.x+1.f)*0.5f*float(w));
32 int y0 = int((pa.y+1.f)*0.5f*float(h));
33 drawText(x0, y0, txt);
34 }
35
36void DbgPainter::drawLine(const Vec3& a, const Vec3& b) {
37 Vec3 pa = a, pb = b;
38 float wa = 1, wb = 1;
39 mvp.project(pa.x,pa.y,pa.z,wa);
40 mvp.project(pb.x,pb.y,pb.z,wb);
41
42 if(wa<0.001f || wb<0.001f)
43 return;
44
45 pa /= wa;
46 pb /= wb;
47
48 int x0 = int((pa.x+1.f)*0.5f*float(w));
49 int y0 = int((pa.y+1.f)*0.5f*float(h));
50
51 int x1 = int((pb.x+1.f)*0.5f*float(w));
52 int y1 = int((pb.y+1.f)*0.5f*float(h));
53
54 painter.drawLine(x0,y0,x1,y1);
55 }
void setBrush(const Tempest::Brush &brush)
void drawText(int x, int y, std::string_view txt)
const int w
Definition dbgpainter.h:20
Tempest::Painter & painter
Definition dbgpainter.h:18
const int h
Definition dbgpainter.h:21
void drawLine(const Tempest::Vec3 &a, const Tempest::Vec3 &b)
void setPen(const Tempest::Pen &pen)
DbgPainter(Tempest::Painter &painter, const Tempest::Matrix4x4 &mvp, int w, int h)
Definition dbgpainter.cpp:8
const Tempest::Matrix4x4 mvp
Definition dbgpainter.h:19
static const GthFont & font(const float scale)