You are here

function views_pdf_plugin_style_grid::render in Views PDF 7.3

Render the style.

Overrides views_plugin_style::render

See also

views_pdf_views_plugins()

File

./views_pdf_plugin_style_grid.inc, line 20
Grid PDF style

Class

views_pdf_plugin_style_grid
This class holds all the funtionality used for the grid style plugin.

Code

function render() {
  $options = $this->options['info'];
  $cols = $options['columns'];
  $colspace = $options['column_space'];
  $rows = $options['rows'];
  $rowspace = $options['row_space'];

  // Need to add the first page here to get dimensions.
  $this->view->pdf
    ->addPage();
  $fullpage = FALSE;

  // Calculate grid parameters - cell size and offsets.
  $pgdim = $this->view->pdf
    ->getPageDimensions();
  $cell_width = ($pgdim['wk'] - $pgdim['lm'] - $pgdim['rm'] - $colspace * ($cols - 1)) / $cols;
  $cell_height = ($pgdim['hk'] - $pgdim['tm'] - $pgdim['bm'] - $rowspace * ($rows - 1)) / $rows;
  $this->row_plugin->options['grid'] = array(
    'w' => $cell_width,
    'h' => $cell_height,
  );

  // Set up indirect variables so as to iterate row-wise or column-wise.
  if ($options['col_wise']) {
    $first = $rows;
    $second = $cols;
    $first_idx = 'rowidx';
    $second_idx = 'colidx';
  }
  else {
    $first = $cols;
    $second = $rows;
    $first_idx = 'colidx';
    $second_idx = 'rowidx';
  }
  $colidx = $rowidx = 0;
  $this->view->row_index = 0;
  foreach ($this->view->result as $row) {
    if ($fullpage) {
      $this->view->pdf
        ->addPage();
      $fullpage = FALSE;
    }

    // Calculate co-ordinates of top left corner of current grid cell.
    $this->row_plugin->options['grid']['x'] = $colidx * ($cell_width + $colspace);
    $this->row_plugin->options['grid']['y'] = $rowidx * ($cell_height + $rowspace);
    $this->row_plugin->options['grid']['new_cell'] = TRUE;
    $this->row_plugin
      ->render($row);
    $this->view->row_index++;

    // Use variable-variables to run row or column wise.
    if (++${$first_idx} == $first) {
      ${$first_idx} = 0;
      if (++${$second_idx} == $second) {
        ${$second_idx} = 0;
        $fullpage = TRUE;
      }
    }
  }
}