/*
* Copyright (c) 2006 Matthew Hall and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Matthew Hall - initial API and implementation
*/
package org.eclipse.nebula.paperclips.core.grid;
import org.eclipse.swt.graphics.GC;
/**
* Interface for drawing a GridLook.
*
* @author Matthew Hall
*/
public interface GridLookPainter {
/**
* Returns the grid margins used for the GridLook.
*
* @return the grid margins used for the GridLook.
* @see GridMargins
*/
public GridMargins getMargins();
/**
* Paints the grid look onto the GC.
*
* @param gc
* the graphics context to paint on.
* @param x
* the x coordinate of the top-left of the grid.
* @param y
* the y coordinate of the top-left of the grid.
* @param columns
* the column widths. The left and right margins of each cell are
* included in the column widths.
* @param headerRows
* the header row heights.
* @param headerColSpans
* a two-dimensional array of cell spans in the header. Each
* element in the outer array is a header row. Each element of an
* inner array is a cell, where the element value indicates how
* many columns the cell spans.
* @param firstRowIndex
* the zero-based index of the first row displayed on the page.
* @param topOpen
* whether the top body row should be drawn with the top edge of
* the cell border "open." An open top border is a visual
* indication that the top row is being continued from the
* previous page.
* @param bodyRows
* the body row heights.
* @param bodyColSpans
* a two-dimensional array of cell spans in the body. Each
* element in the outer array is a body row. Each element of an
* inner array is a cell, where the element value indicates how
* many columns the cell spans.
* @param bottomOpen
* whether the bottom body row should be drawn with the bottom
* edge of the cell border "open." An open bottom border is a
* visual indication that the bottom row will be continued on the
* next page.
* @param footerRows
* the footer row heights.
* @param footerColSpans
* a two-dimensional array of cell spans in the footer. Each
* element in the outer array is a footer row. Each element of an
* inner array is a cell, where the element value indicates how
* many columns the cell spans.
*/
public void paint(final GC gc, final int x, final int y,
final int[] columns, final int[] headerRows,
final int[][] headerColSpans, final int firstRowIndex,
final boolean topOpen, final int[] bodyRows,
final int[][] bodyColSpans, final boolean bottomOpen,
final int[] footerRows, final int[][] footerColSpans);
/**
* Disposes the system resources allocated by this GridLookPainter. The
* dispose method is <b>not</b> a permanent disposal of a GridLookPainter.
* It is intended to reclaim system resources, however future calls to
* paint(GC,int,int) may require that the resources be allocated again.
*/
public void dispose();
}