handle writing of lineart data

merge-requests/1/head
Stphane Voltz 2011-01-30 08:51:13 +01:00
rodzic 0cc0b31f86
commit 948aa52e54
1 zmienionych plików z 26 dodań i 11 usunięć

Wyświetl plik

@ -118,8 +118,15 @@ sanei_genesys_write_pnm_file (char *filename, uint8_t * data, int depth,
filename, strerror (errno)); filename, strerror (errno));
return SANE_STATUS_INVAL; return SANE_STATUS_INVAL;
} }
if(depth==1)
{
fprintf (out, "P4\n%d\n%d\n", pixels_per_line, lines);
}
else
{
fprintf (out, "P%c\n%d\n%d\n%d\n", channels == 1 ? '5' : '6', fprintf (out, "P%c\n%d\n%d\n%d\n", channels == 1 ? '5' : '6',
pixels_per_line, lines, (int) pow (2, depth) - 1); pixels_per_line, lines, (int) pow (2, depth) - 1);
}
if (channels == 3) if (channels == 3)
{ {
for (count = 0; count < (pixels_per_line * lines * 3); count++) for (count = 0; count < (pixels_per_line * lines * 3); count++)
@ -133,17 +140,25 @@ sanei_genesys_write_pnm_file (char *filename, uint8_t * data, int depth,
} }
else else
{ {
if (depth==1)
{
pixels_per_line/=8;
}
for (count = 0; count < (pixels_per_line * lines); count++) for (count = 0; count < (pixels_per_line * lines); count++)
{ {
if (depth == 8) switch (depth)
{ {
case 8:
fputc (*(data + count), out); fputc (*(data + count), out);
} break;
else case 16:
{
fputc (*(data + 1), out); fputc (*(data + 1), out);
fputc (*(data), out); fputc (*(data), out);
data += 2; data += 2;
break;
default:
fputc(data[count], out);
break;
} }
} }
} }