|
|
/**
|
|
|
*
|
|
|
* @file FITKGraphWidget.h
|
|
|
* @brief 渲染窗口抽象类
|
|
|
* @author BaGuijun (baguijun@163.com)
|
|
|
* @date 2024-04-08
|
|
|
*
|
|
|
*/
|
|
|
#ifndef FITKGraphWidget_H_
|
|
|
#define FITKGraphWidget_H_
|
|
|
|
|
|
#include "FITKCoreAPI.h"
|
|
|
#include "FITKAbstractGUI.h"
|
|
|
|
|
|
namespace Core
|
|
|
{
|
|
|
class FITKAbstractGraphObject;
|
|
|
|
|
|
/**
|
|
|
* @brief 渲染窗口抽象类
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-08
|
|
|
*/
|
|
|
class FITKCoreAPI FITKAbstractGraphWidget :public FITKWidget
|
|
|
{
|
|
|
public:
|
|
|
explicit FITKAbstractGraphWidget(QWidget* parent = nullptr);
|
|
|
/**
|
|
|
* @brief Destroy the FITKGraphWidget object
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-08
|
|
|
*/
|
|
|
virtual ~FITKAbstractGraphWidget() = 0 ;
|
|
|
|
|
|
/**
|
|
|
* @brief 清空所有显示对象(不删除对象)
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-03-28
|
|
|
*/
|
|
|
virtual void clear();
|
|
|
|
|
|
/**
|
|
|
* @brief 保存当前渲染窗口为图片
|
|
|
* @param[i] image 图片路径
|
|
|
* @param[i] w 图片宽度
|
|
|
* @param[i] h 图片高度
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-11
|
|
|
*/
|
|
|
virtual void saveImage(const QString& image, int w = -1, int h = -1);
|
|
|
/**
|
|
|
* @brief 适应窗口大小
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-18
|
|
|
*/
|
|
|
virtual void fitView();
|
|
|
/**
|
|
|
* @brief 设置背景颜色
|
|
|
* @param[i] rgb1 顶部颜色
|
|
|
* @param[i] rgb2 底部颜色,空指针则只有rgb1颜色生效
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-05-08
|
|
|
*/
|
|
|
virtual void setBackgroundColor(float* rgb1, float* rgb2 = nullptr);
|
|
|
|
|
|
/**
|
|
|
* @brief 设置背景颜色
|
|
|
* @param[o] rgb1 顶部颜色
|
|
|
* @param[o] rgb2 底部颜色
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-05-08
|
|
|
*/
|
|
|
virtual void getBackgroundColor(float* rgb1, float* rgb2 = nullptr);
|
|
|
|
|
|
/**
|
|
|
* @brief 从渲染窗口移除渲染对象
|
|
|
* @param[i] FITKAbstractGraphObject 移除的渲染对象
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-11
|
|
|
*/
|
|
|
virtual void removeGraphObj(FITKAbstractGraphObject* gobj);
|
|
|
/**
|
|
|
* @brief 获取窗口ID,与widget的id无关
|
|
|
* @return int
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-05-08
|
|
|
*/
|
|
|
int getGraphWidgetID() const;
|
|
|
|
|
|
private:
|
|
|
/**
|
|
|
* @brief 窗口ID
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-05-08
|
|
|
*/
|
|
|
int _graphWidgetID{ -1 };
|
|
|
};
|
|
|
|
|
|
|
|
|
enum FITKGraph3DStandardView
|
|
|
{
|
|
|
F3DVXPos,
|
|
|
F3DVXNeg,
|
|
|
F3DVYPos,
|
|
|
F3DVYNeg,
|
|
|
F3DVZPos,
|
|
|
F3DVZNeg,
|
|
|
F3DVISO,
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* @brief 三维渲染窗口抽象类
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-08
|
|
|
*/
|
|
|
class FITKCoreAPI FITKAbstractGraph3DWidget : public FITKAbstractGraphWidget
|
|
|
{
|
|
|
public:
|
|
|
using FITKAbstractGraphWidget::FITKAbstractGraphWidget;
|
|
|
virtual ~FITKAbstractGraph3DWidget() = 0 ;
|
|
|
|
|
|
/**
|
|
|
* @brief 设置相机视角
|
|
|
* @param[i] focalPoint 相机焦点三坐标
|
|
|
* @param[i] viewUp 相机向上方向三坐标
|
|
|
* @param[i] position 相机位置三坐标
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-03-14
|
|
|
*/
|
|
|
virtual void setView(double* focalPoint, double* viewUp, double* position);
|
|
|
/**
|
|
|
* @brief 设置相机视角
|
|
|
* @param[i] v 标准视角
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-06-13
|
|
|
*/
|
|
|
virtual void setView(FITKGraph3DStandardView v);
|
|
|
/**
|
|
|
* @brief 获取当前相机视角
|
|
|
* @param[o] pos 相机位置三坐标
|
|
|
* @param[o] focual 相机焦点三坐标
|
|
|
* @param[o] viewup 相机向上方向三坐标
|
|
|
* @return true 获取成功
|
|
|
* @return false 获取失败
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-08
|
|
|
*/
|
|
|
virtual bool getView(double* pos, double* focual, double* viewup);
|
|
|
|
|
|
/**
|
|
|
* @brief 设置是否为平行投影
|
|
|
* @param[i] on 是否打开
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-03-14
|
|
|
*/
|
|
|
virtual void setParallelProjection(bool on = true);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @brief 二维渲染窗口抽象类
|
|
|
* @author libaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-04-08
|
|
|
*/
|
|
|
class FITKCoreAPI FITKAbstractGraph2DWidget : public FITKAbstractGraphWidget
|
|
|
{
|
|
|
public:
|
|
|
using FITKAbstractGraphWidget::FITKAbstractGraphWidget;
|
|
|
virtual ~FITKAbstractGraph2DWidget() = 0 ;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|