-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathCTitleBar.cpp
More file actions
98 lines (70 loc) · 1.7 KB
/
CTitleBar.cpp
File metadata and controls
98 lines (70 loc) · 1.7 KB
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
#include "CTitleBar.h"
#include "CDesktop.h"
void CTitleBar::Create(SDL_Renderer* renderer)
{
mCloseBox = new CIcon("images/x.png", 2);
mCloseBox->mDraggable = false;
AddWindow(mCloseBox);
}
CTitleBar::CTitleBar() : CWindow()
{
SDL_Renderer* renderer = CApplication::sRenderer;
Create(renderer);
}
void CTitleBar::SetTitle(std::string title)
{
mTitle.SetText(CText::sFontSmall, title, CText::cBlack);
}
void CTitleBar::Init()
{
}
void CTitleBar::Draw()
{
SDL_Renderer* renderer = CApplication::sRenderer;
Uint8 r, g, b, a;
SDL_Texture* oldTarget;
oldTarget = SDL_GetRenderTarget(renderer);
SDL_SetRenderTarget(renderer, mTexture);
SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a);
SDL_SetRenderDrawColor(renderer, 164, 164, 164, 255);
SDL_RenderClear(renderer);
//sCloseBox.SetPosition(mTexW - sCloseBox.GetWidth(), 0);
//sCloseBox.Draw(renderer);
mCloseBox->SetPosition(mTexW - mCloseBox->m_Width, 0);
mCloseBox->Draw();
mTitle.SetPosition((mTexW - mTitle.mTexW) / 2, (mTexH - mTitle.mTexH) / 2);
mTitle.Draw();
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.w = mTexW;
rect.h = mTexH;
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderDrawRect(renderer, &rect);
SDL_SetRenderDrawColor(renderer, r, g, b, a);
SDL_SetRenderTarget(renderer, oldTarget);
CTexture::Draw();
}
void CTitleBar::AddClickHandler(std::function<void(CIcon*)> callback)
{
mCloseBox->AddClickHandler(callback);
}
void CTitleBar::SelectClose()
{
CDesktop::SetFocused(mCloseBox);
}
void CTitleBar::KeyDown(SDL_KeyboardEvent e)
{
CWindow::KeyDown(e);
if (e.keysym.sym == SDLK_DOWN)
{
if (mParent != NULL)
{
mParent->KeyDown(e);
}
}
else if (e.keysym.sym == SDLK_UP )
{
SelectClose();
}
}