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

📄 mocadll.h

📁 图像处理的压缩算法
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------------------*
 * File Name:	MOCADLL.h														*
 * Purpose:		Microcal Objects and classes									*
 * Creation:	Original by Tim Ding and Dr. C. P. Yang, 4/15/95				* 
 * Copyright Microcal Software Inc. 1995,2000									*
 *																				*
 * Modification log																*
 * revised by TD on 3/27/2000													*
 * EJP 07-06-2000 t8153 GET_REGISTRATION_INFO									*
 * EJP 08-15-2000 t8153 v6.1026 WCB_GET_USER_INFO								*
 * EJP 01-09-2001 v6.1071 t8790 LABTALK_MANAGER_UI								*
 * EJP 03-09-2001 t8865 IMPLEMENT_IDE_VARIABLE_WINDOW							*
 * CPY 3/15/01 7.0 PRINT_STRING													*
 * SY 03-22-2001 ADD_GETCHILDREN_FUNCTION										*
 * SY 04-09-2001 t9041 SORT_WORKSPACE_ITEM										*
 * SY 05-07-2001 t9131 ADD_IDE_HANDING_TEMP_FILES								*
 * SY 07-25-2001 t9336 OIDE_GUI_IMPROVEMENT										*
 * LY	12/14/01 t9798 SERIESPTR_MANAGER										*
 * EJP 02-27-2002 QA70_985 ENABLE_SOFTDEV_PDF									*
 * YuI 5/22/02 v7.0303 QA70-1582 NLSF_CODE_BUILDER_COMMUNICATION				*
 * AW 07/01/02 v7.0333 QA70-2116 MORE_WORK_ON_NAG_DLL_SUPPORT					*
 * YuI 8/30/02 v7.0387 QA70-2841 LINKS_MANAGER_FOR_OBJECTS						*
 * SY 09-25-02 QA70-2437 v7.0402 MULTIFOLDERED_OC_WORKSAPCE_GUI					*
 * TD 12-05-02 QA70-3060 v7.0452 SEND_MSG_TO_MOCA_WRAPPERS						*
 *	ML 5/29/2003 QA70-4562 CURVE_EXTENSION_WITH_RELATED_DATASETS				*
 *	RVD 6/13/2003 QA70-4650 v7.0601 OBJECT_PROPERTY_ACCESS						*
 *------------------------------------------------------------------------------*/      
#ifndef	_MOCADLL_H
#define	_MOCADLL_H

////////////////////////////////////////////////////////////
////
////Macros For Multiple Usage, 
////1)Using as LIB
////2)Building the LIB
////3)Building for internal use

//1)	// Using the lib 
#ifdef		__USE_MOCA_AS_LIB__
	#define		__MOCA_AS_LIB__
	#define		MODLL_DEMO
#endif		// __USE_MOCA_AS_LIB__


//2)	// Building a lib or using it 
#ifdef		__MOCA_AS_LIB__
	#pragma	message(">>>>>>>>>>>>>>>> __OMOCA_AS_LIB__ defined <<<<<<<<<<<<<<<<<<<<<<<<")
	#define		MOCA_EXTERNAL_SUPPORT
#endif		// __MOCA_AS_LIB__

//3)	//Building  for internal Use

#ifndef				MODLL_DEMO	  
	#include		"config.h"
#endif
#ifdef			MOCA_SUPPORT_FOR_INTERNAL_USE
	#undef			MOCA_EXTERNAL_SUPPORT		
#endif	


#if	defined(MOCA_SUPPORT_FOR_INTERNAL_USE) && defined(OK_AS_EXTDLL) 
	#define		MOCA_EXPORT_IMPORT					__declspec(dllexport)
#elif	defined(MOCA_EXTERNAL_SUPPORT)			
	#define		MOCA_EXPORT_IMPORT
#else
//	#define		MOCA_EXPORT_IMPORT					__declspec(dllexport)
	#define		MOCA_EXPORT_IMPORT					__declspec(dllimport)
#endif			


///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////begin macros
#ifndef			LPCOKSTR
	#define		LPCOKSTR		LPSTR
#endif
#define			MOCA_EXP_CLASS						MOCA_EXPORT_IMPORT
//#define			MOCA_EXP_FUNC						MOCA_EXPORT_IMPORT
#define			DISPLAY_MESSAGE(lpszMessage)		ScriptMessage(lpszMessage)
#define			MAX_DOUBLE						1.7E+308
#define			UNTYPED_DIVIDE(a, b, result)  {                                          \
 				if (fabs(b) >= 1. || fabs(a) < fabs(b) * MAX_DOUBLE)  \
 					(result) = (a) / (b);                                    \
 				else                                                         \
 				    (result) = NANUM;                                        \
			}	
					   
/// ML 5/29/2003 QA70-4562 CURVE_EXTENSION_WITH_RELATED_DATASETS
#ifndef		MOCA_DIVIDE
	#define		MOCA_DIVIDE_DEF(_num, _den, _def)	((fabs(_den) >= 1. || fabs(_num) < fabs(_den) * MAX_DOUBLE) ? (_num) / (_den) : (_def))
	#define		MOCA_DIVIDE(_num, _den, _def)		MOCA_DIVIDE_DEF((_num), (_den), NANUM)
#endif		// MOCA_DIVIDE
/// end CURVE_EXTENSION_WITH_RELATED_DATASETS




//#define			MOCA_OUT_MSG(str)						ScriptMessage(str)
//#define			MOCA_REAL_TO_STR(szBuf,vv)				RealToString(vv, szBuf);
//#define			MODLL_EXECUTE_SCRIPT(mobj, str) mobj->ExecuteScript(str);
//#define			ODLL_FN
//#define			PROPFNBASE							CObject
//#define			MO_RETURN_YES						EGOR_YES
//#define			MO_RETURN_NO						EGOR_NO
//#define			MO_RETURN_ERR						EGOR_ERR 
//#define			okThisFuncType
//#define		NORMAL_PROB(x, mean, sigma)			GaussianDistribution(x, mean, sigma)
//#define		MOABS(arg)						fabs(arg)
/*#ifdef			_DEBUG	
	#define		DEBUG_MSG(str)	{char szTemp[50];wsprintf(szTemp,"%s:%s",(LPSTR)SZCLASS_NAME,(LPSTR)str);OUT_MSG(szTemp);}
#else
	#define		DEBUG_MSG(str)
#endif
*/



////end macros
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////#includes

//#include	<afxwin.h>         // MFC core and standard components
#include	<math.h> 
#include	"moapi.h"
#include	"llist.h"	
#include	"orgdll.h"
#include	<afxtempl.h> 

#include    "mocanagshare.h"

////end include files
////////////////////////////////////////////////////////////////////////

class	MOCARecorder;


/// EJP 03-09-2001 t8865 IMPLEMENT_IDE_VARIABLE_WINDOW
//class MOCA_EXP_CLASS COKLTObj;
class COKLTObj;
typedef COKLTObj * COKLTObjPtr;
typedef CArray<COKLTObjPtr, COKLTObjPtr> COKLTObjPtrArray;
/// end IMPLEMENT_IDE_VARIABLE_WINDOW
/// TD 5-30-02 QA70-1336 v7.0312 SAVING_OC_COMPILED_CODE
#include "OKCONST.H"
/////////////////////////////////////////////////////////////////////////////////
// 	CLTArchiveException (class)
//	
//	This class is used to through Origin C Specific exceptions while archiving
//
class CLTArchiveException : public CException
{
	DECLARE_DYNAMIC(CLTArchiveException)

public:

	enum
	{
		NoError,
		ErrFileIdentifier,
		ErrFileVersion,
		ErrFileModified,
		ErrFnBodyCompile,
		ErrGeneric
	};

	CLTArchiveException();
	~CLTArchiveException();

public:

	void	SetError(int nError);
	int		GetError();

private:

	UINT m_nError;

};

/////////////////////////////////////////////////////////////////////////////////
// 	CLTPtrReferences
//
//	This Map object stores the refernces to a pointer loaded by CArchive
//	the storage keeps adding refernce until the owner intervenes -- in 
//	the process the owner may decide to replace the loaded object with
//	another new object, update all refernces and stop addition of future refrences
//
//	Only used by the CLTArchive loading process, storing does not use this
//
class CLTBase;

typedef  CArray<CLTBase**, CLTBase**>	ArrLTReferences;
class MOCA_EXP_CLASS CLTPtrReferences 
	: public CMap<CLTBase*, CLTBase*, ArrLTReferences*, ArrLTReferences*>
{
public:

	CLTPtrReferences();
	~CLTPtrReferences();

public:

	void AddReference(CLTBase** pLTPtrRef);
	void MarkEndOfAddingRef(CLTBase* pLTPtr);
	void CleanupRefsTo(CLTBase* pLTPtr);
	void UpdateRefernces(CLTBase* pLTPtrOld, CLTBase* pLPtrNew);

	bool Exist(CLTBase* pLTPtr);
	bool RemoveReference(CLTBase** pLTPtrRef);
	bool IsAddMoreRefernces(CLTBase* pLTPtr);
};

/////////////////////////////////////////////////////////////////////////////////
// 	CLTArchive
//
//	We may want to add more functions, partucularly once related to 
//  Forward compality of First and Second kind
//
class CLTPtrContainersBase;
//

class MOCA_EXP_CLASS CLTArchive
	: public CArchive
{
public:

	CLTArchive(CFile* pFile, UINT nMode);
	~CLTArchive();

public:

	// insertion operations
	void DoArchive(BYTE& by);
	void DoArchive(WORD& w);
	void DoArchive(LONG& l);
	void DoArchive(DWORD& dw);
	void DoArchive(float& f);
	void DoArchive(double& d);
	void DoArchive(int& i);
	void DoArchive(short& w);
	void DoArchive(char& ch);
	void DoArchive(unsigned& u);
	/// AW 05/12/03 QA70-4430 v7.0582 OC_COMPILED_FILE_SUPPORT 
	void DoArchive(tagOneOCcomplex& u);
	void DoArchive(LPVOID *pData, UINT &nSize);
	/// END OC_COMPILED_FILE_SUPPORT 
	/// RVD 6/13/2003 QA70-4650 v7.0601 OBJECT_PROPERTY_ACCESS
	void DoArchive(CUIntArray& array);
	/// end OBJECT_PROPERTY_ACCESS

	void DoArchive(CString & str);
	void DoArchive(CLTBase ** pLTBase);
	void DoArchive(CLTPtrContainersBase & LTPtrs);
	void DoArchive(CLTBase ** pLTBase, bool bPtrOwner);
	void DoArchive(CLTPtrContainersBase & LTPtrs, bool bPtrOwner);
	
	
	void ThrowException(UINT nError = CLTArchiveException::ErrGeneric);

	void CleanupRefsTo(CLTBase* pLTPtr);
	void UpdateRefernces(CLTBase* pLTPtrOld, CLTBase* pLPtrNew);
	bool AddRemoveRefFromMap(CLTBase** pLTPtrRef, bool bAdd = true);

	bool IsKindOf();

	UINT GetSavedObjVersion();
	void SetSavedObjVersionFor(CLTBase * pLTBase);

protected:

	UINT						m_nError;
	UINT						m_nSavedObjVersion;

	CLTArchiveException			m_LTAExceptions;
	CLTPtrReferences			m_mapRefernces;


protected:

	void UpdateCarchiveArrayPtr(CLTBase * pLTOld, CLTBase * pLTNew);

private:

	//Keep this as a last Data member
	enum{nIdValue = 0xECFD973A};
	DWORD m_dwIdentifier;


};

inline	void CLTArchive::DoArchive(BYTE& by)
{
	IsStoring()		?	*this << by		: *this >> by; 
}
inline	void CLTArchive::DoArchive(WORD& w)
{
	IsStoring()		?	*this << w		: *this >> w; 
}
inline	void CLTArchive::DoArchive(LONG& l)
{
	IsStoring()		?	*this << l		: *this >> l; 
}
inline	void CLTArchive::DoArchive(DWORD& dw)
{
	IsStoring()		?	*this << dw		: *this >> dw; 
}
inline	void CLTArchive::DoArchive(float& f)
{
	IsStoring()		?	*this << f		: *this >> f; 
}
inline	void CLTArchive::DoArchive(double& d)
{
	IsStoring()		?	*this << d		: *this >> d; 
}
inline	void CLTArchive::DoArchive(int& i)
{
	IsStoring()		?	*this << i		: *this >> i; 
}
inline	void CLTArchive::DoArchive(short& w)
{
	IsStoring()		?	*this << w		: *this >> w; 
}
inline	void CLTArchive::DoArchive(char& ch)
{
	IsStoring()		?	*this << ch		: *this >> ch; 
}
inline	void CLTArchive::DoArchive(unsigned& u)
{
	IsStoring()		?	*this << u		: *this >> u; 
}

inline 	void CLTArchive::DoArchive(CString & str)
{
	IsStoring()		?	*this << str	: *this >> str; 
}


inline	void CLTArchive::ThrowException(UINT nError)
{
	m_LTAExceptions.SetError(nError);
	THROW(&m_LTAExceptions);
}

inline bool CLTArchive::IsKindOf()
{
	return m_dwIdentifier == nIdValue;
}

inline void CLTArchive::CleanupRefsTo(CLTBase* pLTPtr)
{
	m_mapRefernces.CleanupRefsTo (pLTPtr);
}

inline void CLTArchive::UpdateRefernces(CLTBase* pLTPtrOld, CLTBase* pLPtrNew)
{
	m_mapRefernces.UpdateRefernces(pLTPtrOld, pLPtrNew);
}
	
inline UINT CLTArchive::GetSavedObjVersion()
{
	return m_nSavedObjVersion;
}



/////////////////////////////////////////////////////////////////////////////////
// 	CLTBase

⌨️ 快捷键说明

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