⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpainter.cpp

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CPP
字号:
#include "qpainter.h"#include "qwidget.h"#include "fl_draw.H"#ifdef NANOX#include <FL/n_x.h>#else#include <FL/x.H>#endif#include <FL/Fl.H>#include "qfontmetrics.h"void QPainter::drawText(int x, int y, const QString & str, int len) {  __SetPenColor();  font().SelectFont();  if(len == -1) {    fl_draw(str,ADJUSTX(x),ADJUSTY(y));  } else {    QString tmp(str);    fl_draw(tmp.substr(0,len).c_str(),ADJUSTX(x),ADJUSTY(y));  }  // check for underline - davet  if(font().m_bUnderline == true)  {    //    cerr << "Underline len = " << len << " str = " << str << "\n";    int tlen;    if(len == -1)      tlen = (int)fl_width((const char *)str);    else      tlen = (int)fl_width((const char *)str,len);    //    cerr << "Calculated len = " << tlen << "\n";    fl_line(ADJUSTX(x),ADJUSTY(y+1),ADJUSTX(x+tlen),ADJUSTY(y+1));  }  // check for strikeout flag - davet  if(font().m_bStrikeOut == true)  {    int tlen,yoff;    if(len == -1)      tlen = (int)fl_width((const char *)str);    else      tlen = (int)fl_width((const char *)str,len);    yoff = (fl_height() - fl_descent()) / 2;    fl_line(ADJUSTX(x),ADJUSTY(y-yoff),ADJUSTX(x+tlen),ADJUSTY(y-yoff));  }}  bool QPainter::begin(const QPaintDevice * pix){   Fl_X *i = Fl_X::i(pix);  if(!i) {    pix->show();    i = Fl_X::i(pix);  }  if(i && fl_window != i->other_xid && fl_window != i->xid)    pix->make_current();  m_Widget = (FLTK_PARENT_WIDGET*) pix;  #ifndef USE_FL_WIDGET  if(m_Widget) {    m_Widget->show();  }#endif  return true; }bool QPainter::end(){  return true;}void QPainter::qDrawShadeLine( int x1, int y1, int x2, int y2,			       const QColorGroup &g, bool sunken,			       int lineWidth, int midLineWidth ){  if(!sunken) {    fl_color(g.light().red(),	     g.light().green(),	     g.light().blue());  } else {    fl_color(g.dark().red(),	     g.dark().green(),	     g.dark().blue());  }    fl_line(ADJUSTX(x1),ADJUSTY(y1),ADJUSTX(x2),ADJUSTY(y2));  if(sunken) {    fl_color(g.light().red(),	     g.light().green(),	     g.light().blue());  } else {    fl_color(g.dark().red(),	     g.dark().green(),	     g.dark().blue());  }    // for now assume that the line is horizontal .. yes I know this sucks  fl_line(ADJUSTX(x1),ADJUSTY(y1+1),ADJUSTX(x2),ADJUSTY(y2+1));  }void QPainter::qDrawShadePanel( int x, int y, int w, int h,				const QColorGroup & cg, bool sunken,				int lineWidth = 1, const QBrush *fill = 0 ) {  if(!sunken) {    fl_color(cg.light().red(),	     cg.light().green(),	     cg.light().blue());  } else {    fl_color(cg.dark().red(),	     cg.dark().green(),	     cg.dark().blue());  }  for(int i=0; i<lineWidth; i++) {    fl_line(ADJUSTX(x)+i,ADJUSTY(y)+i,ADJUSTX(x)+w-i,ADJUSTY(y)+i);    fl_line(ADJUSTX(x)+i,ADJUSTY(y)+i,ADJUSTX(x)+i,ADJUSTY(y)+h-i);      }  if(sunken) {    fl_color(cg.light().red(),	     cg.light().green(),	     cg.light().blue());  } else {    fl_color(cg.dark().red(),	     cg.dark().green(),	     cg.dark().blue());  }  for(int i=0; i<lineWidth; i++) {    fl_line(ADJUSTX(x)+i,ADJUSTY(y)-i+h,ADJUSTX(x)+w-i,ADJUSTY(y)-i+h);    fl_line(ADJUSTX(x)+w-i,ADJUSTY(y)+h-i,ADJUSTX(x)+w-i,ADJUSTY(y)+i);  }}void QPainter::setBackgroundColor(const QColor & c){  m_BGColor = c; }void QPainter::fillRect(int x, int y, int w, int h, const QBrush & br){  QWidget * p = (QWidget *)m_Widget;  if(!p->inPaint())    return;  fl_rectf(ADJUSTX(x),ADJUSTY(y),w,h,	   br.color().red(),	   br.color().green(),	   br.color().blue());}void QPainter::drawPixmap(int x, int y, const QPixmap & pix){  QPoint tmp;  tmp.setX(ADJUSTX(x));  tmp.setY(ADJUSTY(y));   pix.drawPixmap(tmp,QRect(0,0,pix.width(),pix.height()));}void QPainter::drawPixmap(const QPoint & point, const QPixmap & pixmap, 			  const QRect & rect) {   QPoint tmp;  tmp.setX(ADJUSTX(point.x()));  tmp.setY(ADJUSTY(point.y()));   pixmap.drawPixmap(tmp,rect);}void QPainter::drawEllipse(int x, int y, int w, int h) {   __SetPenColor();  fl_pie(ADJUSTX(x),ADJUSTY(y),w,h,0,359);}void QPainter::drawEllipse(const QRect & rect){  drawEllipse(rect.x(), rect.y(), rect.width(), rect.height());}void QPainter::eraseRect(int x, int y, int w, int h) {   fillRect(x+1,y+1,w,h,m_BGColor);}void QPainter::eraseRect(const QRect & rect){  eraseRect(rect.x(), rect.y(), rect.width(), rect.height());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -