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/FITKFluidVTKGraphAdaptor/FITKFluidVTKGraphObjectFixe...

130 lines
4.0 KiB
C++

/*****************************************************************//**
* @file FITKFluidVTKGraphObjectFixedSizeBase.h
* @brief Graph object base for fixed sized mark.
*
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*********************************************************************/
#ifndef __FITKFLUIDVTKGRAPHOBJECTFIXEDSIZEBASE_H__
#define __FITKFLUIDVTKGRAPHOBJECTFIXEDSIZEBASE_H__
#include "FITKFluidVTKGraphObject3D.h"
#include "FITKFluidVTKGraphAdaptorAPI.h"
// Forward declaration
class FITKGraphActor;
class vtkGlyph3D;
class vtkDistanceToCamera;
namespace Comp
{
class FITKGraphRender;
}
namespace Exchange
{
/**
* @brief Graph object base for fixed sized mark.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
class FITKFLUIDGRAPHADAPTORAPI FITKFluidVTKGraphObjectFixedSizeBase : public FITKFluidVTKGraphObject3D
{
// Regist
FITKGraphRegist(FITKFluidVTKGraphObjectFixedSizeBase, FITKFluidVTKGraphObject3D);
FITKCLASS(Exchange, FITKFluidVTKGraphObjectFixedSizeBase);
public:
/**
* @brief Constructor.
* @param dataObj: The data object
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
FITKFluidVTKGraphObjectFixedSizeBase(Core::FITKAbstractDataObject* dataObj);
/**
* @brief Destructor.[virtual]
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
virtual ~FITKFluidVTKGraphObjectFixedSizeBase();
/**
* @brief Set the render, which will add this graph object to itself.( for calculating size )[virtual][override]
* @param render: The FITKGrapgRender
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
virtual void setFITKRender(Comp::FITKGraphRender* render) override;
/**
* @brief Get the screen size of the actor in this index.
* @param index: The actor index
* @return The screen size of the actor
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
double getScreenSize(int index);
/**
* @brief Set the fixed-size of the graph actor or actors.
* @param pixelSize: The pixel size of actors need to be limited to.
* @param index: The index of the graph actor( -1 means set all actors to this size )
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
void setScreenSize(double pixelSize = 100., int index = -1);
protected:
/**
* @brief Constructor.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
FITKFluidVTKGraphObjectFixedSizeBase() = default;
protected:
/**
* @brief Data glyphs
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
QList<vtkGlyph3D*> m_glyphList{};
/**
* @brief Fixed size filters
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
QList<vtkDistanceToCamera*> m_distToCameraList{};
/**
* @brief The glyph source pixel size.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
double m_glyphSize = 60.;
/**
* @brief The default glyph size of fixed sized actors in graph window.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
double m_defaultSize = 60.;
/**
* @brief The default large glyph size of fixed sized actors in graph window.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-07-26
*/
const double m_defaultLargeSize = 180.;
};
} // namespace Exchange
#endif // __FITKFLUIDVTKGRAPHOBJECTFIXEDSIZEBASE_H__