#pragma once


#ifdef HFTN_EXPORTS
#define HFTN_API __declspec(dllexport)
#else
#define HFTN_API __declspec(dllimport)
#endif

#include <rvb\rvtypes.h>

#define MAX_CMYK_GRAY  100


//color dither
#define RV_CD_DISPERSE_64      0
#define RV_CD_DISPERSE_16      1
#define RV_CD_DISPERSE_9       2
#define RV_CD_CLUSTER_19       3
#define RV_CD_BAYER_OPTIMAL    4
#define RV_CD_DEFAULT_MATRIX   -1


//HFTN_API void  rvRgb2Cmyk(RvByte r, RvByte g, RvByte b, RvByte& c, RvByte& m, RvByte& y, RvByte& k);

HFTN_API void  rvRgb2Cmyk(RvByte r, RvByte g, RvByte b, RvByte& c, RvByte& m, RvByte& y, RvByte& k);
HFTN_API RvRgb rvCmyk2Rgb(RvByte c, RvByte m, RvByte y, RvByte k);

HFTN_API RvImage rvGetCyanChannel(const RvImage image, RvImage imDest =NULL);
HFTN_API RvImage rvGetMagentaChannel(const RvImage image, RvImage imDest =NULL);
HFTN_API RvImage rvGetYellowChannel(const RvImage image, RvImage imDest =NULL);
HFTN_API RvImage rvGetBlackChannel(const RvImage image, RvImage imDest =NULL);

HFTN_API RvImage rvCmykMergeRgb(const RvImage imCyan, const RvImage imMagenta, const RvImage imYellow, const RvImage imBlack, RvImage imDest =NULL);



HFTN_API void rvColorDither(RvImage image, int type, int level );

//该函数可以抖动cmyk通道
HFTN_API void rvDitherSingle(RvImage image, int minGray, int maxGray, int type, int targetLevel );
//
//// 此类是从 hftn.dll 导出的
//class HFTN_API Chftn {
//public:
//	Chftn(void);
//	// TODO: 在此添加您的方法。
//};
//
//extern HFTN_API int nhftn;
//
//HFTN_API int fnhftn(void);
