#ifndef NMVTKPLANARPOLYGONLAYER_H #define NMVTKPLANARPOLYGONLAYER_H #include "nmVTKRenderLayer.h" #include #include 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& vecPoints, bool bClosed); /** @brief 清空全部节点和线段,不主动渲染。 */ void clear(); /** @brief 返回当前保存的世界坐标点副本。 */ QVector getPoints() const; /** @brief 返回当前是否以闭合多边形显示。 */ bool isClosed() const; private: Q_DISABLE_COPY(nmVTKPlanarPolygonLayer) nmVTKPlanarPolygonLayerPrivate* m_pPrivate; ///< 独占实现对象。 }; #endif // NMVTKPLANARPOLYGONLAYER_H