diagrams-lib-1.4.2.3: Embedded domain-specific language for declarative graphics

Copyright(c) 2011-2015 diagrams-lib team (see LICENSE)
LicenseBSD-style (see LICENSE)
Maintainerdiagrams-discuss@googlegroups.com
Safe HaskellNone
LanguageHaskell2010

Diagrams.TwoD.Text

Contents

Description

Very basic text primitives along with associated attributes.

Synopsis

Creating text diagrams

data Text n #

A Text primitive consists of the string contents, text alignment and the transformation to be applied. The transformation is scale invarient, the average scale of the transform should always be 1. All text scaling is obtained from the FontSize attribute.

This constructor should not be used directly. Use text, alignedText or baselineText.

Constructors

Text (T2 n) (TextAlignment n) String 
Instances
Floating n => Transformable (Text n) # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

transform :: Transformation (V (Text n)) (N (Text n)) -> Text n -> Text n #

Floating n => HasOrigin (Text n) # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

moveOriginTo :: Point (V (Text n)) (N (Text n)) -> Text n -> Text n #

Floating n => Renderable (Text n) NullBackend # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

render :: NullBackend -> Text n -> Render NullBackend (V (Text n)) (N (Text n)) #

type V (Text n) # 
Instance details

Defined in Diagrams.TwoD.Text

type V (Text n) = V2
type N (Text n) # 
Instance details

Defined in Diagrams.TwoD.Text

type N (Text n) = n

data TextAlignment n #

TextAlignment specifies the alignment of the text's origin.

Constructors

BaselineText 
BoxAlignedText n n 

text :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any #

Create a primitive text diagram from the given string, with center alignment, equivalent to alignedText 0.5 0.5.

Note that it takes up no space, as text size information is not available.

topLeftText :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any #

Create a primitive text diagram from the given string, origin at the top left corner of the text's bounding box, equivalent to alignedText 0 1.

Note that it takes up no space.

alignedText :: (TypeableFloat n, Renderable (Text n) b) => n -> n -> String -> QDiagram b V2 n Any #

Create a primitive text diagram from the given string, with the origin set to a point interpolated within the bounding box. The first parameter varies from 0 (left) to 1 (right), and the second parameter from 0 (bottom) to 1 (top). Some backends do not implement this and instead snap to closest corner or the center.

The height of this box is determined by the font's potential ascent and descent, rather than the height of the particular string.

Note that it takes up no space.

baselineText :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any #

Create a primitive text diagram from the given string, with the origin set to be on the baseline, at the beginning (although not bounding). This is the reference point of showText in the Cairo graphics library.

Note that it takes up no space.

mkText :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any #

Make a text from a TextAlignment, recommending a fill colour of black and fontSize of local 1.

mkText' :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any #

Make a text from a TextAlignment without any default size or fill colour. This is useful is you want to recommend your own using recommendFillColor or recommendFontSize.

Text attributes

Font family

newtype Font #

The Font attribute specifies the name of a font family. Inner Font attributes override outer ones.

Constructors

Font (Last String) 
Instances
Eq Font # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

(==) :: Font -> Font -> Bool #

(/=) :: Font -> Font -> Bool #

Semigroup Font # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

(<>) :: Font -> Font -> Font #

sconcat :: NonEmpty Font -> Font #

stimes :: Integral b => b -> Font -> Font #

AttributeClass Font # 
Instance details

Defined in Diagrams.TwoD.Text

getFont :: Font -> String #

Extract the font family name from a Font attribute.

font :: HasStyle a => String -> a -> a #

Specify a font family to be used for all text within a diagram.

_font :: Lens' (Style v n) (Maybe String) #

Lens onto the font name of a style.

Font size

newtype FontSize n #

The FontSize attribute specifies the size of a font's em-square. Inner FontSize attributes override outer ones.

Constructors

FontSize (Recommend (Last n)) 
Instances
Functor FontSize # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

fmap :: (a -> b) -> FontSize a -> FontSize b #

(<$) :: a -> FontSize b -> FontSize a #

Semigroup (FontSize n) # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

(<>) :: FontSize n -> FontSize n -> FontSize n #

sconcat :: NonEmpty (FontSize n) -> FontSize n #

stimes :: Integral b => b -> FontSize n -> FontSize n #

Typeable n => AttributeClass (FontSize n) # 
Instance details

Defined in Diagrams.TwoD.Text

fontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a #

Set the font size, that is, the size of the font's em-square as measured within the current local vector space. The default size is local 1 (which is applied by recommendFontSize).

recommendFontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a #

Recommend a font size. Any use of fontSize above this will overwrite any recommended size. This should only be used with mkText', other text functions already has a recommended font size so this will be ignored.

fontSizeN :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a #

A convenient synonym for 'fontSize (Normalized w)'.

fontSizeO :: (N a ~ n, Typeable n, HasStyle a) => n -> a -> a #

A convenient synonym for 'fontSize (Output w)'.

fontSizeL :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a #

A convenient sysnonym for 'fontSize (Local w)'.

fontSizeG :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a #

A convenient synonym for 'fontSize (Global w)'.

getFontSize :: FontSize n -> n #

Extract the size from a FontSize attribute.

fontSizeM :: (N a ~ n, Typeable n, HasStyle a) => FontSizeM n -> a -> a #

Apply a FontSize attribute.

_fontSize :: (Typeable n, OrderedField n) => Lens' (Style v n) (Measure n) #

Lens to commit a font size. This is *not* a valid lens (see commited.

_fontSizeU :: Typeable n => Lens' (Style v n) (Maybe n) #

Font slant

data FontSlant #

The FontSlantA attribute specifies the slant (normal, italic, or oblique) that should be used for all text within a diagram. Inner FontSlantA attributes override outer ones.

Instances
Eq FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

Ord FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

Show FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

Semigroup FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

Default FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

def :: FontSlant #

AttributeClass FontSlant # 
Instance details

Defined in Diagrams.TwoD.Text

getFontSlant :: FontSlant -> FontSlant #

Extract the font slant from a FontSlantA attribute.

fontSlant :: HasStyle a => FontSlant -> a -> a #

Specify the slant (normal, italic, or oblique) that should be used for all text within a diagram. See also italic and oblique for useful special cases.

italic :: HasStyle a => a -> a #

Set all text in italics.

oblique :: HasStyle a => a -> a #

Set all text using an oblique slant.

_fontSlant :: Lens' (Style v n) FontSlant #

Lens onto the font slant in a style.

Font weight

data FontWeight #

The FontWeightA attribute specifies the weight (normal or bold) that should be used for all text within a diagram. Inner FontWeightA attributes override outer ones.

Instances
Eq FontWeight # 
Instance details

Defined in Diagrams.TwoD.Text

Ord FontWeight # 
Instance details

Defined in Diagrams.TwoD.Text

Show FontWeight # 
Instance details

Defined in Diagrams.TwoD.Text

Semigroup FontWeight #

Last semigroup structure

Instance details

Defined in Diagrams.TwoD.Text

Default FontWeight # 
Instance details

Defined in Diagrams.TwoD.Text

Methods

def :: FontWeight #

AttributeClass FontWeight # 
Instance details

Defined in Diagrams.TwoD.Text

getFontWeight :: FontWeight -> FontWeight #

Extract the font weight.

fontWeight :: HasStyle a => FontWeight -> a -> a #

Specify the weight (normal, bolder, lighter or bold) that should be used for all text within a diagram. See also bold for a useful special case.

bold :: HasStyle a => a -> a #

Set all text using a bold font weight.

bolder :: HasStyle a => a -> a #

Set all text to be bolder than the inherited font weight.

lighter :: HasStyle a => a -> a #

Set all text to be lighter than the inherited font weight.

_fontWeight :: Lens' (Style v n) FontWeight #

Lens onto the font weight in a style.

thinWeight :: HasStyle a => a -> a #

Set all text using a thin font weight.

ultraLight :: HasStyle a => a -> a #

Set all text using a extra light font weight.

light :: HasStyle a => a -> a #

Set all text using a light font weight.

mediumWeight :: HasStyle a => a -> a #

Set all text using a medium font weight.

heavy :: HasStyle a => a -> a #

Set all text using a heavy/black font weight.

semiBold :: HasStyle a => a -> a #

Set all text using a semi-bold font weight.

ultraBold :: HasStyle a => a -> a #

Set all text using an ultra-bold font weight.