// Maintainer: Max Howell , (C) 2003-5 // Copyright: See COPYING file that comes with this distribution // #ifndef BLOCKANALYZER_H #define BLOCKANALYZER_H #include #include #include #include #include #include #include #include #include #include #include "analyzerbase.h" class QResizeEvent; /** * @author Max Howell */ class BlockAnalyzer : public Analyzer::Base { Q_OBJECT public: Q_INVOKABLE BlockAnalyzer(QWidget*); ~BlockAnalyzer(); static const uint HEIGHT; static const uint WIDTH; static const uint MIN_ROWS; static const uint MIN_COLUMNS; static const uint MAX_COLUMNS; static const uint FADE_SIZE; static const char *kName; protected: virtual void transform(Analyzer::Scope&); virtual void analyze(QPainter &p, const Analyzer::Scope&, bool new_frame); virtual void resizeEvent(QResizeEvent*); virtual void paletteChange(const QPalette&); virtual void framerateChanged(); void drawBackground(); void determineStep(); private: QPixmap* bar() { return &m_barPixmap; } uint m_columns, m_rows; // number of rows and columns of blocks uint m_y; // y-offset from top of widget QPixmap m_barPixmap; QPixmap m_topBarPixmap; QPixmap m_background; QPixmap canvas_; Analyzer::Scope m_scope; // so we don't create a vector every frame std::vector m_store; // current bar heights std::vector m_yscale; // FIXME why can't I namespace these? c++ issue? std::vector m_fade_bars; std::vector m_fade_pos; std::vector m_fade_intensity; float m_step; // rows to fall per frame }; #endif