int readed_bytes_per_line = 0;
int readed_lines = 0;
+int _sane_kds_s2000w_net_find_first_data_byte(const char* data)
+{
+ const int header_spaces = 3;
+ const char space = 0x0a;
+ int space_count = 0;
+ int byte_count = 0;
+
+ while(space_count < header_spaces) {
+ if (data[byte_count] == space) {
+ space_count++;
+ }
+
+ byte_count++;
+ }
+
+ return byte_count;
+}
+
SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
{
*version_code = SANE_VERSION_CODE(1, 0, 0);
SANE_Int max_length, SANE_Int* length)
{
printf("is all scanned: %i\n", current_metadata.scanned_all_complete);
- char* image_data = (char*) current_metadata.image;
+
+ int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(current_metadata.image);
+
+ if (read_size <= 0) {
+ read_size += skip_header_bytes;
+ }
if (readed_lines >= current_metadata.lines ) {
printf("Image is loaded\n");
}
*length = maxlen;
- memcpy(data, current_metadata.image + read_size, *length);
+ memcpy(data, current_metadata.image + skip_header_bytes + read_size, *length);
readed_bytes_per_line += *length;
read_size += *length;