-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlay.cpp
More file actions
101 lines (92 loc) · 2.74 KB
/
Play.cpp
File metadata and controls
101 lines (92 loc) · 2.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "Player.hpp"
#include <thread>
#include <fstream>
using std::string,nc::toroid,std::flush;
bool hasEnding(string const &fullString, string const &ending) {
if (fullString.length() >= ending.length()) {
return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));
} else {
return false;
}
}
bool isVideo(string& fname){
return hasEnding(fname,".mp4") ||
hasEnding(fname,".gif") ||
hasEnding(fname,".avi") ||
hasEnding(fname,".h64") ||
hasEnding(fname,".mov");
}
bool isImage(string& fname){
return hasEnding(fname,".bmp") ||
hasEnding(fname,".dib") ||
hasEnding(fname,".jpeg") ||
hasEnding(fname,".jpg") ||
hasEnding(fname,".jpe") ||
hasEnding(fname,".jp2") ||
hasEnding(fname,".png") ||
hasEnding(fname,".pbm") ||
hasEnding(fname,".pgm") ||
hasEnding(fname,".ppm") ||
hasEnding(fname,".sr") ||
hasEnding(fname,".ras") ||
hasEnding(fname,".tiff") ||
hasEnding(fname,".tif");
}
int main(int argc, char *argv[]){
vector<string> arguments(argv, argv + argc);
if (arguments.size()==1){
cout << "Enter the file to display as an argument!\n";
return 0 ;
}
nc::Terminal* terminal=new nc::Terminal(nc::Texture(" ",nc::Style(-1,-1,0)));
long imgPtr=0;
string signal;
uint8_t brightnessTresh=45;
uint8_t greynessTresh=155;
bool gsBlack=true;
bool debug=false;
while (true){
std::ifstream file(arguments[1+imgPtr]);
if(!file.is_open()){
delete terminal;
cout << "File not found!\n";
return -1;
}
if (isVideo(arguments[1+imgPtr])){
signal=videoPlayer(imgPtr,debug,brightnessTresh,greynessTresh,gsBlack,arguments[1+imgPtr],*terminal);
}else if (isImage(arguments[1+imgPtr])){
signal=imagePlayer(imgPtr,debug,brightnessTresh,greynessTresh,gsBlack,arguments[1+imgPtr],*terminal);
}else{
delete terminal;
cout << "File format not recognised!\n";
return -1;
break;
}
if (signal=="QUIT") {
delete terminal;
break;
}else if (signal=="NEXT"){
imgPtr=toroid(imgPtr+1,long(arguments.size()-1));
}else if (signal=="BACK"){
imgPtr=toroid(imgPtr-1,long(arguments.size()-1));
}else if (signal=="GOTO"){
Text("Enter the file to go to!",Style(-1,-1,0),terminal->screen.cols/2-13,terminal->screen.rows/2).render(&terminal->screen);
terminal->project();
cout << flush;
string file="";
while (true){
char inCh=nc::cinchr();
if (isdigit(inCh)) file+=inCh;
else break;
Text(file,Style(-1,-1,0),nc::midOfst(terminal->screen.cols,(int)file.size()),terminal->screen.rows/2+1).render(&terminal->screen);
terminal->project();
cout << flush;
}
try{
imgPtr=toroid(stoi(file),(int)arguments.size()-1);
}catch (std::invalid_argument){
imgPtr=0;
}
}
}
}