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

Class Index

kiconedit'KColorGrid (./kdegraphics/kiconedit/kcolorgrid.h:52)

class KColorGrid : public QWidget
{
private:
    Q_OBJECT
public:
  KColorGrid( QWidget * parent = 0, const char *name = 0, int spacing = 0);
  virtual ~KColorGrid() {};

  enum GridState { Plain, Shaded };

  void setSpacing(int space) { s = space; update(); }
  void setGridState(GridState state) { gridstate = state;}
  GridState gridState() { return gridstate; }
  void setGrid(bool state) { hasgrid = state; }
  int spacing() { return s; }
  bool hasGrid() { return hasgrid; }
  uint numColors() { return numcolors.size(); }
  uint colors( uint *c ) { c = numcolors.data(); return numcolors.size(); }
  bool contains(uint c) { return numcolors.contains(c); }
  uint colorAt(int idx) { return gridcolors.at(idx); }
  uint *data() {return numcolors.data(); }
  void fill(uint color);
  int numCols() { return cols; }
  int numRows() { return rows; }

  virtual void setCellSize( int s );
  virtual int cellSize() { return cellsize; }
  virtual QSize sizeHint() const;

  void setSize(const QSize s) { setNumRows(s.height()); setNumCols(s.width()); }

public slots:
  //virtual void show();

signals:
  void addingcolor(uint);
  void colorschanged(uint, uint*);

protected:
  void updateCell(int row, int col, bool f);
  virtual void paintCell( QPainter *p, int row, int col) = 0;
  virtual void paintEvent(QPaintEvent *);
  //virtual void resizeEvent(QResizeEvent *);
  void setColor(int colNum, uint, bool update = true );
  void updateColors();
  virtual void setNumRows(int);
  virtual void setNumCols(int);
  virtual int totalWidth() { return totalwidth; }
  virtual int totalHeight() { return totalheight; }
  int findRow(int y) { return getY(y); }
  int getY(int y);
  int findCol(int x) { return getX(x); }
  int getX(int x);
  const QRect viewRect();

//private:
  int s, cellsize, totalwidth, totalheight;
  int rows, cols, ypos, xpos;
  GridState gridstate;
  bool hasgrid;
  KColorArray gridcolors, numcolors;
};



kiconedit'KColorGrid::KColorGrid() (./kdegraphics/kiconedit/kcolorgrid.cpp:69)

KColorGrid::KColorGrid(QWidget *parent, const char *name, int space)
 : QWidget(parent, name)
{
  //debug("KColorGrid - constructor");
  s = space;
  rows = cols = totalwidth = totalheight = 0;
  setCellSize(10);
  setGridState(Plain);
  setGrid(true);
  numcolors.resize(0);
  gridcolors.resize(0);

  //debug("KColorGrid - constructor - done");
}
/*
void KColorGrid::show()
{
  //updateScrollBars();
  QWidget::show();
}
*/

kiconedit'KColorGrid::paintEvent() (./kdegraphics/kiconedit/kcolorgrid.cpp:90)

void KColorGrid::paintEvent(QPaintEvent *e)
{
  //debug("KColorGrid::paintEvent");

  //updateScrollBars();
  //QWidget::paintEvent(e);

  const QRect urect = e->rect();

  //debug("Update rect = ( %i, %i, %i, %i )",
    //urect.left(),urect.top(), urect.width(), urect.height() );


  int firstcol = getX(urect.x())-1;
  int firstrow = getY(urect.y())-1;
  int lastcol  = getX(urect.right())+1;
  int lastrow  = getY(urect.bottom())+1;

  QWMatrix matrix;
  QPainter p;
  p.begin( this );

  firstrow = (firstrow < 0) ? 0 : firstrow;
  firstcol = (firstcol < 0) ? 0 : firstcol;
  lastrow = (lastrow >= rows) ? rows : lastrow;
  lastcol = (lastcol >= cols) ? cols : lastcol;
  //debug("%d x %d  -  row: %d x %d", urect.x(), urect.y(), urect.width(), urect.height());
  //debug("col: %d -> %d  -  row: %d -> %d", firstcol, lastcol, firstrow, lastrow);

/*
  if(this->isA("KDrawGrid"))
    debug("KDrawGrid\n   firstcol: %d\n   lastcol: %d\n   firstrow: %d\n   lastrow: %d",
        firstcol, lastcol, firstrow, lastrow);
*/
  for(int i = firstrow; i < lastrow; i++)
  {
    //if(this->isA("KDrawGrid"))
    //  debug("Updating row %d", i);
    for(int j = firstcol; j < lastcol; j++)
    {
      matrix.translate( (j*cellsize), (i*cellsize) );
      p.setWorldMatrix( matrix );
      //p.setClipRect(j*cellsize, i*cellsize, cellsize, cellsize);
      paintCell(&p, i, j);
      //p.setClipping(FALSE);
      matrix.reset();
      p.setWorldMatrix( matrix );
    }
    //kapp->processEvents();
  }

  p.end();

}

/*
void KColorGrid::resizeEvent(QResizeEvent *)
{
  //debug("resize: width:  %d - total: %d", width(), totalwidth);
  //debug("resize: height: %d - total: %d", height(), totalheight);
}
*/


kiconedit'KColorGrid::sizeHint() (./kdegraphics/kiconedit/kcolorgrid.cpp:153)

QSize KColorGrid::sizeHint() const
{
  return QSize(totalwidth, totalheight);
}


kiconedit'KColorGrid::getY() (./kdegraphics/kiconedit/kcolorgrid.cpp:158)

int KColorGrid::getY( int y )
{
  if(y > (totalheight-1))
    y = totalheight;
  if(cellsize == 1)
    return y;
  return (y/cellsize);
}


kiconedit'KColorGrid::getX() (./kdegraphics/kiconedit/kcolorgrid.cpp:167)

int KColorGrid::getX( int x )
{
  if( x > totalwidth-1)
    x = totalwidth;
  if(cellsize == 1)
    return x;
  return (x/cellsize);
}


kiconedit'KColorGrid::viewRect() (./kdegraphics/kiconedit/kcolorgrid.cpp:176)

const QRect KColorGrid::viewRect()
{
  //debug("viewRect");
  const QRect r(0, 0, width(), height());
  //debug("viewRect - %d x %d - %d x %d", x, y, w, h);
  return r;
}


kiconedit'KColorGrid::setNumRows() (./kdegraphics/kiconedit/kcolorgrid.cpp:184)

void KColorGrid::setNumRows(int n)
{
  //debug("setNumRows");
  if(n < 0 || n == rows)
    return;

  rows = n;

  gridcolors.resize(n*numCols());
  //QTableView::setNumRows(n);
  totalheight = (n * cellsize) + 1;
  resize(totalwidth, totalheight);
  //debug("setNumRows() - gridcolors: %d  size: %d", gridcolors.size(), numCols()*numRows());
}


kiconedit'KColorGrid::setNumCols() (./kdegraphics/kiconedit/kcolorgrid.cpp:199)

void KColorGrid::setNumCols(int n)
{
  //debug("setNumCols");
  if(n < 0)
    return;
  int on = numCols();
  KColorArray gc(gridcolors);
  gc.detach();
  //debug("gc size: %d numrows: %d", gc.size(), numRows());
  gridcolors.resize(n*numRows());
  cols = n;

  totalwidth = (n * cellsize) + 1;
  resize(totalwidth, totalheight);
  //debug("numRows: %d", numRows());
  //debug("gridcolor: %d  grid: %d", gridcolors.size(), numRows()*numCols());
  if(numRows() == 0)
    return;

  for(int i = 0; i < numRows(); i++)
  {
    for(int j = 0; j < on; j++)
    {
      //debug("row %d , col %d", i, j);
      if(on <= n)
      {
        //debug("%d %d", (i*numCols())+j, (i*on)+j);
        gridcolors.at((i*numCols())+j) = gc.at((i*on)+j);
      }
      else
        break;
    }
  }

  //debug("setNumCols() - gridcolors: %d  size: %d", gridcolors.size(), numCols()*numRows());
}


kiconedit'KColorGrid::fill() (./kdegraphics/kiconedit/kcolorgrid.cpp:236)

void KColorGrid::fill( uint color)
{
  gridcolors.fill(color);
  numcolors.resize(1);
  numcolors.at(0) = color;
  emit colorschanged(numcolors.size(), numcolors.data());
}


kiconedit'KColorGrid::setColor() (./kdegraphics/kiconedit/kcolorgrid.cpp:244)

void KColorGrid::setColor( int colNum, uint col, bool update )
{
  //debug("KColorGrid::setColor");
  uint oldcolor = gridcolors[colNum];
  gridcolors[colNum] = col;

  if(!update)
    return;

  //debug("KColorGrid::setColor - before adding");
  if(!numcolors.contains(col))
  {
    //debug("KColorGrid::setColor() - adding %u - %d %d %d",
    //  col, qRed(col), qGreen(col), qBlue(col));
    numcolors.append(col);
    //debug("KColorGrid::setColor() - adding done %d", numcolors.size()-1); 
    //numcolors++;
    emit addingcolor(col);
  }

  //debug("KColorGrid::setColor - before removing");
  if(!gridcolors.contains(oldcolor))
  {
    int idx = numcolors.find(oldcolor);
    if(idx != -1)
    {
      //debug("KColorGrid::setColor() - removing %u - %d %d %d",
      //  oldcolor, qRed(oldcolor), qGreen(oldcolor), qBlue(oldcolor));
      numcolors.remove(idx);
      //debug("KColorGrid::setColor() - removing done"); 
      emit colorschanged(numcolors.size(), numcolors.data());
    }
    //numcolors--;
  }

  //debug("KColorGrid::setColor - before updateCell");
  repaint((colNum%numCols())*cellsize,(colNum/numCols())*cellsize,  cellsize, cellsize);
  //updateCell( colNum/numCols(), colNum%numCols(), false );
  //debug("KColorGrid::setColor - after updateCell");
}


kiconedit'KColorGrid::updateCell() (./kdegraphics/kiconedit/kcolorgrid.cpp:285)

void KColorGrid::updateCell( int row, int col, bool  )
{
    //debug("updateCell - before repaint");
  QWMatrix matrix;
  QPainter p;
  p.begin( this );
  matrix.translate( (col*cellsize), (row*cellsize) );
  p.setWorldMatrix( matrix );
  paintCell(&p, row, col);
  p.end();

}



kiconedit'KColorGrid::updateColors() (./kdegraphics/kiconedit/kcolorgrid.cpp:299)

void KColorGrid::updateColors()
{
  numcolors.resize(0);
  for(int i = 0; i < (int)gridcolors.size(); i++)
  {
    uint col = gridcolors.at(i);
    if(!numcolors.contains(col))
      numcolors.append(col);
  }
  emit colorschanged(numcolors.size(), numcolors.data());
}


kiconedit'KColorGrid::setCellSize() (./kdegraphics/kiconedit/kcolorgrid.cpp:311)

void KColorGrid::setCellSize( int s )
{
  cellsize = s;
  totalwidth = (numCols() * s) + 1;
  totalheight = (numRows() * s) + 1;
  resize(totalwidth, totalheight);
  if ( isVisible() )
    repaint(viewRect(), false);
}