Chart-1.9.3: A library for generating 2D Charts and Plots
Copyright(c) Tim Docker 2014
LicenseBSD-style (see chart/COPYRIGHT)
Safe HaskellNone
LanguageHaskell98

Graphics.Rendering.Chart.Backend

Description

This module provides the API for drawing operations abstracted to drive arbitrary Backend.

Synopsis

The backend Monad

type BackendProgram a = Program ChartBackendInstr a Source #

A BackendProgram provides the capability to render a chart somewhere.

The coordinate system of the backend has its initial origin (0,0) in the top left corner of the drawing plane. The x-axis points towards the top right corner and the y-axis points towards the bottom left corner. The unit used by coordinates, the font size, and lengths is the always the same, but depends on the backend. All angles are measured in radians.

The line, fill and font style are set to their default values initially.

Information about the semantics of the instructions can be found in the documentation of ChartBackendInstr.

Backend Operations

fillPath :: Path -> BackendProgram () Source #

Fill the given path using the current FillStyle. The given path will be closed prior to filling. This function does not perform alignment operations on the path. See Path for the exact semantic of paths.

strokePath :: Path -> BackendProgram () Source #

Stroke the outline of the given path using the current LineStyle. This function does not perform alignment operations on the path. See Path for the exact semantic of paths.

drawText :: Point -> String -> BackendProgram () Source #

Draw a single-line textual label anchored by the baseline (vertical) left (horizontal) point. Uses the current FontStyle for drawing.

textSize :: String -> BackendProgram TextSize Source #

Calculate a TextSize object with rendering information about the given string without actually rendering it.

withTransform :: Matrix -> BackendProgram a -> BackendProgram a Source #

Apply the given transformation in this local environment when drawing. The given transformation is applied after the current transformation. This means both are combined.

withClipRegion :: Rect -> BackendProgram a -> BackendProgram a Source #

Use the given clipping rectangle when drawing in this local environment. The new clipping region is intersected with the given clip region. You cannot escape the clip!

withFontStyle :: FontStyle -> BackendProgram a -> BackendProgram a Source #

Use the given font style in this local environment when drawing text.

An implementing backend is expected to guarentee to support the following font families: serif, sans-serif and monospace;

If the backend is not able to find or load a given font it is required to fall back to a custom fail-safe font and use it instead.

withFillStyle :: FillStyle -> BackendProgram a -> BackendProgram a Source #

Use the given fill style in this local environment when filling paths.

withLineStyle :: LineStyle -> BackendProgram a -> BackendProgram a Source #

Use the given line style in this local environment when stroking paths.

Backend Helpers

getPointAlignFn :: BackendProgram (Point -> Point) Source #

Get the point alignment function

getCoordAlignFn :: BackendProgram (Point -> Point) Source #

Get the coordinate alignment function

Text Metrics

data TextSize Source #

Text metrics returned by textSize.

Constructors

TextSize 

Fields

Instances

Instances details
Eq TextSize Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: TextSize -> TextSize -> Bool

(/=) :: TextSize -> TextSize -> Bool

Show TextSize Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> TextSize -> ShowS

show :: TextSize -> String

showList :: [TextSize] -> ShowS

Line Types

data LineCap Source #

The different supported line ends.

Constructors

LineCapButt

Just cut the line straight.

LineCapRound

Make a rounded line end.

LineCapSquare

Make a square that ends the line.

Instances

Instances details
Eq LineCap Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: LineCap -> LineCap -> Bool

(/=) :: LineCap -> LineCap -> Bool

Ord LineCap Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

compare :: LineCap -> LineCap -> Ordering

(<) :: LineCap -> LineCap -> Bool

(<=) :: LineCap -> LineCap -> Bool

(>) :: LineCap -> LineCap -> Bool

(>=) :: LineCap -> LineCap -> Bool

max :: LineCap -> LineCap -> LineCap

min :: LineCap -> LineCap -> LineCap

Show LineCap Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> LineCap -> ShowS

show :: LineCap -> String

showList :: [LineCap] -> ShowS

data LineJoin Source #

The different supported ways to join line ends.

Constructors

LineJoinMiter

Extends the outline until they meet each other.

LineJoinRound

Draw a circle fragment to connet line end.

LineJoinBevel

Like miter, but cuts it off if a certain threshold is exceeded.

Instances

Instances details
Eq LineJoin Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: LineJoin -> LineJoin -> Bool

(/=) :: LineJoin -> LineJoin -> Bool

Ord LineJoin Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

compare :: LineJoin -> LineJoin -> Ordering

(<) :: LineJoin -> LineJoin -> Bool

(<=) :: LineJoin -> LineJoin -> Bool

(>) :: LineJoin -> LineJoin -> Bool

(>=) :: LineJoin -> LineJoin -> Bool

max :: LineJoin -> LineJoin -> LineJoin

min :: LineJoin -> LineJoin -> LineJoin

Show LineJoin Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> LineJoin -> ShowS

show :: LineJoin -> String

showList :: [LineJoin] -> ShowS

data LineStyle Source #

Data type for the style of a line.

Constructors

LineStyle 

Fields

Instances

Instances details
Eq LineStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: LineStyle -> LineStyle -> Bool

(/=) :: LineStyle -> LineStyle -> Bool

Show LineStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> LineStyle -> ShowS

show :: LineStyle -> String

showList :: [LineStyle] -> ShowS

Default LineStyle Source #

The default line style.

Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

def :: LineStyle Source #

Fill Types

newtype FillStyle Source #

Abstract data type for a fill style.

The contained action sets the required fill style in the rendering state.

Constructors

FillStyleSolid 

Fields

Instances

Instances details
Eq FillStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: FillStyle -> FillStyle -> Bool

(/=) :: FillStyle -> FillStyle -> Bool

Show FillStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> FillStyle -> ShowS

show :: FillStyle -> String

showList :: [FillStyle] -> ShowS

Default FillStyle Source #

The default fill style.

Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

def :: FillStyle Source #

Font and Text Types

data FontWeight Source #

The possible weights of a font.

Constructors

FontWeightNormal

Normal font style without weight.

FontWeightBold

Bold font.

Instances

Instances details
Eq FontWeight Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: FontWeight -> FontWeight -> Bool

(/=) :: FontWeight -> FontWeight -> Bool

Ord FontWeight Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Show FontWeight Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> FontWeight -> ShowS

show :: FontWeight -> String

showList :: [FontWeight] -> ShowS

Default FontWeight Source #

The default font weight.

Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

data FontSlant Source #

The possible slants of a font.

Constructors

FontSlantNormal

Normal font style without slant.

FontSlantItalic

With a slight slant.

FontSlantOblique

With a greater slant.

Instances

Instances details
Eq FontSlant Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: FontSlant -> FontSlant -> Bool

(/=) :: FontSlant -> FontSlant -> Bool

Ord FontSlant Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

compare :: FontSlant -> FontSlant -> Ordering

(<) :: FontSlant -> FontSlant -> Bool

(<=) :: FontSlant -> FontSlant -> Bool

(>) :: FontSlant -> FontSlant -> Bool

(>=) :: FontSlant -> FontSlant -> Bool

max :: FontSlant -> FontSlant -> FontSlant

min :: FontSlant -> FontSlant -> FontSlant

Show FontSlant Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> FontSlant -> ShowS

show :: FontSlant -> String

showList :: [FontSlant] -> ShowS

Default FontSlant Source #

The default font slant.

Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

def :: FontSlant Source #

data FontStyle Source #

Data type for a font.

Constructors

FontStyle 

Fields

Instances

Instances details
Eq FontStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: FontStyle -> FontStyle -> Bool

(/=) :: FontStyle -> FontStyle -> Bool

Show FontStyle Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> FontStyle -> ShowS

show :: FontStyle -> String

showList :: [FontStyle] -> ShowS

Default FontStyle Source #

The default font style.

Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

def :: FontStyle Source #

data HTextAnchor Source #

Possible horizontal anchor points for text.

Constructors

HTA_Left 
HTA_Centre 
HTA_Right 

Instances

Instances details
Eq HTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: HTextAnchor -> HTextAnchor -> Bool

(/=) :: HTextAnchor -> HTextAnchor -> Bool

Ord HTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Show HTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> HTextAnchor -> ShowS

show :: HTextAnchor -> String

showList :: [HTextAnchor] -> ShowS

data VTextAnchor Source #

Possible vertical anchor points for text.

Instances

Instances details
Eq VTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

(==) :: VTextAnchor -> VTextAnchor -> Bool

(/=) :: VTextAnchor -> VTextAnchor -> Bool

Ord VTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Show VTextAnchor Source # 
Instance details

Defined in Graphics.Rendering.Chart.Backend.Types

Methods

showsPrec :: Int -> VTextAnchor -> ShowS

show :: VTextAnchor -> String

showList :: [VTextAnchor] -> ShowS

type AlignmentFn = Point -> Point Source #

A function to align points for a certain rendering device.

data AlignmentFns Source #

Holds the point and coordinate alignment function.

vectorAlignmentFns :: AlignmentFns Source #

Alignment to render on vector based graphics.

bitmapAlignmentFns :: AlignmentFns Source #

Alignment to render on raster based graphics.