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
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 spec sz returns a transformation (a uniform scale)
which can be applied to something of size
sz to make it the
requiredScale spec sz returns a scaling factor necessary to
make something of size
sz fit the requested size
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.