Transposition
=============
Ledcat can shuffle pixels around before outputting them. This can be useful if
the arrangement of pixels in the output display does not match that of the
input. With the `--transpose` option, you can set one or more operations to apply.
Because some operations are designed to work on 2 dimensional images, Some
operations need to know the dimensions of the display they are operating on.
Such operations require the number of pixels to be specified by the
`--geometry` option as WIDTHxHEIGHT.
## Reverse
DEVICE <- X <- X <- X <- X <- X <- X <- X <- X
Applying `--transpose reverse` simply reverses the output image, meaning that
pixel 0 in the input becomes pixel N-1 in the output, 1 becomes N-2, etc.
Reversing a 2D image is equivalent to rotating by 180 degrees.
## Zig Zag
X axis:
DEVICE -> X -> X -> X -> X -> X -> X -> X -> X
v
X <- X <- X <- X <- X <- X <- X <- X
v
X -> X -> X -> X -> X -> X -> X -> X
v
X <- X <- X <- X <- X <- X <- X <- X
Y axis:
DEVICE -> X X -> X X -> X X -> X X
v ^ v ^ v ^ v ^
X X X X X X X X
v ^ v ^ v ^ v ^
X X X X X X X X
v ^ v ^ v ^ v ^
X -> X X -> X X -> X X -> X
When building a display out of a single LED-strip, it is not uncommon to
arrange the strips in a repeating pattern that runs from left to right on the
first row and right to left on the next row.
Ledcat can transpose an input image with a regular left to right to match a
display with such zigzagged wiring. Setting Either `--transpose zigzag_x` or
`--transpose zigzag_y` will perform a zigzag transposition over the X- or
Y-axis respectively.
It is not possible to zigzag a 1D image, thus requiring the display size to be
configured using `--geomety` instead of `--num-pixels`.
## Mirror
Using `--transpose mirror_x` or `--transpose mirror_y` will mirror the output
image of the respective axis.