-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMultimediaMap.cpp
More file actions
95 lines (66 loc) · 2.47 KB
/
MultimediaMap.cpp
File metadata and controls
95 lines (66 loc) · 2.47 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
#include "MultimediaMap.h"
template <typename objectPtr>
objectPtr MultimediaMap::addObject(objectPtr obj){
if (objectTable.find(obj->getName()) == objectTable.end())
objectTable[obj->getName()] = obj;
else {
std::cerr << "[--]\tERROR : Impossible to create object with name = ";
std::cerr << obj->getName() << "\n\tThis name is already in database" << std::endl;
return objectPtr(nullptr);
}
return obj;
}
Picture_ptr MultimediaMap::createPicture(float latitude, float longitude, std::string name,
std::string pathname) {
return addObject(Picture_ptr(new Picture(latitude, longitude, name, pathname)));
}
Video_ptr MultimediaMap::createVideo(float duration, std::string name,
std::string pathname){
return addObject(Video_ptr(new Video(duration, name, pathname)));
}
Movie_ptr MultimediaMap::createMovie(const int *duration_array, unsigned int length,
std::string name, std::string pathname) {
return addObject(Movie_ptr(new Movie(duration_array, length, name, pathname)));
}
Group_ptr MultimediaMap::createGroup(std::string name){
Group_ptr g_ptr(new Group<Multimedia_ptr>(name));
if (groupTable.find(name) == groupTable.end())
groupTable[name] = g_ptr;
else {
std::cerr << "[--]\tERROR : Impossible to create group with name = ";
std::cerr << name << "\n\tThis name is already in database" << std::endl;
return Group_ptr(nullptr);
}
return g_ptr;
}
Multimedia_ptr MultimediaMap::searchObject(std::string name) {
if (objectTable.find(name) != objectTable.end()) {
return objectTable[name];
}
else {
std::cerr << "[--]\tERROR : no object named '" << name << "'\n";
return nullptr;
}
}
Group_ptr MultimediaMap::searchGroup(std::string name) {
if (groupTable.find(name) != groupTable.end()) {
return groupTable[name];
}
else {
std::cerr << "[--]\tERROR : no group name '" << name << "'\n";
return nullptr;
}
}
bool MultimediaMap::display(std::string name, std::ostream& stream) const{
if (objectTable.find(name) != objectTable.end()){
objectTable.at(name)->display(stream);
return true;
}
return false;
}
bool MultimediaMap::play(std::string name) const {
if (objectTable.find(name) != objectTable.end()){
objectTable.at(name)->play();
}
return false;
}