MCPcopy Create free account
hub / github.com/AbyssEngine/AbyssEngineOld / draw

Method draw

src/Abyss/UI/Button.h:67–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65 }
66
67 auto draw(const int x, const int y) -> void {
68 handleMouse(x, y);
69
70 auto posX = x;
71 auto posY = y;
72 auto frameIdx = -1;
73 const int framesPerType = _def.segments.x * _def.segments.y;
74 switch (_state) {
75 case ButtonState::Normal:
76 frameIdx = _def.frames.base * framesPerType;
77 break;
78 case ButtonState::Pressed:
79 frameIdx = _def.frames.pressed * framesPerType;
80 break;
81 case ButtonState::Disabled:
82 frameIdx = _def.frames.disabled * framesPerType;
83 break;
84 }
85
86 for (int frameY = 0; frameY < _def.segments.y; frameY++) {
87 int frameHeight;
88 for (int frameX = 0; frameX < _def.segments.x; frameX++) {
89 int frameWidth;
90 _drawable.getFrameSize(frameIdx, frameWidth, frameHeight);
91 _drawable.draw(frameIdx++, posX, posY + frameHeight);
92 posX += frameWidth;
93 }
94 posX = x;
95 posY += frameHeight;
96 }
97
98 auto labelX = x + _def.clickableRect.x + (_def.clickableRect.w / 2) - (_label.getWidth() / 2);
99 auto labelY = y + _def.clickableRect.y + (_def.clickableRect.h / 2) - (_label.getHeight() / 2);
100
101 if (_state == ButtonState::Pressed) {
102 labelX -= 2;
103 labelY += 2;
104 }
105
106 _label.draw(labelX, labelY);
107 }
108};
109
110} // namespace Abyss::UI

Callers

nothing calls this directly

Calls 3

getFrameSizeMethod · 0.80
getWidthMethod · 0.45
getHeightMethod · 0.45

Tested by

no test coverage detected