Copyright | (c) 2011-2015 diagrams-lib team (see LICENSE) |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | diagrams-discuss@googlegroups.com |
Safe Haskell | None |
Language | Haskell2010 |
Very basic text primitives along with associated attributes.
- data Text n = Text (T2 n) (TextAlignment n) String
- data TextAlignment n
- = BaselineText
- | BoxAlignedText n n
- text :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any
- topLeftText :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any
- alignedText :: (TypeableFloat n, Renderable (Text n) b) => n -> n -> String -> QDiagram b V2 n Any
- baselineText :: (TypeableFloat n, Renderable (Text n) b) => String -> QDiagram b V2 n Any
- mkText :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any
- mkText' :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any
- newtype Font = Font (Last String)
- _Font :: Iso' Font String
- getFont :: Font -> String
- font :: HasStyle a => String -> a -> a
- _font :: Lens' (Style v n) (Maybe String)
- newtype FontSize n = FontSize (Recommend (Last n))
- _FontSize :: Iso' (FontSize n) (Recommend n)
- fontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a
- recommendFontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a
- fontSizeN :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a
- fontSizeO :: (N a ~ n, Typeable n, HasStyle a) => n -> a -> a
- fontSizeL :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a
- fontSizeG :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a
- getFontSize :: FontSize n -> n
- fontSizeM :: (N a ~ n, Typeable n, HasStyle a) => FontSizeM n -> a -> a
- _fontSizeR :: (Typeable n, OrderedField n) => Lens' (Style v n) (Measured n (Recommend n))
- _fontSize :: (Typeable n, OrderedField n) => Lens' (Style v n) (Measure n)
- _fontSizeU :: Typeable n => Lens' (Style v n) (Maybe n)
- data FontSlant
- getFontSlant :: FontSlant -> FontSlant
- fontSlant :: HasStyle a => FontSlant -> a -> a
- italic :: HasStyle a => a -> a
- oblique :: HasStyle a => a -> a
- _fontSlant :: Lens' (Style v n) FontSlant
- data FontWeight
- getFontWeight :: FontWeight -> FontWeight
- fontWeight :: HasStyle a => FontWeight -> a -> a
- bold :: HasStyle a => a -> a
- bolder :: HasStyle a => a -> a
- lighter :: HasStyle a => a -> a
- _fontWeight :: Lens' (Style v n) FontWeight
- thinWeight :: HasStyle a => a -> a
- ultraLight :: HasStyle a => a -> a
- light :: HasStyle a => a -> a
- mediumWeight :: HasStyle a => a -> a
- heavy :: HasStyle a => a -> a
- semiBold :: HasStyle a => a -> a
- ultraBold :: HasStyle a => a -> a
Creating text diagrams
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
.
Text (T2 n) (TextAlignment n) String |
data TextAlignment n #
TextAlignment
specifies the alignment of the text's origin.
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
The Font
attribute specifies the name of a font family. Inner
Font
attributes override outer ones.
font :: HasStyle a => String -> a -> a #
Specify a font family to be used for all text within a diagram.
Font size
The FontSize
attribute specifies the size of a font's
em-square. Inner FontSize
attributes override outer ones.
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
).
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.
_fontSizeR :: (Typeable n, OrderedField n) => Lens' (Style v n) (Measured n (Recommend n)) #
_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
.
Font slant
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.
getFontSlant :: FontSlant -> FontSlant #
Extract the font slant from a FontSlantA
attribute.
_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.
FontWeightNormal | |
FontWeightBold | |
FontWeightBolder | |
FontWeightLighter | |
FontWeightThin | |
FontWeightUltraLight | |
FontWeightLight | |
FontWeightMedium | |
FontWeightSemiBold | |
FontWeightUltraBold | |
FontWeightHeavy |
Eq FontWeight # | |
Ord FontWeight # | |
Show FontWeight # | |
Semigroup FontWeight # | Last semigroup structure |
Default FontWeight # | |
AttributeClass FontWeight # | |
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.
_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.
mediumWeight :: HasStyle a => a -> a #
Set all text using a medium font weight.