-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathView.cpp
More file actions
77 lines (62 loc) · 1.74 KB
/
View.cpp
File metadata and controls
77 lines (62 loc) · 1.74 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
//
// View.cpp
// KSDL
//
// Created by Kyle Koser on 5/20/14.
// Copyright (c) 2014 Kyle Koser. All rights reserved.
//
#include "View.h"
View::View( SDL_Rect aFrame, SDL_Renderer *aRenderer ) {
frame = aFrame;
renderer = aRenderer;
}
View::~View() {
// delete all of the subViews.
vector<View *>::iterator iter;
for (iter = subviews.begin(); iter != subviews.end(); ++iter) {
delete *iter;
}
}
void View::addSubview(View *v, int index) {
v->setRenderer( getRenderer() );
subviews.insert( subviews.end() - index, v );
}
void View::drawInRect(SDL_Rect aRect) {
// Draw the view's background
SDL_SetRenderDrawColor(renderer, backgroundColor.r, backgroundColor.g, backgroundColor.b, backgroundColor.a);
SDL_RenderFillRect(renderer, &frame);
vector<View *>::iterator iter;
SDL_Rect newRect;
//calculate the new rect relative to the rect and this view's frame
newRect.x = aRect.x + frame.x;
newRect.y = aRect.y + frame.y;
newRect.w = frame.w;
newRect.h = frame.h;
for (iter = subviews.begin(); iter != subviews.end(); ++iter) {
(*iter)->drawInRect( newRect );
}
}
SDL_Color View::getBackgroundColor() const {
return backgroundColor;
}
SDL_Renderer* View::getRenderer() const {
return renderer;
}
SDL_Rect View::getFrame() const {
return frame;
}
void View::handleEvent(SDL_Event e) {
vector<View *>::iterator iter;
for (iter = subviews.begin(); iter != subviews.end(); ++iter) {
(*iter)->handleEvent( e );
}
}
void View::setBackgroundColor(SDL_Color aColor) {
backgroundColor = aColor;
}
void View::setFrame(SDL_Rect aFrame) {
frame = aFrame;
}
void View::setRenderer(SDL_Renderer *aRenderer) {
renderer = aRenderer;
}