⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 labstr.h

📁 图像处理的压缩算法
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------------------*
 *	File Name: 	labstr.h     													*
 *	Purpose:	basic string and date/time definitions		   					*
 *   	Date:		1/1/92														* 
 *  	Copyright Microcal Software Inc. 1992-1995								*
 *	Modification log															*
 *	CPY v3.782 added this header												*
 *	CPY v3.782 DATE_INC_BUG 4/16/95, change LABUTIL_date2str to use				*
 *		NULL lpOutput for management calls										*
 *	CPY v3.782 CHAR_POSITION 4/17/95, add LABUTIL_strchr const					*
 *	CPY v3.782 HH_MM_SS_DDD LABUTIL_time2str add NULL buffer for cntrl info		*
 *		 and settings															*
 *	CPY v3.783 DATE_DIALOG_BUG 4/26/95, need to move ADD_TIME bit and give		*
 *		more space to data format bits to differentiate between 1/1/91 and		*
 *		Mon																		*
 *	CPY v3.8	5/30/95, CPP, add C++ support									*
 *	CPY v3.8 6/1/95 STRLIST, need to check already defined						*
 *	EJP v3.8 6-6-95 GETFILESEC, added LABUTIL_GetFileSection prototype			*
 *	EJP v3.8 7-5-95 GETMEMSEC, add GetSection, ...Entry, ...Ptr prototypes		*
 *	EJP v3.8 8-4-95 GETSET_CURR_FILE add prototype for exported function.		*
 *	EJP v3.821 09-06-95 GET_PATH, add msg parameter to prototype.				*
 *	CPY v3.85 11/7/95 DATE_INC_ERR
 *	CPY v3.98 11/14/95 ROUND_QUARTER, inc=year, minor=quarter still has problem
 *	ML 5/1/96 PUT_IT_INTO_LABUTIL_SO_THAT_EVERYBODY_CAN_USE_IT					*
 *	CPY v4.11 6/26/96 ADD_FUNC_PROTOTYPE										*
 *	EJP v4.13 07-25-96 HUGE_KEYWORD_OBSOLETE_IN_32BIT
 *	CPY v4.133 9/16/96 CLEAN_UP_AFTER_JLIU_ANU_FILE_OPEN_BUG_32					*
 *	CPY b1666 v4.93 2/22/97 HALF_WIDTH_J_CHARACTERS								*
 *  YN  v4.94 2/28/97  MOVED_ERR_SIGN_TO_OUTIL.DLL								*
 *	ANU	v4.94 3/06/97 B1794	CHANGED_OPENFILE_TO_CREATEFILE						*
 *  JLIU v4.979  5/2/97 GET_TEXT_WITH_LEAD_SPACE								*
 *  JLIU 4.998 t7/14/97 b2480 READ_DATE_TIME_MODIFY								*
 *	ML 10/27/97 UNIFIED_STRING_MANIPULATION_MBCS								*
 *	RB 6/24/98 t3594 v6.0125 DATE_TIME_CUSTOM_FORMAT							*
 *	CPY v6.0130 b4228 9/25/98 PLOT_A_SUPPORT_MORE_THAN_10_NUMBERS				*
 *	RB 11/16/98 t4121 v6.0138 CURRENT_DATE_IN_CUSTOM_FORMAT_IN_DIALOG			*
 *	RB 3/16/99 t3668 v6.0174 MONTH_DAY_FORMAT_WRONG_INTERPRETATION_IN_JAPANESE	*
 *	EJP 03-23-99 v6.0176 t5005 IMPLEMENT_ABILITY_TO_RESET_CUSTOM_DATE_FORMATS	*
 *------------------------------------------------------------------------------*/      

///CPY v3.8	5/30/95, CPP, add C++ support
#ifndef	_LABSTR
#define	_LABSTR

#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif	/* __cplusplus */
///

#ifndef	_OTYPES
#define MAXLINE			80
#define COM_LENGTH		380
#define NAME_SIZE		25
#define SHORT_NAME_SIZE		12
#define	WORD_SIZE		40

	#ifndef	USHORT
	#define	USHORT	WORD
	#define	WWORD	WORD
	#define	ULONG	DWORD

	typedef	USHORT	FAR *LPUSHORT;
	typedef	ULONG	FAR *LPULONG;
	#endif

/// EJP v4.13 07-25-96 HUGE_KEYWORD_OBSOLETE_IN_32BIT
///typedef	BYTE	huge	*HPSTR;
#ifdef _WIN32
	typedef	BYTE	FAR		*HPSTR;
#else // !_WIN32
	typedef	BYTE	huge	*HPSTR;
#endif // _WIN32
/// end HUGE_KEYWORD_OBSOLETE_IN_32BIT

typedef double FAR *LPDOUBLE;
#endif

// def only for DLLs
#define	LABLOCAL	static	int
#define	LABGLOBAL	int

#ifdef	WIN30
#define HFILE	int
#define	HGLOBAL	HANDLE
#define	_tzset()	tzset()
#define	_timezone	timezone
#define	_timeb		timeb
#define	_getcwd(x,y)	getcwd(x,y)
#define	_ftime(x)	ftime(x)
#define	LAB_NO_HWIRTE
#endif

#define	MEM_COPY_N(d,s,n)	LABUTIL_MemCopy(s,d,n)

		/* lpRemains = LABUTIL_next_token(lpBuffer,lpSource); 
		 */
LPSTR   FAR PASCAL LABUTIL_next_token(LPSTR,LPSTR);
///CPY v4.11 6/26/96 ADD_FUNC_PROTOTYPE
//LPSTR   FAR PASCAL LABUTIL_next_token_sep(LPSTR,LPSTR);
LPSTR	FAR PASCAL LABUTIL_next_token_sep(LPSTR lpBuffer,LPSTR lpstr,LPSTR lpList);
///
LPSTR   FAR PASCAL LABUTIL_next_word(LPSTR,LPSTR);
	/* similar to next_token but does not recorgnize quotes */

void FAR PASCAL LABUTIL_strip(LPSTR);/* remove all white spaces in str */
#define strip(str)                              LABUTIL_strip(str)

		/* LABUTIL_real2str(input,lpBuffer,lpFormat);
		 * lpFormat: "*" free format
		 *                       "5.2f" 10.00
		 *                       "5.2g" 1E1
		 */
void    FAR PASCAL LABUTIL_real2str(double,LPSTR,LPSTR);
		/*      
		 * round a real number
		 * to specified number of significent
		 * digits.
		 * out = LABUTIL_real2real(in,n_decimal_pts);
		 */
double  FAR PASCAL LABUTIL_real2real(double,short);

	/* This routine is similar to the C-LIB
	 * routine gcvt
	 * converts a real number to a string
	 * by specifying a significant digits
	 */
/*double        FAR     PASCAL LABUTIL_GCVT(double,int,LPSTR);*/

#define DECIMAL_MAX     1E12
#define DECIMAL_MIN     1E-6
#define IS_D            0x01
#define IS_G            0x02
#define IS_E            0x04
#define IS_GCVT         0x08
#define REM_END_ZEROS   0x10


#define IS_UPPER        0x80
#define IS_LOWER        0x00

#define FORMAT_MASK     0x0F

	/*First parameter is the number to be converted, next the format
	given as IS_E or IS_D,then the total no of digits, and then the no
	of digits after the decimal point.The last parameter is the string
	where the result is placed */

int     FAR     PASCAL LABUTIL_real_str(double,BYTE,BYTE,BYTE,LPSTR);

#define LABUTIL_GCVT(x,ndigits,lpstr)  LABUTIL_real_str(x,IS_GCVT,ndigits,0,lpstr)

void    FAR     PASCAL LABUTIL_int2fixstr(long,int,LPSTR);
double  FAR     PASCAL LABUTIL_str2real(LPSTR);
int     FAR     PASCAL LABUTIL_cvtstr2real(LPSTR,double FAR *);
int     FAR     PASCAL LABUTIL_cvtstr2int(LPSTR,int FAR *);
long    FAR     PASCAL LABUTIL_str2int(LPSTR);
LPSTR   FAR     PASCAL LABUTIL_int2str(long);
long    FAR     PASCAL LABUTIL_hexstr2int(LPSTR);

		/* convert time in 10ms into a 
		 * a string
		 */


///	CPY v4.133 9/16/96 CLEAN_UP_AFTER_JLIU_ANU_FILE_OPEN_BUG_32
DLL_EXPORT(int) LABUTIL_32WriteFile(HFILE hFile,LPVOID lpBuffer,DWORD dwBytes);

///ANU	v4.94 3/06/97 B1794	CHANGED_OPENFILE_TO_CREATEFILE
//DLL_EXPORT(int) LABUTIL_32CreateFile(LPSTR	lpFilename,	DWORD	dwMode); 
DLL_EXPORT(int) LABUTIL_32FileCreate(LPCSTR	lpFilename,	DWORD	dwMode, DWORD 	dwShare );

#define  LABUTIL_32CreateFile(lpFilename, dwMode) \
			LABUTIL_32FileOpen(lpFilename, dwMode, 0,  OPEN_ALWAYS);
	
DLL_EXPORT(int) LABUTIL_32FileOpen(LPCSTR lpFilename,DWORD dwMode,DWORD dwShare,DWORD dwOpenAs );

DLL_EXPORT(int) LABUTIL_32FileTest(LPCSTR lpFilename);

///end 	CHANGED_OPENFILE_TO_CREATEFILE
///

/*
#define T2S_AMPM        0x0100   otherwise in 24 hours 
lowbyte defined the format 
enum {T2S_HOURS = 0,T2S_MIN,T2S_SEC,T2S_SUBSEC};
*/

	
enum {T2S_SEC=1,T2S_SUBSEC,T2S_AMPM };


		/*      Find character in string
		 *
		 * lpChar = LABUTIL_strchr(lpSource,theChar,cntrl);
		 */
LPSTR   FAR PASCAL LABUTIL_strchr(HPSTR,short,USHORT);

		/* cntrl is one of the followings */
#define SC_IGNORE_QUOTE 0x0001/* otherwise, those hidden in (), {}, [] will not be found */
#define SC_FIND_LAST    0x0002/* search from the end of the string */
#define SC_FIND_INSIDE  0x0004
#define SC_BEG_END_SPACE        0x0010
/// CPY v3.782 CHAR_POSITION
#define	SC_IGNORE_CASE	0x0020
///
		/* special characters for theChar */
#define SC_CHAR_SPACE           -1 /* any white space */
#define SC_CHAR_OP                      -2 /* any of +,-,*,/,^ */

/// ML 5/1/96 PUT_IT_INTO_LABUTIL_SO_THAT_EVERYBODY_CAN_USE_IT
#define		CHAR_POSITION_FROM_BEG(str, c)	LABUTIL_strchr((HPSTR)str, c, SC_IGNORE_QUOTE)
#define		CHAR_POSITION_FROM_END(str, c)	LABUTIL_strchr((HPSTR)str, c, SC_FIND_LAST | SC_IGNORE_QUOTE)
/// end PUT_IT_INTO_LABUTIL_SO_THAT_EVERYBODY_CAN_USE_IT


		/* get string inside possible
		 * parenthesis: (string) -> string
		 *
		 *      lpString = LABUTIL_str_inside(lpSource);
		 */
#define	get_next_argument(str)	LABUTIL_strchr(str,',',SC_IGNORE_QUOTE|SC_BEG_END_SPACE)        //dsb 3.69 for FUM labcom etc.

///  JLIU v4.979  5/2/97 GET_TEXT_WITH_LEAD_SPACE								
///LPSTR   FAR PASCAL LABUTIL_str_inside(LPSTR);
LPSTR   FAR PASCAL LABUTIL_str_inside(LPSTR, short);
///end GET_TEXT_WITH_LEAD_SPACE




		/* convert \xhh type into ascii
		 * also support \n, \t, \r, \d
		 */
int	FAR PASCAL	LABUTIL_str2ascii(LPSTR);

		/* Addition to the Windows GetPrivateProfile functions
		 * Please refer to Windows SDK for the others
		 */
double  FAR     PASCAL  LABUTIL_GetPrivateProfileReal(LPSTR,LPSTR,double,LPSTR);

#define LABDATE_HHMM    0
#define LABDATE_HHMMSS  2
#define	LABDATE_HHMMSS_NUM	9
#define	LABDATE_HHMM_NUM	8

#define LABDATE_HHMMPM  5

/// CPY v3.782 HH_MM_SS_DDD
//void    FAR PASCAL LABUTIL_time2str(double, USHORT, LPSTR); 
int    FAR PASCAL LABUTIL_time2str(double, USHORT, LPSTR);
/// enabled when lpstr is LPNULL
#define	LABT_CNTRL_GET_FULL_PREC_INDEX	0x1000
#define	LABT_SET_DIVIDER				0x0000	
///



double  FAR PASCAL LABUTIL_str2time(LPSTR,USHORT);
double  FAR PASCAL LABUTIL_str2date(LPSTR,USHORT,USHORT);
/// RB 3/16/99 t3668 v6.0174 MONTH_DAY_FORMAT_WRONG_INTERPRETATION_IN_JAPANESE
double FAR PASCAL LABUTIL_str2date_ex(LPSTR lpdatestr,WORD cntrl,WORD nFmt);
/// end MONTH_DAY_FORMAT_WRONG_INTERPRETATION_IN_JAPANESE
USHORT    FAR PASCAL LABUTIL_date2str(double,USHORT,LPSTR);

/// RB 6/24/98 t3594 v6.0125 DATE_TIME_CUSTOM_FORMAT
#define	NUMBER_OF_DATE_CUSTOM_FORMATS			2
#define	DATE_CUSTOM_FORMAT_BEGIN				NUM_DATE_FORMAT
#define	DATE_CUSTOM_FORMAT_END					(DATE_CUSTOM_FORMAT_BEGIN + NUMBER_OF_DATE_CUSTOM_FORMATS)

WORD    FAR PASCAL LABUTIL_date2str_custom(double rDate, int nCustomFormat, LPSTR lpszFormattedDate);

#define	SET_CUSTOM_DATE_FORMAT					0x00000000
#define	GET_CUSTOM_DATE_FORMAT					0x00000001

/// EJP 03-23-99 v6.0176 t5005 IMPLEMENT_ABILITY_TO_RESET_CUSTOM_DATE_FORMATS
#define CDF_INITIALIZE							0x00000002
/// end IMPLEMENT_ABILITY_TO_RESET_CUSTOM_DATE_FORMATS

#define	CHECK_CUSTOM_DATE_FORMAT				0x00000010 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -