Maintainer | diagrams-discuss@googlegroups.com |
---|---|
Safe Haskell | Safe-Infered |
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.