added: disable dither by default, and enable it when the -s argument is passed

This commit is contained in:
Bob van Loosen 2013-02-18 18:38:41 +01:00
parent 67bcbab47f
commit 821d2d9820
2 changed files with 16 additions and 7 deletions

View file

@ -32,12 +32,13 @@ CBitX11::CBitX11(int argc, char *argv[])
m_port = 1337; m_port = 1337;
m_address = NULL; m_address = NULL;
m_fps = 30.0f; m_fps = 30.0f;
m_dither = false;
m_destwidth = 120; m_destwidth = 120;
m_destheight = 48; m_destheight = 48;
m_debug = false; m_debug = false;
m_debugscale = 2; m_debugscale = 2;
const char* flags = "p:a:f:d:"; const char* flags = "p:a:f:d:s";
int c; int c;
while ((c = getopt(argc, argv, flags)) != -1) while ((c = getopt(argc, argv, flags)) != -1)
{ {
@ -80,6 +81,10 @@ CBitX11::CBitX11(int argc, char *argv[])
m_debugscale = scale; m_debugscale = scale;
} }
else if (c == 's') //dither
{
m_dither = true;
}
} }
//if no address is specified, turn on the debug window instead //if no address is specified, turn on the debug window instead
@ -205,7 +210,7 @@ void CBitX11::Process()
} }
avg /= m_destwidth * m_destheight * 2; avg /= m_destwidth * m_destheight * 2;
//quantize the planes, apply Floy-Steinberg dithering, and write into the buffer for the socket //quantize the planes, optionally apply Floy-Steinberg dithering, and write into the buffer for the socket
CTcpData data; CTcpData data;
data.SetData(":00"); data.SetData(":00");
for (int y = 0; y < m_destheight; y++) for (int y = 0; y < m_destheight; y++)
@ -244,14 +249,17 @@ void CBitX11::Process()
ledpos++; ledpos++;
} }
//apply Floyd-Steinberg dither
quanterror = *line - quantval; quanterror = *line - quantval;
*line = quantval; *line = quantval;
line[1] += quanterror * 7 / 16; //apply Floyd-Steinberg dither
line[m_destwidth - 1] += quanterror * 3 / 16; if (m_dither)
line[m_destwidth] += quanterror * 5 / 16; {
line[m_destwidth + 1] += quanterror / 16; line[1] += quanterror * 7 / 16;
line[m_destwidth - 1] += quanterror * 3 / 16;
line[m_destwidth] += quanterror * 5 / 16;
line[m_destwidth + 1] += quanterror / 16;
}
line++; line++;
} }

View file

@ -42,6 +42,7 @@ class CBitX11
int m_port; int m_port;
const char* m_address; const char* m_address;
float m_fps; float m_fps;
bool m_dither;
CTcpClientSocket m_socket; CTcpClientSocket m_socket;