FolderFeeder.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include <queue>
  3. #include "basic_struct.h"
  4. #include "feeder.h"
  5. /************************************************************************/
  6. /* 文件夹图像送入器 */
  7. /* 2014年12月9日16:04:06 */
  8. /* 作者:唐林 */
  9. /************************************************************************/
  10. class CFolderFeeder:public IFeeder
  11. {
  12. public:
  13. CFolderFeeder(void);
  14. ~CFolderFeeder(void);
  15. void SetReStartConfig(CString file,bool flag);
  16. void SetFolder( const std::string &img_dir );
  17. void SetPageNumber(int nCount){ m_nPageNumber = nCount; };
  18. virtual bool GetNext( BOOL wait,IplImage* & img, feeder_param& param );
  19. virtual BOOL SupportPause( void );
  20. int CheckFileCountValid();//检查文件夹是否合法
  21. protected:
  22. virtual ServiceState OnStarting( void );
  23. virtual ServiceState OnRunning( void );
  24. private:
  25. int m_count;
  26. std::string root_path;
  27. //当前正在查找的堆栈
  28. std::queue<CString> path_stack;
  29. //当前正在查找的堆栈
  30. CFileFind finder;
  31. CString m_reStartFile;
  32. bool m_reStartFlag;
  33. // 当前查找类型
  34. enum{unstart,file,dir,complete}m_cur_find_type;
  35. enum FILE_TYPE{FT_NONE,FT_JPG,FT_JPEG,FT_PNG,FT_BMP,FT_TIF,FT_TIFF,FT_END};
  36. int current_file_type;
  37. //状态同步锁
  38. RTL_CRITICAL_SECTION m_img_lock;
  39. BOOL m_finished;
  40. IplImage* m_img;
  41. feeder_param m_next_param;
  42. int m_nPageNumber;//试卷页数
  43. };