-
Notifications
You must be signed in to change notification settings - Fork 0
/
viewer.cpp
88 lines (72 loc) · 2.03 KB
/
viewer.cpp
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
#include "viewer.h"
#include "Rectangle.h"
#include "ei_draw.h"
#include "Square.h"
#include <string>
#include <iostream>
using namespace std;
Viewer::Viewer(ei_size_t size):
_size(size),
_scalingFactor(0.5),
_growing(true),
_rectangle(size),
_square(size)
{
Shape * r = &_rectangle;
Shape * s = &_square;
generic_shape.push_back(*r);
generic_shape.push_back(*s);
_red.red = 255;
_red.green = 0;
_red.blue = 0;
_red.alpha = 255;
}
Viewer::~Viewer(){
}
void Viewer::display(ei_surface_t surface){
const ei_size_t r_size = _rectangle.getSize();
const ei_size_t s_size = _square.getSize();
ei_surface_t r = hw_surface_create(surface, &r_size);
ei_surface_t s = hw_surface_create(surface, &s_size);
hw_surface_lock(r);
ei_fill(r, &_red, EI_TRUE);
_rectangle.draw(surface,r);
hw_surface_lock(s);
ei_fill(s, &_red, EI_TRUE);
_rectangle.draw(surface,s);
}
void Viewer::updateScene()
{
if(_growing){
_scalingFactor += 0.005;
_growing = _scalingFactor < 0.7; // grow square until _halfSize >= 0.8
} else {
_scalingFactor -= 0.005;
_growing = _scalingFactor < 0.4; // grow square until _halfSize <= 0.3
}
// update rectangle size and position
_rectangle.setwidth (_scalingFactor * _size.width);
_rectangle.setheight( _scalingFactor * _size.height);
float x =(_size.width - _rectangle.getwidth()) / 2.f;
float y =(_size.height - _rectangle.getheight()) / 2.f;
_rectangle.setPosition(x,y);
}
////////////////////////////////////////////////////////////////////////////////
// Events
/*!
callback to manage mouse : called when the user presses (action==0) or releases (action==0) a mouse button
*/
void Viewer::mousePressed(int button, int action){
//CODE SPEED HERE
}
/*!
callback to manage mouse : called when the user moves the mouse
*/
void Viewer::mouseMoved(int x, int y){
//CODE SPEED HERE
}
/*!
callback to manage keyboard interactions
*/
void Viewer::keyPressed(int key){
}