Skip to content

Commit 3bbde95

Browse files
committed
Add HD Rendering option to SarConvert
1 parent 9266cd0 commit 3bbde95

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

SarConvert/main.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,25 @@ using com_ptr = std::unique_ptr<T, ComDeleter>;
4040
int wmain(int argc, LPCWSTR* argv)
4141
{
4242
WCHAR dstName[MAX_PATH];
43-
OpenGLRenderer renderer;
43+
std::unique_ptr<OpenGLRenderer> renderer;
44+
try {
45+
renderer = std::make_unique<OpenGLRenderer>();
46+
}
47+
catch (std::exception& e) {
48+
std::cout << e.what() << std::endl;
49+
exit(1);
50+
}
4451
std::vector<uint32_t> buf;
4552
int targetSize = 0;
53+
bool renderHd = false;
4654

4755
for (int i = 1; i < argc; i++) {
4856

4957
LPCWSTR f = argv[i];
5058
int newSize;
5159
if (fileExists(f)) {
5260

53-
61+
5462
std::unique_ptr<SarFile> sar;
5563
try {
5664
IStream* tmp;
@@ -67,24 +75,24 @@ int wmain(int argc, LPCWSTR* argv)
6775
std::cout << e.what() << std::endl;
6876
continue;
6977
}
70-
78+
7179
DEBUG_SCOPE({
7280
wcscpy_s(dstName, f);
7381
LPWSTR dot = wcsrchr(dstName, L'.');
7482
*dot = '\0';
7583
wcscat_s(dstName, L".txt");
7684

77-
FILE* outFile;
85+
FILE * outFile;
7886
_wfopen_s(&outFile, dstName, L"wb");
79-
87+
8088
for (int i = 0; i < sar->numLayers(); i++) {
8189
SarLayer& sl = sar->layer(i);
8290
fprintf_s(outFile, "Shape: ", sl.shape());
8391
uint16_t shape = sl.shape();
8492
for (int i = 0; i < 10; i++) {
8593
bool set = shape & (1 << (10 - 1 - i));
8694
fprintf_s(outFile, "%d", set ? 1 : 0);
87-
if(i == 1 || i == 5)
95+
if (i == 1 || i == 5)
8896
fprintf_s(outFile, "_");
8997
}
9098
fprintf_s(outFile, " %04d\n", sl.shape());
@@ -95,15 +103,16 @@ int wmain(int argc, LPCWSTR* argv)
95103

96104
int sw = sar->width();
97105
int sh = sar->height();
98-
if (targetSize) {
106+
if (targetSize != 0) {
99107
int maxDim = __max(sw, sh);
100108
sw = sw * targetSize / maxDim;
101109
sh = sh * targetSize / maxDim;
102110
}
103111

104112
int numPixels = sw * sh;
105113
buf.resize(numPixels);
106-
renderer.Render(*sar, sw, sh, &buf[0]);
114+
renderer->SetFlag(OpenGLRenderer::FLAG_HD, renderHd);
115+
renderer->Render(*sar, sw, sh, &buf[0]);
107116

108117
for (auto p = buf.begin(); p < buf.end(); p++) {
109118
uint32_t pixel = *p;
@@ -125,7 +134,8 @@ int wmain(int argc, LPCWSTR* argv)
125134

126135
}
127136
else if ((newSize = wcstol(f, nullptr, 10)) != 0) {
128-
targetSize = newSize < 0 ? 0 : newSize;
137+
targetSize = abs(newSize);
138+
renderHd = newSize < 0;
129139
}
130140
}
131141
}

0 commit comments

Comments
 (0)