Source Code (Use browser search to find items of interest.)

Class Index

kspread'AIBar (./koffice/kspread/qtai_bar.h:39)

class AIBar : public AIBase
{
    Q_OBJECT
public:
    AIBar(QWidget *parent,const char *name,int n=1);
    void   setData(int bar,double value);
    void   setRanges(double mn,double mx);
    void   setRangeType(QString range_type_string);

    void   setScaleTile(int scale_tile);
    void   setAutoRepaint(bool ar);
    void   setPlotColor(int bar,int r,int g,int b);
    void   setPlotColor(int bar,QColor c);
    void   setCalcLimits(bool calc_limits);
    void   setAlarmBG(bool alarm_bg);
      // shows the alarm levels as bar background and uses pointer
      // for min/max and actual value display
    void   showScale(bool sscale);

    void   addLimits(double ll,double l,double h,double hh);
    void   addLimitLL(double ll,bool on);
    void   addLimitL(double l,bool on);
    void   addLimitH(double h,bool on);
    void   addLimitHH(double hh,bool on);

    void   enableLimits(bool ll,bool l,bool h,bool hh);

    QBrush       *brush;
    int          nbars;
    double       min,max;
    double       *actual;
    QColor       color[8];
    QString      range_s;
    double       d_limits[4];
    bool         b_limits[4];
    QColor       c_limits[4];
public slots:
    void   printIt();

signals:

protected:
    virtual void drawIt( QPainter *p);
    virtual void drawGrid( QPainter *p);
    void    drawContents(QPainter *p);
    void    paintEvent( QPaintEvent *p );
    int     scale_tile;
    bool    autorepaint;
    bool    showscale;
    bool    alarm_bg;
    bool    calc_limits;

private:
    QPrinter	 *printer;
};

/*******************************************************************/
/********* End Draw Window Definition  *****************************/
/*******************************************************************/

kspread'AIBar::AIBar() (./koffice/kspread/qtai_bar.cpp:39)

AIBar::AIBar(QWidget *parent,const char *name,int n)
  : AIBase(parent,name)
{
  int i;

  printer = new QPrinter;
  brush = new QBrush(SolidPattern);

  nbars=n;

  if ((actual=(double*)malloc(nbars*sizeof(double)))==NULL) {
    actual=NULL;
    nbars=0;
    fprintf(stderr,"Can't alloc memory for actual!\n");
    exit(-1);
  }

  for (i=0;i<n;i++) {
    actual[i] = 0.0;
  }

  for (i=0;i<8;i++) {
    color[i].setRgb( 0, 164, 0 );		
  }

  range_s="";

  c_limits[D_LL].setRgb(255,0,0);
  c_limits[D_HH].setRgb(255,0,0);
  c_limits[D_L].setRgb(255,255,0);
  c_limits[D_H].setRgb(255,255,0);

  scale_tile=8;
  autorepaint=FALSE;
  showscale=TRUE;
  alarm_bg=FALSE;
  calc_limits=FALSE;
}


kspread'AIBar::drawGrid() (./koffice/kspread/qtai_bar.cpp:78)

void AIBar::drawGrid( QPainter *p )
{
  int i;
  int w=width()*FACTOR,h=height()*FACTOR;
  int      bl,br;
  int      bzero=0,bact=0,bmax=1,bmin=0;
  int      bstart,bwidth;
  QString  str="";
  QFont font("Helvetica",9);
  QFontMetrics fm(font);

  p->setFont(font);

  //bl=(int)((double)w/2.0+1);
  //br=(int)((double)2*w/3.0+1);

  QString sm1="";
  QString sm2="";

  sm1.sprintf("%.2f\0",(double)min);
  sm2.sprintf("%.2f\0",(double)max);

  //bl=(int)((double)w/2.0+1);
  //br=(int)((double)2*w/3.0+1);

  if (fm.width(sm1)>fm.width(sm2)) {
    bl=(fm.width(sm1))*FACTOR;
  } else {
    bl=(fm.width(sm2))*FACTOR;
  }
  br=w-5;
  if (br-bl>50) br=bl+50;

  bmax=(int)_BAR_MARGIN;
  bmin=(int)h-_BAR_MARGIN;
  bzero=(int)(bmin-min*(bmin-bmax)/(min-max));
  bstart=bzero,bwidth=bact-bzero;

  p->setWindow(0,0,w,h);	// defines coordinate system

  p->setPen(c_grid);				

  p->drawLine(bl-1,bmax,bl-1,bmin);
  p->drawLine(bl-5,bzero,br+10,bzero);

  for (i=0;i<=scale_tile;i++) {
    p->drawLine(bl-5,bmin-i*(bmin-bmax)/scale_tile,bl,
		bmin-i*(bmin-bmax)/scale_tile);
    str.sprintf("%.0f\0",(double)min-i*(min-max)/scale_tile);		
    p->drawText(bl-8-fm.width(str),bmin-i*(bmin-bmax)/scale_tile+fm.height()/2,str);
  }
}


kspread'AIBar::drawIt() (./koffice/kspread/qtai_bar.cpp:131)

void AIBar::drawIt( QPainter *p )
{
     QPoint   qp(0,0);
     QColor   c;
     QPointArray qa(4);
     int      w=width()*FACTOR;
     int      h=height()*FACTOR;
     QFont    font("Helvetica",9);
     QFontMetrics fm(font);
     QString str="";
     int      i,j;
     int      bl,br;
     int      bzero,bact,bmax,bmin;
     int      bstart,bwidth;

     QString sm1="";
     QString sm2="";

     if (showscale) {
       sm1.sprintf("%.2f\0",(double)min);
       sm2.sprintf("%.2f\0",(double)max);

       //bl=(int)((double)w/2.0+1);
       //br=(int)((double)2*w/3.0+1);
       if (fm.width(sm1)>fm.width(sm2)) {
	 bl=(fm.width(sm1))*FACTOR;
       } else {
	 bl=(fm.width(sm2))*FACTOR;
       }
       br=w-5;
       if (br-bl>50) br=bl+50;
     } else {
       bl=0;br=w;
     }

     bmax=_BAR_MARGIN; //(int)20;
     bmin=(int)h-_BAR_MARGIN; //-20;
     bstart=bzero=(int)(bmin-min*(bmin-bmax)/(min-max));
	
     p->setViewport(0,0,width(),height());	// defines coordinate system
     p->setWindow(0,0,w,h);	// defines coordinate system


	 int    n;

  static int     bw=-1,bh=-1; // BG Buffer
  static QPixmap *bg_buf=NULL;
  QPainter bg_p;



kspread'AIBar::printIt() (./koffice/kspread/qtai_bar.cpp:348)

void AIBar::printIt()
{
    if ( printer->setup(this) ) {
	QPainter paint;
	paint.begin( printer );	
	drawIt(&paint);
	paint.end();
    }
}

//
// Called when the widget needs to be updated.
//


kspread'AIBar::paintEvent() (./koffice/kspread/qtai_bar.cpp:362)

void AIBar::paintEvent( QPaintEvent * )
{
  QPoint   qp(0,0);
  QPainter paint;
  QPainter tmp; // for double buffering
  QPixmap  pix(width(),height());

  //QPixmap  pix(width(),height());

  //QPixmap  *pix;

  paint.begin(this);

  // drawIt( &paint );		        // without double buffer
  // pix=new QPixmap(width(),height());

  tmp.begin( &pix );			// begin painting
  tmp.setWindow(0,0,width(),height());
  drawIt( &tmp );				
  tmp.end();				// painting done

  paint.drawPixmap(qp,pix);

  paint.end();

  // delete pix;
}


kspread'AIBar::drawContents() (./koffice/kspread/qtai_bar.cpp:390)

void AIBar::drawContents(QPainter *p)
{
  drawIt(p);
}


kspread'AIBar::setData() (./koffice/kspread/qtai_bar.cpp:395)

void AIBar::setData(int bar,double value)
{
  actual[bar]=value;
  if (autorepaint)
    repaint(FALSE);
}


kspread'AIBar::setAutoRepaint() (./koffice/kspread/qtai_bar.cpp:402)

void AIBar::setAutoRepaint(bool ar)
{
  autorepaint=ar;
}


kspread'AIBar::showScale() (./koffice/kspread/qtai_bar.cpp:407)

void AIBar::showScale(bool sscale)
{
  showscale=sscale;
}


kspread'AIBar::setRanges() (./koffice/kspread/qtai_bar.cpp:412)

void AIBar::setRanges(double mn,double mx)
{
  min=mn;
  max=mx;
}


kspread'AIBar::setPlotColor() (./koffice/kspread/qtai_bar.cpp:418)

void AIBar::setPlotColor(int bar,int r,int g,int b)
{
  color[bar].setRgb(r,g,b);
}


kspread'AIBar::setPlotColor() (./koffice/kspread/qtai_bar.cpp:423)

void AIBar::setPlotColor(int bar,QColor c)
{
  setPlotColor(bar,c.red(),c.green(),c.blue());
}


kspread'AIBar::setRangeType() (./koffice/kspread/qtai_bar.cpp:428)

void AIBar::setRangeType(QString rs)
{
  range_s=rs;
}


kspread'AIBar::addLimits() (./koffice/kspread/qtai_bar.cpp:433)

void AIBar::addLimits(double ll,double l,double h,double hh)
{
  d_limits[D_LL]=ll;
  d_limits[D_L]=l;
  d_limits[D_H]=h;
  d_limits[D_HH]=hh;
}


kspread'AIBar::enableLimits() (./koffice/kspread/qtai_bar.cpp:441)

void AIBar::enableLimits(bool ll,bool l,bool h,bool hh)
{
  b_limits[D_LL]=ll;
  b_limits[D_L]=l;
  b_limits[D_H]=h;
  b_limits[D_HH]=hh;
}


kspread'AIBar::addLimitLL() (./koffice/kspread/qtai_bar.cpp:449)

void AIBar::addLimitLL(double ll,bool on)
{
  d_limits[D_LL]=ll;
  b_limits[D_LL]=on;
}


kspread'AIBar::addLimitL() (./koffice/kspread/qtai_bar.cpp:455)

void AIBar::addLimitL(double l,bool on)
{
  d_limits[D_L]=l;
  b_limits[D_L]=on;
}


kspread'AIBar::addLimitH() (./koffice/kspread/qtai_bar.cpp:461)

void AIBar::addLimitH(double h,bool on)
{
  d_limits[D_H]=h;
  b_limits[D_H]=on;
}


kspread'AIBar::addLimitHH() (./koffice/kspread/qtai_bar.cpp:467)

void AIBar::addLimitHH(double hh,bool on)
{
  d_limits[D_HH]=hh;
  b_limits[D_HH]=on;
}


kspread'AIBar::setScaleTile() (./koffice/kspread/qtai_bar.cpp:473)

void AIBar::setScaleTile(int scale_tile)
{
  this->scale_tile=scale_tile;
}

kspread'AIBar::setAlarmBG() (./koffice/kspread/qtai_bar.cpp:477)

void AIBar::setAlarmBG(bool alarm_bg)
{
  this->alarm_bg=alarm_bg;
}



kspread'AIBar::setCalcLimits() (./koffice/kspread/qtai_bar.cpp:483)

void AIBar::setCalcLimits(bool calc_limits)
{
  this->calc_limits=calc_limits;
}