00001
00002 #include "widget_layer.h"
00003 #include "profile.h"
00004 #include "common.h"
00005
00006
00007 #include <qwidget.h>
00008 #include <qpainter.h>
00009 #include <qstring.h>
00010 #include <qarray.h>
00011 #include <qrect.h>
00012
00013
00014
00020 class EmulationWidget : public WidgetLayer
00021 { Q_OBJECT
00022
00023 public:
00024
00031 EmulationWidget( const Profile& config, QWidget *parent=0, const char *name =0 );
00032
00036 ~EmulationWidget();
00037
00044 virtual void setImage( QArray<Character> const newimg, int columns, int lines );
00045
00050 virtual void reloadConfig( const Profile& config );
00051
00055 virtual void setScroll( int cursor, int slines );
00056
00061 virtual void scroll( int value );
00062
00063 virtual QSize calcSize( int cols, int lins ) const;
00064
00065 protected:
00066
00070 virtual void calcGeometry();
00071
00072
00073 void paintEvent( QPaintEvent* event );
00074
00078 void setColorTable( const ColorEntry table[] );
00079
00089 void drawAttrString( QString& string, QPainter& painter, QRect rect, Character attr, bool pm, bool clear );
00090
00091 protected:
00092
00093 enum ScrollLocation
00094 {
00095 SCRNONE,
00096 SCRLEFT,
00097 SCRIGHT
00098 };
00099
00100 int f_height;
00101 int f_width;
00102 int f_ascent;
00103 int m_blX;
00104 int m_blY;
00105 int m_brX;
00106
00107 int m_bY;
00108 int m_bX;
00109 QScrollBar* m_scrollbar;
00110
00111 ScrollLocation scrollLoc;
00112
00113
00114
00115 bool blinking;
00116 };