MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / onRender

Method onRender

forms/textbutton.cpp:47–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47void TextButton::onRender()
48{
49 Control::onRender();
50
51 if (label->getParent() == nullptr)
52 {
53 label->setParent(shared_from_this());
54 label->Size = this->Size;
55 label->TextHAlign = this->TextHAlign;
56 label->TextVAlign = this->TextVAlign;
57 }
58
59 if (cached == nullptr || cached->size != Vec2<unsigned int>{Size})
60 {
61 cached.reset(new Surface{Vec2<unsigned int>{Size}});
62
63 RendererSurfaceBinding b(*fw().renderer, cached);
64 fw().renderer->clear();
65
66 switch (RenderStyle)
67 {
68 case ButtonRenderStyle::Flat:
69 fw().renderer->drawFilledRect(Vec2<float>{0, 0}, Size, BackgroundColour);
70 break;
71 case ButtonRenderStyle::Bevel:
72 fw().renderer->drawFilledRect(Vec2<float>{0, 0}, Size, Colour{112, 112, 112});
73 fw().renderer->drawRect(Vec2<float>{0, 0}, Size, Colour{16, 16, 16});
74 fw().renderer->drawRect(Vec2<float>{2, 2}, Size - 2, Colour{64, 64, 64});
75 fw().renderer->drawRect(Vec2<float>{1, 1}, Size - 2, Colour{212, 212, 212});
76 break;
77 case ButtonRenderStyle::Menu:
78 fw().renderer->drawScaled(buttonbackground, Vec2<float>{0, 0}, Size);
79 fw().renderer->drawRect(Vec2<float>{2, 2}, Size - 4, Colour{48, 48, 48});
80 fw().renderer->drawFilledRect(Vec2<float>{3, 3}, Size - 6, Colour{160, 160, 160});
81 fw().renderer->drawLine(Vec2<float>{3, 3}, Vec2<float>{Size.x - 3, 3},
82 Colour{220, 220, 220});
83 fw().renderer->drawLine(Vec2<float>{3, Size.y - 5},
84 Vec2<float>{Size.x - 3, Size.y - 5}, Colour{100, 100, 100});
85 fw().renderer->drawLine(Vec2<float>{3, Size.y - 4},
86 Vec2<float>{Size.x - 3, Size.y - 4}, Colour{64, 64, 64});
87 break;
88 }
89 }
90 fw().renderer->draw(cached, Vec2<float>{0, 0});
91
92 if (mouseDepressed && mouseInside)
93 {
94 switch (RenderStyle)
95 {
96 case ButtonRenderStyle::Flat:
97 fw().renderer->drawFilledRect(Vec2<float>{0, 0}, Vec2<float>{Size.x, Size.y},
98 Colour{255, 255, 255});
99 break;
100 case ButtonRenderStyle::Bevel:
101 fw().renderer->drawRect(Vec2<float>{0, 0}, Vec2<float>{Size.x, Size.y},
102 Colour{16, 16, 16}, 2.0f);
103 fw().renderer->drawRect(Vec2<float>{3, 3}, Vec2<float>{Size.x - 4, Size.y - 4},
104 Colour{64, 64, 64});

Callers

nothing calls this directly

Calls 9

getParentMethod · 0.80
setParentMethod · 0.80
resetMethod · 0.45
clearMethod · 0.45
drawFilledRectMethod · 0.45
drawRectMethod · 0.45
drawScaledMethod · 0.45
drawLineMethod · 0.45
drawMethod · 0.45

Tested by

no test coverage detected