Commit cdff42c3 authored by Daniel Kochmański's avatar Daniel Kochmański

pict

parent f07cd320
...@@ -126,7 +126,7 @@ rectangle coordinates are `[25,10], [30,15]`. ...@@ -126,7 +126,7 @@ rectangle coordinates are `[25,10], [30,15]`.
* MDPI display device units are dip and they match native units of our * MDPI display device units are dip and they match native units of our
choosing. No transformation is required. choosing. No transformation is required.
![Graft drawing](https://common-lisp.net/project/mcclim/static/media/ideal-forms/mdpi.png) ![Graft drawing](https://common-lisp.net/project/mcclim/static/media/ideal-forms/mdpi.png)
* Some old displays have density 72PPI. Not all coordinates map exactly to * Some old displays have density 72PPI. Not all coordinates map exactly to
pixels - we need to round them[^3]. Notice that border is thicker and that pixels - we need to round them[^3]. Notice that border is thicker and that
...@@ -138,26 +138,26 @@ rectangle coordinates are `[25,10], [30,15]`. ...@@ -138,26 +138,26 @@ rectangle coordinates are `[25,10], [30,15]`.
desktops. Almost all coordinates map perfectly on this screen. Notice the desktops. Almost all coordinates map perfectly on this screen. Notice the
approximation of the right side of the violet rectangle. approximation of the right side of the violet rectangle.
![Lower DPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/72dpi-96dpi-sbs.png) ![Lower DPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/72dpi-96dpi-sbs.png)
* Fact that the screen has higher density doesn't mean that coordinates mapping * Fact that the screen has higher density doesn't mean that coordinates mapping
perfectly on a lower density screen will map well to a higher density perfectly on a lower density screen will map well to a higher density
one. Take this HDPI screen. Almost all coordinates are floats while on the one. Take this HDPI screen. Almost all coordinates are floats while on the
MDPI display they had all integer values. MDPI display they had all integer values.
![HDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/hdpi.png) ![HDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/hdpi.png)
* Higher resolution makes rectangles look better (borderline is thinner and * Higher resolution makes rectangles look better (borderline is thinner and
distortions are less visible to the eye). Here is XXXHDPI: distortions are less visible to the eye). Here is XXXHDPI:
![XXXHDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/xxxhdpi.png) ![XXXHDPI](https://common-lisp.net/project/mcclim/static/media/ideal-forms/xxxhdpi.png)
* Some printers have a really high DPI, here is imaginary 2560 DPI printer. * Some printers have a really high DPI, here is imaginary 2560 DPI printer.
Funnily enough its accuracy exceeds our screen density so the red border which Funnily enough its accuracy exceeds our screen density so the red border which
is meant to show the "ideal" rectangle is a little off (it's fine if we scale is meant to show the "ideal" rectangle is a little off (it's fine if we scale
the image though). the image though).
![HQ Printer](https://common-lisp.net/project/mcclim/static/media/ideal-forms/printer.png) ![HQ Printer](https://common-lisp.net/project/mcclim/static/media/ideal-forms/printer.png)
* Until now we've seen some screens with square pixels (or dots). Let's take a * Until now we've seen some screens with square pixels (or dots). Let's take a
look at something with a really low density - a character terminal. To make look at something with a really low density - a character terminal. To make
...@@ -165,7 +165,7 @@ rectangle coordinates are `[25,10], [30,15]`. ...@@ -165,7 +165,7 @@ rectangle coordinates are `[25,10], [30,15]`.
character (too small to be seen by a human eye). Notice that the real size of character (too small to be seen by a human eye). Notice that the real size of
the rectangles is still similar. the rectangles is still similar.
![Character terminal](https://common-lisp.net/project/mcclim/static/media/ideal-forms/console.png) ![Character terminal](https://common-lisp.net/project/mcclim/static/media/ideal-forms/console.png)
It is time to deal with `graphics` orientation (Y-axis grows towards the It is time to deal with `graphics` orientation (Y-axis grows towards the
top). An imaginary plotter with 80DPI resolution will be used to illustrate two top). An imaginary plotter with 80DPI resolution will be used to illustrate two
...@@ -178,13 +178,13 @@ important to know where we start the drawing. ...@@ -178,13 +178,13 @@ important to know where we start the drawing.
print on. We do preserve the real size but we don't preserve the image print on. We do preserve the real size but we don't preserve the image
orientation – cyan rectangle should be higher on the plot. orientation – cyan rectangle should be higher on the plot.
![Plotter (bad transformation)](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotter-wrong-sbs.png) ![Plotter (bad transformation)](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotter-wrong-sbs.png)
* Correct transformation involves reverting Y axis and translating objects by * Correct transformation involves reverting Y axis and translating objects by
the screen height. See the correct transformation (on 80DPI and on MDPI the screen height. See the correct transformation (on 80DPI and on MDPI
plotter). plotter).
![80DPI and MDPI plotters](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotters.png) ![80DPI and MDPI plotters](https://common-lisp.net/project/mcclim/static/media/ideal-forms/plotters.png)
[^7]: the Ideal border is composed of lines which are 1-dimensional objects [^7]: the Ideal border is composed of lines which are 1-dimensional objects
which doesn't occupy any space. Red border in drawings marks "ideal" object which doesn't occupy any space. Red border in drawings marks "ideal" object
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment