165 lines
6.1 KiB
C
165 lines
6.1 KiB
C
// PDSUnit.h
|
||
|
||
#if !defined(PDSUnit_h)
|
||
#define PDSUnit_h
|
||
|
||
//有关长度单位及精度的说明:1、在公制的长度输入中,最高输入精度为0.01mm,显示的最高精度为0.01mm
|
||
// 2、在英制分数的长度输入中,最高输入精度为1/2048英寸,显示的最高精度为1/2048英寸
|
||
// 3、在英制小数的长度输入中,最高输入精度为0.001英寸,显示的最高精度为0.001英寸
|
||
|
||
//长度单位
|
||
#define UNIT_INCHFRACTION 0 //英制分数
|
||
#define UNIT_INCHDECIMA 1 //英制小数
|
||
#define UNIT_CENTIMETER 2 //公制cm
|
||
#define UNIT_MILLIMETER 3 //公制mm
|
||
#define UNIT_CHINACUN 4 //市制寸
|
||
|
||
//精确度
|
||
//使用英制分数时的精确度,=1 整数,=2 2分数制,=4 4分数制,=8 8分数制,
|
||
// =16 16分数制,=32 32分数制,=64 64分数制,=128 128分数制,
|
||
// =256 256分数制,=512 分数制,=1024 1024分数制,=2048 2048分数制.
|
||
//使用英制小数或公制(cm,mm)时的精确度,=1 精确到整数位,=10 精确到0.1,=100 精确到0.01,
|
||
// =1000 精确到0.001,=10000 精确到0.0001
|
||
#define PRECISION_INTEGER 1 //整数
|
||
#define PRECISION_FRACTION2 2 //2分数制
|
||
#define PRECISION_FRACTION4 4 //4分数制
|
||
#define PRECISION_FRACTION8 8 //8分数制
|
||
#define PRECISION_FRACTION16 16 //16分数制
|
||
#define PRECISION_FRACTION32 32 //32分数制
|
||
#define PRECISION_FRACTION64 64 //64分数制
|
||
#define PRECISION_FRACTION128 128 //128分数制
|
||
#define PRECISION_FRACTION256 256 //256分数制
|
||
#define PRECISION_FRACTION512 512 //512分数制
|
||
#define PRECISION_FRACTION1024 1024 //1024分数制
|
||
#define PRECISION_FRACTION2048 2048 //2048分数制
|
||
#define PRECISION_DECIMAL10 10 //精确到0.1
|
||
#define PRECISION_DECIMAL100 100 //精确到0.01
|
||
#define PRECISION_DECIMAL1000 1000 //精确到0.001
|
||
#define PRECISION_DECIMAL10000 10000 //精确到0.0001
|
||
|
||
//使用英制时,以inch表示的坐标的字符串
|
||
//输入参数:
|
||
// iLength 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以inch为单位的坐标的字符串
|
||
CString InchString(int iLength,int idpmm,int iUnit,int iPrecision);
|
||
|
||
//以cm表示的坐标的字符串
|
||
//输入参数:
|
||
// iLength 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以cm为单位的坐标的字符串
|
||
CString CentimetreString(int iLength,int idpmm,int iPrecision);
|
||
|
||
//以mm表示的坐标的字符串
|
||
//输入参数:
|
||
// iLength 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以mm为单位的坐标的字符串
|
||
CString MillimetreString(int iLength,int idpmm,int iPrecision);
|
||
|
||
//以寸表示的坐标的字符串
|
||
//输入参数:
|
||
// iLength 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以寸为单位的坐标的字符串
|
||
CString ChinaCunString(int iLength,int ilpmm,int iPrecision);
|
||
|
||
//将以内部单位1/idpmm毫米为单位的长度值转换为以当前使用制式的长度值的字符串
|
||
//输入参数:
|
||
// iLength 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以当前使用制式为单位的坐标的字符串
|
||
CString InternalUnitToString(int iLength,int idpmm,int iUnit,int iPrecision);
|
||
|
||
//将以内部单位(1/idpmm)*(1/idpmm)毫米2为单位的面积值转换为
|
||
//以当前使用的度量单位的面积字符串
|
||
//输入参数:
|
||
// dArea 以(1/idpmm)*(1/idpmm)毫米2为单位的面积值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以当前使用的度量单位的面积字符串
|
||
CString AreaToString(double dArea,int idpmm,int iUnit,int iPrecision);
|
||
|
||
//将以Inch为单位的数字串转换以内部单位1/idpmm毫米为单位的数字
|
||
//输入参数:
|
||
// strInch 以inch为单位的坐标的字符串
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
// bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以1/idpmm毫米为单位的坐标值
|
||
int InchStrToInternalUnit(CString strInch,int idpmm,int iUnit,BOOL bEnableDefaultDenominator,int iPrecision);
|
||
|
||
//将以当前使用制式的长度字符串转换为以1/idpmm毫米为单位的长度值
|
||
//输入参数:
|
||
// string 以当前使用制式为单位的坐标的字符串
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
// bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 以1/idpmm毫米为单位的坐标值
|
||
int StringToInternalUnit(CString string,int idpmm,int iUnit,BOOL bEnableDefaultDenominator,int iPrecision);
|
||
|
||
//将英寸分数形式的字符串转化成小数
|
||
//输入参数:
|
||
// string 英寸分数形式的字符串
|
||
// bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母
|
||
// iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义)
|
||
//返回值:
|
||
// 英寸的小数值
|
||
double InchFractionStringToDecimal(CString string,BOOL bEnableDefaultDenominator,int iPrecision);
|
||
|
||
//将分数字符串转化成小数
|
||
//输入参数:
|
||
// string 分数表示的字符串
|
||
//返回值:
|
||
// 小数值
|
||
double FractionStringToDecimal(CString string);
|
||
|
||
//取得当前使用的长度单位名称字符串
|
||
//输入参数:
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
//返回值:
|
||
// In. 当iUnit=UNIT_INCHFRACTION
|
||
// In. 当iUnit=UNIT_INCHDECIMA
|
||
// cm 当iUnit=UNIT_CENTIMETER
|
||
// mm 当iUnit=UNIT_MILLIMETER
|
||
CString GetUnitStr(int iUnit);
|
||
|
||
//20111130 将以当前使用制式的长度转换为以1/idpmm毫米为单位的长度值
|
||
//输入参数:
|
||
// dValue 以当前使用制式为单位的值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
//返回值:
|
||
// 以1/idpmm毫米为单位的值
|
||
//说明:
|
||
// dValue的单位与iUnit一致,即dValue按照iUnit单位计算得到的值
|
||
int DoubleToInternalUnit(double dValue, int idpmm, int iUnit);
|
||
|
||
//20111130 将以内部单位1/idpmm毫米为单位的长度值转换为以当前使用制式的长度值的浮点数
|
||
//输入参数:
|
||
// iValue 以1/idpmm毫米为单位的坐标值
|
||
// idpmm 每毫米的逻辑单位数
|
||
// iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义)
|
||
double InternalUnitToDouble(int iValue, int idpmm, int iUnit);
|
||
|
||
#endif
|