coreldraw_riffinfo.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // coreldraw_riffinfo.h
  2. #ifndef CORELDRAW_RIFFINFO_H_INCLUDED
  3. #define CORELDRAW_RIFFINFO_H_INCLUDED
  4. #include <windows.h>
  5. #include <stdio.h>
  6. #pragma warning(disable: 4996)
  7. // 'ABCD' == FCC('DCBA') 数字(ch4)反序
  8. #define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \
  9. (((DWORD)(ch4) & 0xFF00) << 8) | \
  10. (((DWORD)(ch4) & 0xFF0000) >> 8) | \
  11. (((DWORD)(ch4) & 0xFF000000) >> 24))
  12. #define RIFF_HEADER FCC('RIFF')
  13. #define CDr9_TYPE FCC('CDr9') // RIFF....CDr9vrsn CorelDRAW 9 简体中文版
  14. #define CDR8_TYPE FCC('CDR8')
  15. #define CDR9_TYPE FCC('CDR9')
  16. #define CDRA_TYPE FCC('CDRA') // CorelDRAW 10 文件类型
  17. #define CDRB_TYPE FCC('CDRB')
  18. #define CDRC_TYPE FCC('CDRC')
  19. #define CDRD_TYPE FCC('CDRD') // CorelDRAW X3 (13) 文件类型
  20. #define CDRE_TYPE FCC('CDRE') // CorelDRAW X4 文件类型 , 开始使用 PK文件头 zip打包
  21. #define CDRF_TYPE FCC('CDRF') // CorelDRAW X5
  22. #define CDRG_TYPE FCC('CDRG') // CorelDRAW X6
  23. // 00000000h: 52 49 46 46 C4 AE 00 00 43 44 72 39 76 72 73 6E ; RIFF漠..CDr9vrsn
  24. // 00000010h: 02 00 00 00 84 03 44 49 53 50 2C 28 00 00 08 00 ; ...._DISP__....
  25. #pragma pack(2)
  26. typedef struct coreldraw_riff_head {
  27. FOURCC riff; // 必须为 'RIFF'
  28. DWORD cb; // CorelDRAW 数据文件大小
  29. DWORD file_type; // 一般为 'CDR?'
  30. /*----------------------------------------*/
  31. FOURCC vrsn; // 'vrsn'
  32. DWORD ver_cb;
  33. WORD version; // CorelDRAW 版本,一般 2字节
  34. } RIFF_CDR_TYPE;
  35. #pragma pack(pop)
  36. typedef struct _riffchunk {
  37. FOURCC fcc;
  38. DWORD cb;
  39. } RIFFCHUNK, * LPRIFFCHUNK;
  40. // 获得 CorelDRAW X3文件 为止的版本号
  41. int get_cdrfile_version(const char* cdr_filename);
  42. // 获得 CorelDRAW X3文件 为止 cdr_filename 展开缩略图 bmp_filename
  43. bool cdr_riff_disp2bmp(const char* cdr_filename, const char* bmp_filename);
  44. #endif // CORELDRAW_RIFFINFO_H_INCLUDED