ref: 308905898ebf7fea415e8e01ed2cb88baba4f69b
parent: a9cf8ba9c229eca57a91a85502946f5bb7a47f07
author: Fabian Greffrath <fabian@greffrath.com>
date: Sun Oct 8 07:08:57 EDT 2017
video: simplify PNG screenshot code Only one check for aspect_ratio_correct, same code path for both choices.
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -725,7 +725,7 @@
}
void WritePNGfile(char *filename, byte *data,
- int inwidth, int inheight,
+ int width, int height,
byte *palette)
{
png_structp ppng;
@@ -733,19 +733,22 @@
png_colorp pcolor;
FILE *handle;
int i, j;
- int width, height;
+ int w_factor, h_factor;
byte *rowbuf;
if (aspect_ratio_correct)
{
// scale up to accommodate aspect ratio correction
- width = inwidth * 5;
- height = inheight * 6;
+ w_factor = 5;
+ h_factor = 6;
+
+ width *= w_factor;
+ height *= h_factor;
}
else
{
- width = inwidth;
- height = inheight;
+ w_factor = 1;
+ h_factor = 1;
}
handle = fopen(filename, "wb");
@@ -800,32 +803,17 @@
if (rowbuf)
{
- if (aspect_ratio_correct)
+ for (i = 0; i < SCREENHEIGHT; i++)
{
- for (i = 0; i < SCREENHEIGHT; i++)
+ // expand the row 5x
+ for (j = 0; j < SCREENWIDTH; j++)
{
- // expand the row 5x
- for (j = 0; j < SCREENWIDTH; j++)
- {
- memset(rowbuf + j * 5, *(data + i*SCREENWIDTH + j), 5);
- }
-
- // write the row 6 times
- for (j = 0; j < 6; j++)
- {
- png_write_row(ppng, rowbuf);
- }
+ memset(rowbuf + j * w_factor, *(data + i*SCREENWIDTH + j), w_factor);
}
- }
- else
- {
- for (i = 0; i < SCREENHEIGHT; i++)
- {
- for (j = 0; j < SCREENWIDTH; j++)
- {
- memset(rowbuf + j, *(data + i*SCREENWIDTH + j), 1);
- }
+ // write the row 6 times
+ for (j = 0; j < h_factor; j++)
+ {
png_write_row(ppng, rowbuf);
}
}