-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsaveroutine.cpp
More file actions
87 lines (84 loc) · 2.05 KB
/
saveroutine.cpp
File metadata and controls
87 lines (84 loc) · 2.05 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
#include <string>
#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/core/mat.hpp>
#include <opencv2/highgui/highgui.hpp>
extern int precision;
#include "mandelbrot.hpp"
void SaveRoutine(const MandelbrotView &theView)
{
std::string saveType;
while(saveType != "1" && saveType != "2" && saveType != "3" && saveType != "c")
{
std::cout << "Save what?\n 1) Image file\n 2) Image parameters (For later re-drawing)\n 3) Image parameters including calculated data\n\nChoice (number or c): ";
std::getline(std::cin, saveType);
}
if(saveType == "c")
return;
bool filenameGood = false, cancelled = false;
std::string filename;
while(!filenameGood && !cancelled)
{
std::cout << "Enter filename to save: ";
std::getline(std::cin, filename);
if(filename == "")
{
cancelled = true;
}
else
{
std::ifstream testieStream(filename);
if(testieStream.good())
{
std::cout << "File exists, overwrite? (y/n/c)";
std::string overwriteAnswer;
while(overwriteAnswer == "")
{
overwriteAnswer = std::getchar();
if(overwriteAnswer == "y")
{
filenameGood = true;
}
if(overwriteAnswer == "c")
{
cancelled = true;
}
if(overwriteAnswer == "n")
{
overwriteAnswer = "";
}
}
}
else
{
std::ofstream testieStream(filename);
if(!testieStream.good())
{
std::cout << "Could not open file for writing.\n";
}
else
{
filenameGood = true;
}
}
}
}
if(filenameGood)
{
if(saveType == "1")
{
cv::imwrite(filename, theView.image);
}
else if(saveType == "2")
{
std::ofstream outStream(filename);
outStream << theView.Serialize().toStyledString();
}
else if(saveType == "3")
{
std::ofstream outStream(filename);
outStream << theView.Serialize(true).toStyledString();
}
}
}