diff --git a/sane/scanner.cpp b/sane/scanner.cpp index 65bf664..fefbcb1 100644 --- a/sane/scanner.cpp +++ b/sane/scanner.cpp @@ -85,13 +85,13 @@ namespace callback }SCNINST; std::vector g_scanner_instances; - int sane_event_callback( // 注册回调的对象,需要保证该回调是多线程安全的 - SANE_Handle hdev // 产生事件的设备句柄 + int sane_event_callback( // 注册回调的对象,需要保证该回调是多线程安全? + SANE_Handle hdev // 产生事件的设备句? , int code // 回调事件代码 - , void* data // 回调事件数据,根据事件代码有所不同,参照具体事件定义 + , void* data // 回调事件数据,根据事件代码有所不同,参照具体事件定? , unsigned int* len // 数据长度(字节),或者event_data的缓冲区长度,详细请看相应的事件代码 - , void* param // 用户自定义数据,与调用sane_init_ex传入时的保持一致 - ) // 返回值依不同的事件代码而定,通常为“0” + , void* param // 用户自定义数据,与调用sane_init_ex传入时的保持一? + ) // 返回值依不同的事件代码而定,通常为?? { std::lock_guard lock(cb_lock_); std::vector::iterator it = std::find(g_scanner_instances.begin(), g_scanner_instances.end(), hdev); @@ -207,10 +207,10 @@ namespace callback , {SANE_STD_OPT_NAME_FOLD_TYPE , OPTION_TITLE_DZMS} , {SANE_STD_OPT_NAME_COLOR_CORRECTION , OPTION_TITLE_SPJZ} }, - g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出(正常颜色为:0-黑色;1-白色) - , {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图像 - 除色 + g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出(正常颜色为?-黑色?-白色? + , {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图?- 除色 , {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , "\350\207\252\345\212\250\346\220\223\347\272\270\345\274\272\345\272\246"} // 自动搓纸强度 - , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , "\346\220\223\347\272\270\351\230\210\345\200\274"} // " 搓纸阈值" + , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , "\346\220\223\347\272\270\351\230\210\345\200\274"} // " 搓纸阈? }; const char* option_title_2_name(const char* title) { @@ -347,7 +347,7 @@ namespace callback // SANE_EVENT_IMAGE_OK - void* unused, be NULL, flag - unused, be 0 static HMODULE hui = NULL; int (*choose_scanner)(const std::vector& devs) = NULL; // blocked. return selected DEVQUE::id or -1 if user cancelled - char* (*apply_current_config)(const char* dev_name, SANE_Handle device, LPSANEAPI api) = NULL; // 应用设备的当前配�? + char* (*apply_current_config)(const char* dev_name, SANE_Handle device, LPSANEAPI api) = NULL; // 应用设备的当前配? int (*show_setting_ui)(SANE_Handle device, HWND parent, LPSANEAPI api, const char* devname, bool with_scan, std::function callback) = NULL; int (*show_progress_ui)(HWND parent, std::function callback, std::function* notify) = NULL; int (*show_messagebox_ui)(HWND parent, int event, void* msg, int flag) = NULL; @@ -2672,6 +2672,15 @@ COM_API_IMPLEMENT(scanner, IScanImg*, take_first_image(twain_xfer xfer)) { scanned_img* img = images_.take(); + if (img) + { + img->prepare_data_for_transfer(xfer); + + wchar_t msg[128] = { 0 }; + swprintf_s(msg, _countof(msg) - 1, L"Begin transferring image %d of %p\r\n", fetch_imgs_ + 1, img); + log_info(msg, 1); + } + return dynamic_cast(img); } COM_API_IMPLEMENT(scanner, bool, get_first_image_header(SANE_Parameters* header, size_t* bytes, int* dpi)) @@ -2706,6 +2715,12 @@ COM_API_IMPLEMENT(scanner, int, image_fetched(IScanImg* tx)) else if (indicator_.get()) indicator_->notify_data_arrived(false); + { + wchar_t msg[128] = { 0 }; + swprintf_s(msg, _countof(msg) - 1, L"Transferring image %d of %p finished.\r\n", fetch_imgs_, tx); + log_info(msg, 1); + } + return 0; } @@ -3482,7 +3497,7 @@ int scanner::handle_device_event(int ev_code, void* data, unsigned int* len) log_info(msg, 1); } } - //else if (ev_code == SANE_EVENT_ERROR) // 屏蔽,在停止扫描时展示信息 - 2023-05-30 + //else if (ev_code == SANE_EVENT_ERROR) // 屏蔽,在停止扫描时展示信?- 2023-05-30 //{ // if (callback::show_messagebox_ui && *len) // {