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

📄 mocadataset.h

📁 图像处理的压缩算法
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------------------*
 *	File Name: 	MOCADATA.h														*
 *	Purpose:	Microcal Origin dataset classes									*
 *  Creation:	by Dr. C. P. Yang, 5/1/95(Version for new MOCA: TD:3/24/2000)	* 
 *  	Copyright Microcal Software Inc. 1995, 2000								*
 *	Modification log															*
 *	CPY v6.0297 t8155 7/5/00 FASTER_DATASET_ACCESS_FROM_MOCA					*
 *	TD 4/3/01 t9034	OVECTOR_SUPPORT												*
 *	TD 5-16-01	MORE_ACCURATE_DATA_ACCESS_TO_ORIGINC							*
 *	TD 6-5-01  MODATA_FROM_MODATAID												*
 *	TD 6-18-01 MOCURVE_DERIVED_FROM_MODATA										*
 *	CPY 6/21/01 CURVE_OBJ_NEEDS_READ_PLOT_INFO									*
 *	TD 7-16-01 ADD_GETNAME_TO_DATASET											*
 *	TD 8-10-01 ORIGINC_DATAOBJECT_DESTRUCTOR_DO_NOT_UPDATEVALUE					*
 *	CPY 8/11/01 v6.9069 TEMP_DATASET_USE_NORMAL_NAME							*
 *	TD 8-24-01 NEW_TEMPORARY_CURVE_CLASS										*
 *	TD 10-29-01	CATEGORICAL_DATA												*
 *	CPY 11-10-2001 v6.9122 IMAGE_IMOPRT_USE_POINTER_TO_MAKE_FASTER				*
 *	LY	12/14/01 t9798 SERIESPTR_MANAGER										*
 *	TD 1-2-01 QA70-239 CURVE_CONSTRUCTION_FROM_WORKEHSEET_OBJECT				*
 *	TD 1-23-02 QA70-408 t6.9190 METHOD_UPDATE_FOR_DATA_WRPPERS_IN_ORIGIN_C		*
 *	TD 1-25-02 t9891 t6.9192 METHOD_CRATE_FOR_ODATA_TYPES						*
 *	TD 1-29-02 QA70-592 v6.9197 PROPER_HANDLING_OF_DATASET_RANGE_FROM_KERNEL	*
 *	TD 3-4-02 QA70-965 DATASET_APPEND_REFRESH_MODE								*
 *	TD 3-7-02 QA70-1082 v7.0237 TEMP_CURVE_FROM_YDATA_VALUE						*
 *	TD 3-19-02 WCB_TO_SET_IMAX_WITH_REDRAW_OPTIONS								*
 *	AW 06/06/02 QA70-1988 CONSTRUCT_FROM_DATAPLOT								*
 *	CPY v7.0352 7/25/02 QA70-2469 MATRX_DATA_CHANGE_MUST_UPDATE_Z_RANGE			*
 *	YuI 8/30/02 v7.0387 QA70-2841 LINKS_MANAGER_FOR_OBJECTS						*
 *	YuI 12/31/02 QA70-3592 v7.0477 ORIGIN_C_AND_INTERNAL_DATA_PROTECTION		*
 *	TD 4-25-03 QA70-4256 SOURCE_RANGE_IN_CURVEBASE								*
 *	YuI 5/05/03 v7.0578 QA70-4357 CURVE_AS_INPUT_OF_OPERATION					*
 *	ML 5/29/2003 QA70-4562 CURVE_EXTENSION_WITH_RELATED_DATASETS				*
 *	CPY 6/25/03 QA70-4712 v7.0610 CURVEBASE_HAS_X_SHOULD_RET_DATASET_NAME		*
 *	ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
 *	YuI 9/16/03 v7.5696 QA70-5184 CATEGORICAL_MAP_OC_COOKIE						*
 *------------------------------------------------------------------------------*/      

#ifndef	_MOCADATASET_H                                                
#define	_MOCADATASET_H

#include "mocadll.h"



///////////////////////////////////
///
///	MoData Error codes
///
///////////////////////////////////

#define	ERR_MODATA_INVALID			1000
#define	ERR_MODATA_TOO_FEW_PTS	    (ERR_MODATA_INVALID+1)
#define ERR_MODATA_OUT_OF_RANGE     (ERR_MODATA_INVALID+2)
#define ERR_MOERRDATA_BAR_ZERO      (ERR_MODATA_INVALID+3)
//-----------------------------------------------------------------------------

//LY	12/14/01 t9798 SERIESPTR_MANAGER
BOOL CALLBACK	MoDataCallback(DWORD dwID, DWORD dwMoData);
//end t9798 SERIESPTR_MANAGER

/////////////////////////////////////////////////////////////////////////////
//
//	MoData	:	Origin interface to Origin internal datasets
//	Baseclass for dataset access
//
/////////////////////////////////////////////////////////////////////////////


class		lrclass;

#define		OUTSIDE_DATARANGE(row)		(row < i1() || row >= i2())


class		MoOriginWks;
typedef		MoOriginWks	*MoOriginWksPtr;

class MoData : public MOCAOrigin
{
	// LY	12/14/01 t9798 SERIESPTR_MANAGER
	DECLARE_DYNAMIC(MoData);
	//end t9798 SERIESPTR_MANAGER
public:
	~MoData();/// need to check range change here
	MoData(const MoData &original);//TD 7-18-01 The copy constructor must be public

	/// ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	enum InitType {
		InitType_datasetid				= 0,
		InitType_datasetname,
		InitType_wksname_colname,
		InitType_wksname_colnumber,
	};

	struct InitInfo {
		InitType			ntype;
		BOOL				bNoMarkerUse;

		union {
			LPCSTR			lpcszDatasetName;
			
			struct {
				LPCSTR		lpszWksName;
				LPCSTR		lpszColumnName;
			} stWksNameColName;
			
			struct {
				LPCSTR		lpszWksName;
				int			nColNumber;
			} stWksNameColNumber;
			
			MODATAID		mdID;
		};

		InitInfo()
		{
			memset(this, 0, sizeof(InitInfo));
		}
	};
	/// end MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC


protected:
	//-------- CPY 8/11/01 v6.9069 TEMP_DATASET_USE_NORMAL_NAME
	//MoData(UINT i1,UINT i2, BOOL bOneDataset = 0);
	MoData(UINT i1,UINT i2, DWORD dwCntrl = 0);
	//--------
	MoData(LPCSTR lpszName);/// add test for name before calling Origin
	MoData(LPCSTR name, int iCol); /// iCol=0,1,2,3...
 	MoData(LPCSTR wksname, LPCSTR lpColumnName); 
	//MoData(const MoData &original);//TD 7-18-01 The copy constructor must be public
	MoData(int type, LPCSTR lpszName);
	/// TD 6-5-01  MODATA_FROM_MODATAID
	MoData(MODATAID mdID);
	/// end  MODATA_FROM_MODATAID
	MoData(); //Unattached /// TD 8-24-01 NEW_TEMPORARY_CURVE_CLASS
	/// ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	MoData(InitInfo &initinfo);
	/// end MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC

	void	check_range(long index);

	/// TD 8-24-01 NEW_TEMPORARY_CURVE_CLASS
protected:
	BOOL SetID(MODATAID mdID); //Only to be called from constructor
	void SetAsTemporary();
	/// end NEW_TEMPORARY_CURVE_CLASS
	/// TD 3-11-02 MEM_LEAKS_IN_MOCURVE
	bool TmpCloneOf(MoData &modata);
	/// end MEM_LEAKS_IN_MOCURVE

/// TD 3-7-02 QA70-1082 v7.0237 TEMP_CURVE_FROM_YDATA_VALUE

public:
	void ReInitializeAllCachedRanges(); //As is newly constructed -- aclled from trim, trim has higher presedence
	virtual int Trim(bool bLeft, DWORD dwFlag);
/// end TEMP_CURVE_FROM_YDATA_VALUE
	/// TD 3-11-02 MEM_LEAKS_IN_MOCURVE
	bool SetTempDataDeleteOnDestroy(bool bSet);
	/// end MEM_LEAKS_IN_MOCURVE


public:
    long	i1() const;
    long	i2() const;

    
    double	LeftEnd() const;
    double	RightEnd() const;

	double	operator [](long index) const;
	lrclass &		operator ()(long index);
	virtual	MoData	&	operator = (MoData &);
	virtual	MoData	&	operator = (double);
	virtual	const MoData  operator*(MoData &);
	virtual const MoData  operator+(MoData &x);
	virtual const MoData  operator-(MoData &x);
	virtual const MoData  operator/(MoData &x);
	virtual	MoData	&	operator *=(MoData &);
	virtual	MoData	&	operator /=(MoData &);
	virtual	MoData	&	operator +=(MoData &);
	virtual	MoData	&	operator -=(MoData &);	
	virtual	const MoData		operator * (double);
	friend	const MoData	operator*(double, MoData &);
	virtual	const MoData		operator / (double);
	friend	const MoData	operator/(double, MoData &);
	virtual	const MoData		operator - (double);
	friend	const MoData	operator-(double, MoData &);
	virtual	const MoData		operator + (double);
	friend	const MoData	operator+(double, MoData &);
	virtual	MoData	&	operator *=(double);
	virtual	MoData	&	operator /=(double);
	virtual	MoData	&	operator +=(double);
	virtual	MoData	&	operator -=(double);
	
	
	virtual int		SetValue(long index, double value);
	virtual int		SetValue(long index, LPSTR lpstr);
	virtual int		GetValue(long index, LPSTR lpstr) const;	
	virtual void	SetType(int type) {m_type = type;}
	virtual	int		SetRange(long i1,long i2);
	virtual	int		SetNRange(long i1,long i2); //TD 5/5/2000 clears cells from i1 -to- i2-1

	virtual	int		ResetRange();	//ORIGIN_WKS_CLASS, add this for clear wks
	/// TD 1-23-02 QA70-408 t6.9190 METHOD_UPDATE_FOR_DATA_WRPPERS_IN_ORIGIN_C
	//virtual	BOOL	UpdateRange();	//---------------------SET_RANGE_TO_CURRENT_CHANGES	
	/// TD 3-27-02 UPDATE_MUST_UNLOCK_HANDLE
	//virtual	BOOL	UpdateRange(BOOL bFromOrigin = FALSE);	//---------------------SET_RANGE_TO_CURRENT_CHANGES	
	virtual	BOOL	UpdateRange(BOOL bFromOrigin = FALSE, int nReDrawMode = -1);	//---------------------SET_RANGE_TO_CURRENT_CHANGES	
	/// end UPDATE_MUST_UNLOCK_HANDLE
	/// end METHOD_UPDATE_FOR_DATA_WRPPERS_IN_ORIGIN_C
	virtual void	SetSelRange(long i1,long i2) { m_i1 = i1; m_i2 = i2;} /// set selected range 
	virtual	int		GetXY(long index,XY &xy) const; 
	virtual	int		GetSafeXY(long index,XY &xy);    
	virtual	int		SetXY(long index,XY &xy);	
	virtual	BOOL	IsValid() const;	
	virtual	BOOL	IsEmpty();
	virtual	BOOL	HasEnoughData(int npts); /// also update m_i1,m_i2   
	virtual int		CheckXInc(double dRes); 
	virtual BOOL    CheckInc(double dRes);
	virtual	double	GetApparent(long ii);
	virtual	int		SetApparent(long ii,double& value);  
	virtual double	GetYfromX(double& value) const;
	virtual	int		clean_itself();

	long			iRange1();
	long			iRange2();	
	long			GetMissingNum() const;
	double			MakeInterpolatedDataSet(MoData &NewTempData, long NewSize) const;
	double			GetXInc();
	MORETURN		GetNumericValueAsText(long index, LPSTR lpszBuffer);
	MODATAID		GetId() const;	
	long			GetMaxi2() const;

	int				IsError(); 
    int				SetMask(long row, MOMASK mask);
	BOOL			IsTextualDataset();
	/// TD 3-19-02 WCB_TO_SET_IMAX_WITH_REDRAW_OPTIONS
	int				SetBufferSize(int iSize);
	/// end WCB_TO_SET_IMAX_WITH_REDRAW_OPTIONS
	/// TD 3-4-02 QA70-965 DATASET_APPEND_REFRESH_MODE
	BOOL			SetBufferSizeUpdateLater(int nMax);
	int				Update(int nUpdateMode, BOOL bOnlyObject = FALSE);
	int				GetRedrawMode() {return m_nReDrawMode;}
	/// end DATASET_APPEND_REFRESH_MODE
	//-------- CPY 8/11/01 v6.9069 TEMP_DATASET_USE_NORMAL_NAME
	//BOOL		m_bOneTemporary;   // set if the object holds ONE temporary dataset, cleared otherwise
	//BOOL			IsOneTemporary() const { return m_bOneTemporary; }
public:

	/// TD 1-25-02 t9891 t6.9192 METHOD_CRATE_FOR_ODATA_TYPES
	//enum {DATA_ONE_TEMP = 0x01L, DATA_NORMAL_NAME = 0x02L};
	enum{
	DATA_ONE_TEMP			= 0x01L, 
	DATA_NORMAL_NAME		= 0x02L,
	DATA_TEMP_NO_CLEANUP	= 0x04L, 
	};
	/// end METHOD_CRATE_FOR_ODATA_TYPES

	DWORD			GetCntrl()	const {return m_dwCntrl;}
	//BOOL			IsOneTemporary()  const {return (m_dwCntrl & DATA_ONE_TEMP)?TRUE:FALSE;} 
private:
	DWORD			m_dwCntrl;
public:
	//-------- end CPY 8/11/01 v6.9069 TEMP_DATASET_USE_NORMAL_NAME
	WORD			GetType() const { return m_type; }
	//------- CPY v6.0297 t8155 7/5/00 FASTER_DATASET_ACCESS_FROM_MOCA
	int				DirectValue(OCELL_VALUE *lpCell);
	//------- end
	/// TD 4/3/01 t9034	OVECTOR_SUPPORT
	LPVOID			GetBuffer( GET_DATA_BUFFER& sdbElementInfo);
	/// end	OVECTOR_SUPPORT
	//-------- CPY 11-10-2001 v6.9122 IMAGE_IMOPRT_USE_POINTER_TO_MAKE_FASTER
	LPVOID			GetBuffer();
	void			ReleaseBuffer(BOOL bChanged = FALSE);
	//-------- end CPY 11-10-2001 v6.9122
	//------------ CPY 6/21/01 CURVE_OBJ_NEEDS_READ_PLOT_INFO
	BOOL			SetToSelRange(BOOL bSet=TRUE, LPLONG lpRange=NULL); // set m_i1 and m_i2 into internal series pointer's i1 i2, FALSE to restore to m_range[0] and [1]
	//------------
	/// TD 7-16-01 ADD_GETNAME_TO_DATASET
	BOOL			GetName(CString& strName);
	/// TD 7-16-01 ADD_GETNAME_TO_DATASET
	/// TD 8-10-01 ORIGINC_DATAOBJECT_DESTRUCTOR_DO_NOT_UPDATEVALUE
	void			SetChanged(BOOL bChanged = TRUE);
	/// end ORIGINC_DATAOBJECT_DESTRUCTOR_DO_NOT_UPDATEVALUE
	/// TD 1-29-02 QA70-592 v6.9197 PROPER_HANDLING_OF_DATASET_RANGE_FROM_KERNEL
	void			SetSeriesRange(UINT nLow, UINT nHight);//Only Changes s->i1[i2] and nothing else
	void			RestoreCheckSeriesRange();//Flips back the changes from SetSeriesRange unless changed by other means
	
	//------- CPY v7.0352 7/25/02 QA70-2469 MATRX_DATA_CHANGE_MUST_UPDATE_Z_RANGE
	void			SetZRangeUpdate(BOOL bSetAutoUpdate) { DisableZUpdate(!bSetAutoUpdate); }
	//------- 
	/// TD 4-25-03 QA70-4256 SOURCE_RANGE_IN_CURVEBASE
	BOOL			GetOriginalRange(int &nLow, int &nHigh);
	/// end SOURCE_RANGE_IN_CURVEBASE

private:

	long			m_lSeriesRange[5];

	inline 	void GetOriginalSetSelectionSeriesrange()
	{
		m_lSeriesRange[4] = SERIES_RANGE_SET_NEW_RANGE | SERIES_RANGE_GET_CURRENT_RANGE;
		SetSeriesRange(i1(), i2());
		m_lSeriesRange[4] = SERIES_RANGE_SET_NEW_RANGE;
	}


	/// end PROPER_HANDLING_OF_DATASET_RANGE_FROM_KERNEL
protected:

	/// YuI 8/30/02 v7.0387 QA70-2841 LINKS_MANAGER_FOR_OBJECTS
	void			Set_m_id(MODATAID id);
	virtual void	ConnectToSeries();
	virtual void	DisconnectFromSeries(BOOL bUpdate = FALSE, DWORD dwCntrl = 0);
	/// end LINKS_MANAGER_FOR_OBJECTS

	MODATAID		m_id;
	//----------- CPY v7.0352 7/25/02 QA70-2469 MATRX_DATA_CHANGE_MUST_UPDATE_Z_RANGE
	//BOOL		m_changed;
	enum { MODATA_CHANGED = 0x01, MODATA_NO_Z_UPDATE = 0x02 };
	BYTE			m_changedBits;
	void			DisableZUpdate(BOOL bSet = TRUE) { if(bSet) m_changedBits |= MODATA_NO_Z_UPDATE; else m_changedBits &= ~MODATA_NO_Z_UPDATE;}
	//----------- end
	/// ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	BOOL			Update_i1_i2_from_range_array();
	BOOL			NoMarkerUse();
	/// end MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC

private:

	/// TD 4-25-03 QA70-4256 SOURCE_RANGE_IN_CURVEBASE
	//long			m_range[4]; /// 0,1 = disp range, 2,3 = selection range
	long			m_range[RANGE_SIZE]; /// 0,1 = disp range, 2,3 = selection range, 4= has selection
	/// end SOURCE_RANGE_IN_CURVEBASE
	long			m_i1;// all for loop must use m_i1 and m_i2, like for(i=m_i1;i<m_i2;i++)
	long			m_i2;// optional for argument specified
	long			m_max_i2;// check for last value setting and will use for set range
	WORD			m_type;//X_AXIS,Y_AXIS association for apparent value getting and settings
 	void			init(LPCSTR lpName,BOOL bCheckBlank);/// bCheckBlank == 1 to test blank name
	/// ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	BOOL			init_from_dataset_name(LPCSTR lpszName, BOOL bCheckBlank);
	BOOL			init_from_wksname_and_column_number(LPCSTR name, int iCol);
	BOOL			init_from_wksname_and_column_name(LPCSTR wksname, LPCSTR lpColumnName);
	BOOL			init_from_dataid(MODATAID mdID);
	/// ML 8/8/2003 QA70-4980 MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	BOOL			init(MoData::InitInfo &initinfo);
	/// end MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	/// end MUST_NOT_USE_WKSSELECTION_FOR_DATASET_OBJECTS_IN_ORIGINC
	void			init(int type, LPCSTR lpszName);
	void			members_init(); // otherwise we seem to have several places for these
	int				m_nReDrawMode;

⌨️ 快捷键说明

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