| Maintainer | diagrams-discuss@googlegroups.com |
|---|---|
| Safe Haskell | Safe-Infered |
Diagrams.TwoD.Adjust
Description
A default diagram-adjustment implementation for two-dimensional diagrams, useful for backend implementors.
- adjustDia2D :: Monoid' m => (Options b R2 -> SizeSpec2D) -> (SizeSpec2D -> Options b R2 -> Options b R2) -> b -> Options b R2 -> QDiagram b R2 m -> (Options b R2, QDiagram b R2 m)
- adjustSize :: SizeSpec2D -> (Double, Double) -> Transformation R2
- requiredScale :: SizeSpec2D -> (Double, Double) -> Double
Documentation
adjustDia2D :: Monoid' m => (Options b R2 -> SizeSpec2D) -> (SizeSpec2D -> Options b R2 -> Options b R2) -> b -> Options b R2 -> QDiagram b R2 m -> (Options b R2, QDiagram b R2 m)Source
adjustDia2D provides a useful default implementation of
the adjustDia method from the Backend type class.
As its first two arguments it requires a method for extracting the requested output size from the rendering options, and a way of updating the rendering options with a new (more specific) size.
It then performs the following adjustments:
- Set some default attributes (in case they have not been set):
- Line width 0.01
- Line color black
- Font size 1
- Freeze the diagram in its final form
- Scale and translate the diagram to fit within the requested size
- Also return the actual adjusted size of the diagram.
adjustSize :: SizeSpec2D -> (Double, Double) -> Transformation R2Source
adjustSize spec sz returns a transformation (a uniform scale)
which can be applied to something of size sz to make it the
requested size spec.
requiredScale :: SizeSpec2D -> (Double, Double) -> DoubleSource
requiredScale spec sz returns a scaling factor necessary to
make something of size sz fit the requested size spec,
without changing the aspect ratio. Hence an explicit
specification of both dimensions may not be honored if the aspect
ratios do not match; in that case the scaling will be as large as
possible so that the object still fits within the requested size.