summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/QtDasherScreen.h
blob: 06689d6b759c883fd50f7f3e5c6b1bf37554fb38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// QtDasherScreen.h
// (c) 2003 Yann Dirson
// Derived from GtkDasherCanvas.h
// (c) 2002 Philip Cowans

#ifndef QT_DASHER_SCREEN_H
#define QT_DASHER_SCREEN_H

#include <string>
#include <sys/time.h>

#include <qwidget.h>
#include <qpainter.h>
#include <qfont.h>
#include <qstring.h>
#include <qpixmap.h>
#include <qtimer.h>
#include <qcursor.h>

#include "DasherScreen.h"
#include "DashEdit.h"
#include "DasherInterface.h"

using namespace Dasher;

class QtDasherScreen : public QWidget, public Dasher::CDasherScreen

{
  Q_OBJECT
 public:
  QtDasherScreen (int _width, int _height,
		  CDasherInterface *_interface,
		  QWidget * _parent=0, Dasher::CDashEditbox* edit=0);
  QtDasherScreen::~QtDasherScreen();

  void SetFont(std::string Name)
    { fontname = Name; /* set_the_font(); */ }

  void SetFontSize(Dasher::Opts::FontSize fontsize)
    {
#warning QtDasherScreen::SetFontSize() not implemented
    }
  Dasher::Opts::FontSize GetFontSize()
    {
#warning QtDasherScreen::GetFontSize() not implemented
      return (Dasher::Opts::Normal);
    }
  
  void TextSize(symbol Character, int* Width, int* Height, int Size) const
    { 
      // should probably use QPainter::boundingRect()
      *Width = *Height = font.pixelSize();
      
    }
  void DrawText(symbol Character, int x1, int y1, int Size) const
    {
      //      QFont font = QFont (fontname.c_str(), Size);
      //      font.setPixelSize(Size);
      QPoint point = QPoint(x1, y1+Size/2);
  
      painter->setFont (font);
      painter->drawText (point,
			 QString(interface->GetDisplayText(Character).c_str()));
    }

  void DrawRectangle(int x1, int y1, int x2, int y2,
		     int Color, Opts::ColorSchemes ColorScheme) const;
  void Polyline(point* Points, int Number) const;
  void DrawPolygon(point* Points, int Number, int Color,
		   Opts::ColorSchemes ColorScheme) const;

  std::vector<int> FontSizes;
  std::vector<QFont> Fonts;
  QFont font;
  int fontsize;
  void Blank() const {
    painter->begin(pixmap);
    painter->setPen (NoPen);
    painter->fillRect(0, 0, m_iWidth, m_iHeight,
		      QColor(255,255,255));
  }
  void Display() {
    painter->end();
    repaint();
  }

  void paintEvent( QPaintEvent * )
  {
    bitBlt(this, 0, 0, pixmap);
  }

  void mousePressEvent (QMouseEvent *e);
  void mouseReleaseEvent (QMouseEvent *e);
  
 protected:
  QColor getColor(int Color, const Opts::ColorSchemes ColorScheme) const;
  
  long QtDasherScreen::get_time();

  CDasherInterface* interface;
  Dasher::CDashEditbox* edit;

  bool paused;

  QPainter* painter;

  QPixmap* pixmap;

  std::string fontname;

  protected slots:
    void timer();

};

#endif