ui属性系统VSProperty

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ui属性系统VSProperty相关的知识,希望对你有一定的参考价值。

#define VS_NEW new
#define VS_DELETE delete

class VSProperty

public:
enum	//Property Type

  PT_VALUE,
  PT_ENUM,
  PT_DATA,//数据
  PT_ARRAY,//容器
  PT_MAP,//容器
  PT_MAX
;
enum	// Flag

  F_NONE = 0X00,
  F_SAVE_LOAD = 0X01,
  F_CLONE = 0X02,
  F_COPY = 0X04,
  F_SAVE_LOAD_CLONE = 0X03,
  F_SAVE_LOAD_COPY = 0X05,
  F_REFLECT_NAME = 0X08,
  F_NO_USE_GC = 0X10,
  F_MAX
;
VSProperty()

  m_pRttiOwner = NULL;
  m_pFuntionOwner = NULL;
  m_uiFlag = 0;
  m_uiElementOffset = 0;

VSProperty(VSRtti & Owner,const VSUsedName & Name,unsigned int uiElementOffset,unsigned int uiFlag)
:m_pRttiOwner(&Owner)

  m_Name = Name;
  m_uiElementOffset = uiElementOffset;
  m_uiFlag = uiFlag;
  m_pFuntionOwner = NULL;

VSProperty(VSFunction & Owner, const VSUsedName & Name, unsigned int uiElementOffset, unsigned int uiFlag)
:m_pFuntionOwner(&Owner)

m_Name = Name;
m_uiElementOffset = uiElementOffset;
m_uiFlag = uiFlag;
m_pRttiOwner = NULL;

virtual ~VSProperty()

	
	virtual unsigned int GetPropertyType()const = 0;
	FORCEINLINE VSRtti * GetRtti()const
	
		return m_pRttiOwner;
	
	FORCEINLINE VSFunction * GetFunction()const
	
		return m_pFuntionOwner;
	
	FORCEINLINE const VSUsedName & GetName()const
	
		return m_Name;
	
	virtual void* GetValueAddress(void* pObj)const
	
		return (void*)(((unsigned char*)pObj) + m_uiElementOffset);
	
	virtual bool Archive(VSStream &Stream,void* pObj) = 0;
	virtual VSProperty * GetInstance() = 0;
	virtual void CloneData(void* pSrcObj,void* pDestObj,VSMap<VSObject *,VSObject*>& CloneMap) = 0;
	virtual void CopyData(void* pSrcObj,void* pDestObj) = 0;
	virtual void AddEditorElement(void * pSrcObj,VSECollection * pParent,VSString &Name) = 0;
	virtual bool Clone(VSProperty * p)
	
		if ((p->GetRtti() == GetRtti() && GetRtti()) || (p->GetFunction() == GetFunction() && GetFunction()))
		
			m_Name = p->m_Name;
			m_uiFlag = p->m_uiFlag;
			m_uiElementOffset = p->m_uiElementOffset;
			return true;		
		
		
		return false;
	
	void SetOwner(VSRtti & Owner)
	
		m_pRttiOwner = &Owner;
	
	void SetOwner(VSFunction & Function)
	
		m_pFuntionOwner = &Function;
	
	unsigned int GetFlag()const
	
		return m_uiFlag;
	
	void SetFlag(unsigned int uiFlag)
	
		m_uiFlag = uiFlag;
	
protected:
	VSRtti * m_pRttiOwner;
	VSFunction * m_pFuntionOwner;
	VSUsedName m_Name;
	unsigned int m_uiFlag;
	unsigned int m_uiElementOffset;
;
 

以上是关于ui属性系统VSProperty的主要内容,如果未能解决你的问题,请参考以下文章

谷歌正式发布Android 12,UI更好看,应用更快,打造独属于自己的定制化属性

Android开发之自己定义UI组件和属性

UI基础篇之UIScrollView

vue如何循环渲染element-ui中table内容

安卓 UI系列之ProgressBar

UI控件之ProgressBar(进度条)