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.
AppFlow/FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowInterface.cpp

94 lines
2.7 KiB
C++

#include "FITKGraph3DWindowInterface.h"
#include "FITKGraph3DWindowVTK.h"
#include "FITKGraphInteractionStyle.h"
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Kernel/FITKAppFramework/FITKRunTimeSetting.h"
namespace Comp
{
FITKGraph3DWindowInterface::~FITKGraph3DWindowInterface()
{
//释放初始化器
QList <Graph3DWindowInitializer*> inis = _initilizerList.values();
for (auto iner : inis)
{
delete iner;
}
_initilizerList.clear();
}
QWidget* FITKGraph3DWindowInterface::getWidget(const int indexPort)
{
//获取初始化器
auto initer = _initilizerList.value(indexPort);
if (initer == nullptr)
initer = new Graph3DWindowInitializer;
//创建三维渲染窗口
auto w = new FITKGraph3DWindowVTK(initer);
//获取
AppFrame::FITKRunTimeSetting* runTimeSetting = FITKAPP->getGlobalData()->getRunTimeSetting();
QVariant vtc = runTimeSetting->getValue(BackGroundColorTop);
QVariant vbc = runTimeSetting->getValue(BackGroundColorButtom);
//程序运行参数获取不到,则获取默认颜色
if ((!vbc.isValid()) && (!vtc.isValid()))
{
//设置背景色
vtc = initer->getValue(BackGroundColorTop);
vbc = initer->getValue(BackGroundColorButtom);
}
//无效值不操作
if (vbc.isValid() && vtc.isValid())
{
//top
QColor c = vtc.value<QColor>();
float t[3] = { c.redF(),c.greenF(),c.blueF() };
//buttom
c = vbc.value<QColor>();
float b[3] = { c.redF(),c.greenF(),c.blueF() };
if (w)
w->setBackgroundColor(t, b);
}
return w;
}
QString FITKGraph3DWindowInterface::getComponentName()
{
//返回三维渲染组件在组件管理类中的标识
return "Graph3DWindowVTK";
}
void FITKGraph3DWindowInterface::addInitializer(int key, Graph3DWindowInitializer* info)
{
//添加初始化器
if(_initilizerList.contains(key))
{
auto iner = _initilizerList.value(key);
//释放旧的初始化器
if (iner)
delete iner;
}
_initilizerList[key] = info;
}
FITKGraphInteractionStyle* Graph3DWindowInitializer::getStyle()
{
//创建默认交互样式
return FITKGraphInteractionStyle::New();
}
void Graph3DWindowInitializer::setLayerCount(const int nc)
{
_layerCount = nc;
}
int Graph3DWindowInitializer::getLayerCount() const
{
return _layerCount;
}
}