You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmRender/nmVTKPlanarPolygonLayer.h

48 lines
1.6 KiB
C

#ifndef NMVTKPLANARPOLYGONLAYER_H
#define NMVTKPLANARPOLYGONLAYER_H
#include "nmVTKRenderLayer.h"
#include <QPointF>
#include <QVector>
class nmVTKPlanarPolygonLayerPrivate;
/**
* @brief 在固定 XY 平面显示多边形绘制节点和折线的通用业务图层。
*
* 图层不参与拾取和相机边界计算,也不主动触发 Render。调用方可以在绘制
* 期间显示开放折线,在完成后显示闭合多边形。所有接口只能在 Qt GUI 线程调用。
*/
class NM_RENDER_EXPORT nmVTKPlanarPolygonLayer
: public nmVTKRenderLayer
{
public:
/** @brief 创建初始为空且可见的多边形图层。 */
explicit nmVTKPlanarPolygonLayer(const QString& sLayerId);
/** @brief 释放独占的 PolyData、Mapper 和 Actor。 */
virtual ~nmVTKPlanarPolygonLayer();
/**
* @brief 用有限 XY 点替换当前轮廓,不主动渲染。
* @param vecPoints 按绘制顺序排列的世界坐标点。
* @param bClosed 为 true 且至少有三个点时连接末点和首点。
* @return 所有点有效且 VTK 几何更新成功时返回 true。
*/
bool setPolygon(const QVector<QPointF>& vecPoints, bool bClosed);
/** @brief 清空全部节点和线段,不主动渲染。 */
void clear();
/** @brief 返回当前保存的世界坐标点副本。 */
QVector<QPointF> getPoints() const;
/** @brief 返回当前是否以闭合多边形显示。 */
bool isClosed() const;
private:
Q_DISABLE_COPY(nmVTKPlanarPolygonLayer)
nmVTKPlanarPolygonLayerPrivate* m_pPrivate; ///< 独占实现对象。
};
#endif // NMVTKPLANARPOLYGONLAYER_H