Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

QtDasherScreen.cc

Go to the documentation of this file.
00001 // QtDasherScreen.cc
00002 // (c) 2003 Yann Dirson
00003 // Derived from GtkDasherCanvas.cc
00004 // (c) 2002 Philip Cowans
00005 
00006 #include <iostream>
00007 #include <string>
00008 
00009 #include <qpointarray.h>
00010 #include <qpoint.h>
00011 
00012 #include "QtDasherScreen.h"
00013 #include "DasherScreen.h"
00014 #include "SettingsStore.h"
00015 
00016 #define MAXFONTSIZE 25
00017 #define MINFONTSIZE 8
00018 
00019 QtDasherScreen::QtDasherScreen (int _width, int _height,
00020                                 CDasherInterface *_interface,
00021                                 QWidget * _parent, 
00022                                 Dasher::CDashEditbox *_edit):
00023   QWidget(_parent), 
00024   Dasher::CDasherScreen(_width, _height),
00025   fontsize(12),
00026   interface( _interface ),
00027   fontname( "fixed" )
00028 {
00029   font = QFont (fontname.c_str(), fontsize);
00030   painter = new QPainter ();
00031 
00032   pixmap = new QPixmap (_width, _height);
00033   pixmap->setOptimization(QPixmap::BestOptim);
00034   interface->SetSettingsStore(new CSettingsStore);
00035 
00036   interface->ChangeLanguageModel(0);
00037   interface->ChangeView(0);
00038   interface->ChangeEdit(_edit);
00039   edit = _edit;
00040 
00041 
00042 /* interface->GetFontSizes(&FontSizes);
00043 
00044   for (int i=0; i<FontSizes.size(); i++) {
00045     if (FontSizes[i]>Fonts.size())
00046       Fonts.resize((FontSizes[i])+1);    
00047     Fonts[FontSizes[i]]= QFont (fontname.c_str(), FontSizes[i]);
00048 //    Fonts[FontSizes[i]].setPixelSize(FontSizes[i]);
00049   }
00050 */
00051   interface->ChangeScreen(this);
00052 
00053   paused=true;
00054                      
00055   QTimer *tmr = new QTimer(this);
00056   connect (tmr, SIGNAL(timeout()), SLOT(timer()));
00057   tmr->start(200);
00058 
00059 }
00060 
00061 long QtDasherScreen::get_time()
00062 {
00063   long s_now;
00064   long ms_now;
00065   
00066   struct timeval tv;
00067   struct timezone tz;
00068   
00069   gettimeofday( &tv, &tz );
00070   
00071   s_now = tv.tv_sec-1054487600;
00072 
00073   ms_now = tv.tv_usec / 1000;
00074 
00075   return( long(s_now*1000 + ms_now) );
00076 
00077 }
00078 
00079 QtDasherScreen::~QtDasherScreen()
00080 { 
00081   delete painter;
00082 }
00083 
00084 QColor QtDasherScreen::getColor(int Color, const Opts::ColorSchemes ColorScheme) const
00085 {
00086   switch (ColorScheme) {
00087   case Dasher::Opts::Nodes1:
00088     switch (Color) {
00089     case 0: return QColor (180, 245, 180);
00090     case 1: return QColor (160, 200, 160);
00091     case 2: return QColor (0, 255, 255);
00092     default: abort ();
00093     }
00094   case Dasher::Opts::Nodes2:
00095     switch (Color) {
00096     case 0: return QColor (255, 185, 255);
00097     case 1: return QColor (140, 200, 255);
00098     case 2: return QColor (255, 175, 175);
00099     default: abort ();
00100     }
00101   case Dasher::Opts::Special1: return QColor (240, 240, 240);
00102   case Dasher::Opts::Special2: return QColor (255, 255, 255);
00103   case Dasher::Opts::Groups:
00104     switch (Color) {
00105     case 0: return QColor (255, 255, 0);
00106     case 1: return QColor (255, 100, 100);
00107     case 2: return QColor (0, 255, 0);
00108     default: abort ();
00109     }
00110   case Dasher::Opts::Objects: return QColor (0, 0, 0);
00111   default: abort();
00112   }   
00113 }
00114   
00115 void QtDasherScreen::DrawRectangle(int x1, int y1, int x2, int y2,
00116                                    int Color, Opts::ColorSchemes ColorScheme) const
00117 {
00118   painter->setBrush (getColor (Color, ColorScheme));
00119   painter->drawRect (x1, y1, x2-x1, y2-y1);
00120 }
00121 
00122 static void Points_to_QPointArray(const Dasher::CDasherScreen::point* const points,
00123                                   int number,
00124                                   QPointArray &qpa)
00125 {
00126   for (int i = 0; i < number; i++) {
00127     qpa.setPoint (i, points[i].x, points[i].y);  
00128   }
00129 }
00130 
00131 void QtDasherScreen::Polyline(point* Points, int Number) const
00132 {
00133   QPointArray qpa(Number);
00134   Points_to_QPointArray (Points, Number, qpa);
00135   painter->setPen (SolidLine);
00136   painter->drawPolyline (qpa);
00137   painter->setPen (NoPen);
00138 }
00139 
00140 void QtDasherScreen::DrawPolygon(point* Points, int Number, int Color,
00141                                  Opts::ColorSchemes ColorScheme) const
00142 {
00143   painter->setBrush (getColor (Color, ColorScheme));
00144   QPointArray qpa(Number);
00145   Points_to_QPointArray (Points, Number, qpa);
00146   painter->drawPolygon (qpa);
00147 }
00148 
00149 void QtDasherScreen::mousePressEvent (QMouseEvent *)
00150 {
00151     paused=false;
00152     interface->Unpause(get_time());
00153 }
00154 
00155 void QtDasherScreen::mouseReleaseEvent(QMouseEvent *e)
00156 {
00157     QPoint p = e->pos();
00158     interface->PauseAt(p.x(), p.y());
00159     paused=true;
00160 }
00161 
00162 void QtDasherScreen::timer()
00163 {
00164   if (paused==false) {
00165     QPoint cursorpos;
00166     cursorpos=this->cursor().pos();
00167     cursorpos=mapFromGlobal(cursorpos);
00168 
00169     interface->TapOn(cursorpos.x(), cursorpos.y(), get_time());
00170   }
00171 }
00172 
00173 
00174 
00175 
00176 
00177 
00178 
00179 
00180 

Generated on Sat Nov 5 16:16:00 2005 for OPIE by  doxygen 1.4.2