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.
48 lines
1.6 KiB
C++
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
|