// Maintainer: Max Howell , (C) 2003-5 // Copyright: See COPYING file that comes with this distribution // #ifndef BLOCKANALYZER_H #define BLOCKANALYZER_H #include "analyzerbase.h" #include class QResizeEvent; class QMouseEvent; class QPalette; /** * @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( Scope& ); virtual void analyze( QPainter& p, const Scope&, bool new_frame); virtual void resizeEvent( QResizeEvent* ); virtual void paletteChange( const QPalette& ); 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; 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