#ifndef FXHISTOGRAMRENDER_H #define FXHISTOGRAMRENDER_H #include "tcommon.h" #include #include "tfx.h" #include "trenderer.h" #include "tthreadmessage.h" #undef DVAPI #undef DVVAR #ifdef TOONZQT_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif // forward declaration class Histograms; class TFxHandle; class TFrameHandle; class TXsheetHandle; class TSceneHandle; class TXshLevelHandle; class ToonzScene; //========================================================= // FxHistogramRenderPort //--------------------------------------------------------- //!Implements the TRenderPort virtual class //!This class receives and handles signals from the TThread::Runnable class that make the render of frame. class FxHistogramRenderPort : public QObject, public TRenderPort { Q_OBJECT public: FxHistogramRenderPort(); ~FxHistogramRenderPort(); void onRenderRasterCompleted(const RenderData &renderData); void onRenderFailure(const RenderData &renderData, TException &e){}; void onRenderFinished(){}; signals: void renderCompleted(const TRasterP &, UINT); void renderFailure(double); }; //========================================================= // FxHistogramRender //--------------------------------------------------------- class DVAPI FxHistogramRender : public QObject { Q_OBJECT private: //! Stores some information about the frame to render needed to the PreviewFxManager class class FrameInfo { public: FrameInfo() : m_frame(-1), m_renderId((UINT)-1) {} TFxP m_fx; std::string m_fxAlias; int m_frame; //! renderId given from renderer UINT m_renderId; }; FxHistogramRenderPort *m_renderPort; TRenderer m_renderer; FrameInfo m_lastFrameInfo; TThread::Mutex m_mutex; QList m_abortedRendering; ToonzScene *m_scene; Histograms *m_histograms; bool m_isCameraViewMode; public: FxHistogramRender(); ~FxHistogramRender(); static FxHistogramRender *instance(); void setScene(ToonzScene *scene); void setHistograms(Histograms *histograms); void setIsCameraViewMode(bool isCameraViewMode) { m_isCameraViewMode = isCameraViewMode; } bool isCameraViewMode() { return m_isCameraViewMode; } void computeHistogram(TFxP fx, int frame); void invalidateFrame(int frame); private: void remakeRender(); void updateRenderer(int frame); protected slots: void onRenderCompleted(const TRasterP &, UINT); }; #endif // FXHISTOGRAMRENDER_H