示例#1
0
void UIListView::setColumnVisible( int col, bool show )
{
        if ( columnVisible( col ) == show )
                return ;

        ColumnData * data = m_data.find( col );

        if ( show == false )
        {
                data->name = columnText( col );
                data->size = columnWidth( col );
                data->mode = columnWidthMode( col );

                setColumnText ( col, "" );
                setColumnWidth( col, 0 );
                setColumnWidthMode( col, QListView::Manual );
                header()->setResizeEnabled( false, col );
        }
        else
        {
                setColumnText ( col, data->name );
                setColumnWidth( col, data->size );
                setColumnWidthMode( col, data->mode );
                header()->setResizeEnabled( true, col );
        }
}
示例#2
0
int visible(DataSet *terrain, GridPoint start, GridPoint end, float fNODATA)
{
  GridPoint p;
  float x0, y0, x1, y1, y_start;
  float dx, dy, dydx;
  int idx;
  float h0, h1;
  double dzds;

  assert(start.r >= 0 && start.c >= 0);
  assert(end.r >= 0 && end.c >= 0);
  assert(start.r < terrain->grid.nrow && start.c < terrain->grid.ncol);
  assert(end.r < terrain->grid.nrow && end.c < terrain->grid.ncol);

  if (gpEqual(start, end)) {
    gpSlope(terrain, start, end, h0, h1, dzds);
    if (h0 == fNODATA || h1 == fNODATA)
      return 0;
    else
      return 1;
  }

  // calculate slope in x and y
  gpCenter(start, x0, y0);
  gpCenter(end, x1, y1);
  gpDiff(start, end, dx, dy);
  if (dx == 0) {
    idx = 0;
    dydx = 0; // not used
  }else {
    // idx is +1 or -1
    idx = (int)(dx / fabs(dx));
    dydx = dy / dx;
  }

  // calculate the z gradient
  gpSlope(terrain, start, end, h0, h1, dzds);
  if (h0 == fNODATA || h1 == fNODATA)
    return 0;
  y_start = y1 = y0;
  x1 = x0;
  p = start;

  // run through columns
  while (p.c >= 0 && p.c < terrain->grid.ncol &&
         p.r >= 0 && p.r < terrain->grid.nrow) {
    // increment x1 by a column, or half a column
    if (p.c == start.c || p.c == end.c)
      x1 += .5 * idx;
    else
      x1 += idx;
    // calculate next y intercept
    y0 = y1;
    if (idx == 0)
      y1 = y0 + dy;
    else
      y1 = y_start + dydx * (x1 - x0);
    // translate y intercept to row index
    p.r = dy >= 0 ? (int)y0 : (int)(ceilf(y0) - 1);
    // check column visibility
    if (gpBefore(p, end, dx, dy) &&
        !columnVisible(terrain, start, p, dzds, y0, y1, fNODATA))
      return 0;
    // proceed to next column
    p.c += idx;
  }

  return 1;
}