XViewData

Inherited from NULL

Inherited by NULL

Friend class NULL

Description

XViewData封装了文档的视图数据,用于协调应用程序的数据模型(Model)、用户界面视图(View)和用户交互(Controller)。该数据类扮演着连接文档数据和视图之间的重要角色,它通过提供数据的访问接口,使得视图能够获取并显示数据。同时,当用户在视图上进行操作时,文档视图数据类以观察者模式,使得视图能够注册对数据更新的监听。当数据发生改变时,数据类会通知相关的视图,使其可以及时更新显示,从而实现良好的用户体验和数据的可靠管理。 一个文档可以以多种形式的视图展现给用户并和用户交互,视图所需要的数据由XViewData准备组织完成,视图的各种设定也由XViewData管理并提供访问接口,因此XViewData是用户与文档进行交互的必要接口。

XViewData为主流的视图形式提供了大量的方法接口,如三维视图,提供了包括视角、拾取方法、拾取对象类型、显示模式、渲染模式等多种设定接口,提供了三维模型的面渲染数据、边渲染数据、体渲染数据、点渲染数据以及云图值渲染数据等的访问接口;二维曲线视图,提供了曲线数据访问接口。

XViewData与XDocument是一一对应的关系,原则上XViewData由所对应的文档类创建和销毁。

Members

Public interface


XDocument * m_pDoc

视图数据所绑定的文档类

int m_iSearchType

搜索的对象类型

int m_iCurModuleIndex

当前Ribbon模块序号

int m_iViewMid

当前视图模型ID

XPicker * m_pPicker

选择器

ulong m_ulUpdateFlag

视图更新标志

ulong m_ulGLMode

openGL渲染模式

int m_iDisplayFilter

显示模式

int m_iSecondDisplayFilter

第二显示模式

int m_iAnimationSpeed

动画速度

int m_iAnimationMode

动画模式

int m_iCurFrameIndex

当前动画帧ID

int m_iViewAngleMode

视角模式

int m_iPickMethod

选择方法

bool m_bEnableRotate

是否支持旋转

bool m_bEnableSecond

知否支持显示第二模型

bool m_bLightOn

是否激活光照模式

real m_dViewAngle[3]

视角转动角度

real m_dViewBox[6]

三维视图视域盒

TMatrix44<float> m_fTrMatrix

三维视图变换矩阵

XMap * m_pMarkerMap

对象标记渲染数据映射器

int m_iContourDiv

云图色带数

int m_iContourScheme

云图色带方案

float m_fContourMax

云图最大值

float m_fContourMin

云图最小值

float m_fContourScale

云图值比例系数

bool m_bEnforceContourMaxMin

是否强制云图最大最小值

vector<const XItem*> * m_pLocalContourItems

局部云图对象数组

vector<const XGeometry*> * m_pLocalContourGeoms

局部云图几何数组

float m_fVectorScale

变形向量比例系数

int m_iVectorIndex[3]

向量数据序列号(用于后处理显示变形),默认为0,1,2

vector<XRenderData> m_arCmdData

功能运行过程中预览视图数据数组

vector<const XElement *> * m_pFragmentElems

实体单元数组

int m_iFragBoundaryCount

实体单元数组的边界单元个数

vector<const XRenderData *> * m_pTransformViewData

变形视图数据(用于前处理的变形预览)

vector<XShaderContext> m_pShaderContexts

着色器上下文数组

vector<ItemPtr> m_pSelectedItems

选择对象数组

XPlane m_ClipPlane[MAX_CLIP_PLANE_COUNT]

裁剪平面数组

int m_ClipPlaneCount

裁剪平面个数

XCurve m_Curve

曲线数据

XVisualAngle m_VisualAngle

视角数据


XViewData(XDocument * pDoc)

virtual void reset()

virtual void buildData()

void bindPicker(XPicker * picker)

virtual void updateData(ulong update_flag)

virtual void clear()

const real * getViewBox()

void setViewBox(const real * box)

virtual void updateViewBox()

XDocument * getDocument()

virtual ~XViewData()

virtual void setRenderState(RenderStateTypeID type, void * value)

virtual void getRenderState(RenderStateTypeID type, void * value)

void setSearchType(TypeID type)

TypeID getSearchType() const

void setCurrentModule(int i)

int getCurrentModule() const

ulong getRenderMode() const

void setRenderMode(ulong m)

bool checkRenderMode(ulong m)

void enableRenderMode(TypeID mode)

void disableRenderMode(TypeID mode)

TypeID getPickType() const

void setPickType(TypeID tid)

int getDisplayFilter() const

void setDisplayFilter(int f)

bool checkDisplayFilter(ulong m)

void enableDisplayFilter(TypeID mode)

void disableDisplayFilter(TypeID mode)

ulong getEnityColor(const XGeometry * g)

int getAnimationSpeed() const

void setAnimationSpeed(int s)

int getAnimationMode() const

void setAnimationMode(int m)

virtual int getAnimationFrameCount() const

int getCurrentAnimationFrame() const

void setCurrentAnimationFrame(int fid)

virtual void nextAnimationFrame()

virtual void prevAnimationFrame()

void resetAnimationFrame()

virtual void clearAnimationFrame()

virtual bool prepareAnimationData(int mode)

int getPickMethod() const

void setPickMethod(int m)

int getViewAngle(real * a = 0) const

void setViewAngle(int m, const real * a = 0)

ulong getUpdateFlag() const

void resetUpdateFlag()

void showAll()

void hideItems(vector<XUniqueObjectID*> * items)

void showItems(vector<XUniqueObjectID*> * items)

void hideItems(vector<XUniqueObjectID> * items)

void showItems(vector<XUniqueObjectID> * items)

void showRelatedItems(vector<XUniqueObjectID*> * items)

void setColorScheme(ColorScheme cs, uint8 r, uint8 g, uint8 b, uint8 a)

ulong getContourColor(real v, real maxLimit, real minLimit)

const unsigned char * getColorScheme(ColorScheme ds)

bool isRotateEnable()

void setRotateEnable(bool b)

const XPlane * getClipPlane(int idx = 0) const

void setLightState(bool b)

bool getLightState()

bool isContourEnable() const

float getContourMax()

float getContourMin()

float getContourScale()

int getContourDiv()

int getContourScheme()

void setContourScheme(TypeID type)

void setContourScale(float s)

void setContour(float fMax, float fMin, int div)

virtual const char * getContourLabel()

void setContourMaxMinEnforced(bool b)

bool isContourMaxMinEnforced()

vector<const XGeometry*> * getLocalContourGeometry()

vector<const XItem*> * getLocalContourItems()

void setLocalContourItems(vector<const XItem*> * items)

void clearLocalContourItems()

void resetModelFaceContourData(XModel * mdl, float v = XREAL_MAX)

void updateLocalContourMaxMin()

float getVectorScale()

void setVectorScale(float v)

void setVectorViewIndex(int i0, int i1, int i2)

int getVectorViewIndex(int i)

void setClipPlane(const double * base, const double * normal, int idx = 0)

void getClipPlaneEquation(double *eqn, int idx = 0)

void setClipPlaneCount(int cnt)

int getClipPlaneCount()

void setClipPlane(const XPlane * fp, bool bUpdateViewData = true, int idx = 0)

void resetClipPlane(const real * box, int idx = 0)

virtual ulong updatePickedItemColor(const XUniqueObjectID * ue = NULL, UpdateItemColorMode updateMode = UpdateColor_UnpickItem)

vector<XRenderData> * getCmdRenderDataArray()

XRenderData * getCmdRenderData(ulong cid)

void bindBuffer(XRenderData * r, int vBuf, int elBuf)

virtual int getVertexBufferSize(TypeID bufType, bool bSecond = false)

int getVertexBufferSize(XModel * mdl, TypeID bufType)

virtual XBoundBox getBoundBoxOfItems(vector<ItemPtr> * items)

bool isMarkerAutoScale() const

bool isSecondEnable() const

void enableSecond(int showFlag)

void disableSecond()

int getSecondDisplayFilter() const

void updateResultToVFF(XModel * mdl, const XResult * rlt, const XResult * deformRlt, int comp, int cid, VertexFrameFile * vff)

XCurve * getCurveData()

virtual void updateCurveData(int updateFlag)

XVisualAngle * getVisualAngle()

void getViewBoxByModel(XModel * mdl, bool bCheckInvisible, double * viewbox)

void updateConditionMarker(XModel * mdl, TypeID type, float scale)

virtual void initMarkerRenderData(TypeID type, XRenderData * rd)

XRenderData * getMarkerRenderData(TypeID type)

vector<const XRenderData *> * getTransformViewData()

void setTransformViewData(vector<const XRenderData *> * geoms)

const float * getTransformMatrix() const

void setTransformMatrix(const double * mat)

vector<const XElement *> * getFragmentElems()

void setFragmentElems(vector<const XElement *> * els)

int getFragmentElemCount()

void clearFragmentElems()

virtual const XRenderData * getFragmentViewData()

virtual const XRenderData * getSectionViewData()

virtual void updateShaderContextVar(const char * name)

XShaderContext * getShaderContext(const char * name)

void setShaderContext(const char * name, const char * vert, const char * frag)

void setShaderContextEnable(const char * name, bool bEnable)

void buildViewDataForNodes(XModel * mdl, XRenderData * rd)

void buildViewDataForElems(vector<const XElement *> * elems, XRenderData * rd, bool bEnableNormal = false)

void buildViewDataForElemsWithIndex(vector<const XElement *> * els, XRenderData * rd, bool bEnableNormal)

void buildRenderDataForPickedElems(XRenderData * rd, bool bUseIndex = false)

virtual void refresh()

XModel * getViewModel()

void setViewModel(ulong mid)

void updateSectionRenderData(const XPlane * fp, vector<SegmentPoint> * sectionPoints, const float ** deform, const float * v, XRenderData * rd, ResultIndexMap * rim, int colorID = -1)

void buildSectionFacets(XModel * mdl, const XPlane * fp, vector<SegmentPoint> * sectionPoints)