# Interface PaperType

All Known Subinterfaces:
  `GlyphPaper.GlyphPaperType, PaperType2D, PaperType3D`

All Known Implementing Classes:
  `CompositePaperType2D, MonoPaperType, OverPaperType2D, PaintPaperType, PaintPaperType2D, PixelStackPaperType3D, RgbPaperType, RgbPaperType2D, RgbPaperType3D, SortedPaperType3D, ZBufferPaperType3D`

public interface PaperType
Abstracts the graphic substrate that datasets can be plotted on. Painting operations are performed on a supplied `Paper` object that must be of the type appropriate to this PaperType. Geometry-specific sub-interfaces provide more specific painting operations.

Since:
  14 Feb 2013
Author:
  Mark Taylor

## Method Summary

Modifier and Type
Method
Description
`Icon`
`createDataIcon(Surface surface, Drawing[] drawings, Object[] plans, DataStore dataStore, boolean requireCached)`
Paints the content of a list of drawing objects onto a given plot surface, and returns the result as an Icon.
`boolean`
`isBitmap()`
Indicates whether this represents a bitmap or vector type of graphics context.
`void`
`placeDecal(Paper paper, Decal decal)`
Paints a Decal onto a given paper object.

## Method Details

### isBitmap

boolean isBitmap()
Indicates whether this represents a bitmap or vector type of graphics context.

Returns:
  true for pixellated surface, false for vector

### createDataIcon

@Slow Icon createDataIcon(Surface surface, Drawing[] drawings, Object[] plans, DataStore dataStore, boolean requireCached)
Paints the content of a list of drawing objects onto a given plot surface, and returns the result as an Icon.

The `requireCached` argument provides a hint about whether the output icon will cache computations. Set this true if you might want to paint the returned icon multiple times, false if it is one-shot only, or if keeping the memory footprint small is more important than speed.

In general it's OK to call the `paintIcon` method of the returned object with a null `Component`. The returned icon is the size of the `plotBounds` rectangle, and will be painted at plotBounds.x, plotBounds.y. It contains everything in that region except perhaps for decorations, and it is opaque. It does not (cannot) contain external axis labels, but must contain any internal markings which appear underneath the data points.

An implementation will usually create a Paper object and pass it in turn to the supplied `drawings` so that the returned icon can be based on the drawn-on paper.

Parameters:
  `surface` - plot surface
  `drawings` - array of drawing objects to be painted in sequence
  `plans` - array of plan objects corresponding to the `drawings` array argument
  `dataStore` - data storage object
  `requireCached` - hint about whether to cache the calculation data
Returns:
  plotBounds-sized icon

### placeDecal

void placeDecal(Paper paper, Decal decal)
Paints a Decal onto a given paper object.

Parameters:
  `paper` - graphics destination, of appropriate type for this object
  `decal` - graphic to paint