The cli option `--apply-operations <operations>` (`-x <operations>`) provides a declarative way to apply image operations on an image.
The order in which these operations are applied is left-to-right.

Supported operations:

|-------------------|-----------------------------------|------------------|
| operations        | syntax                            | As of version    |
|-------------------|-----------------------------------|------------------|
|blur               | `blur <uint>`                     | 0.5.0            |
|brighten           | `brighten <int>`                  | 0.7.0            |
|contrast           | `contrast <fp>`                   | 0.7.0            |
|crop               | `crop <uint> <uint> <uint> <uint>`| 0.9.0            |
|filter3x3          | `filter3x3 <fp9x>`                | 0.7.0            |
|flip horizontal    | `fliph`                           | 0.5.0            |
|flip vertical      | `flipv`                           | 0.5.0            |
|gray scale         | `grayscale`                       | 0.7.0            |
|hue rotate         | `huerotate <int>`                 | 0.7.0            |
|invert             | `invert`                          | 0.7.0            |
|resize             | `resize <uint> <uint>`            | 0.5.0            |
|rotate90           | `rotate90`                        | 0.7.0            |
|rotate180          | `rotate180`                       | 0.7.0            |
|rotate270          | `rotate270`                       | 0.7.0            |
|unsharpen          | `unsharpen <fp> <int>`            | 0.7.0            |
|-------------------|-----------------------------------|------------------|

table legend:

<uint> means any 32 bit unsigned integer is required as parameter input.
<int> means any 32 bit signed integer is required as parameter input.
<fp> means any 32 bit floating point number is required as parameter input.
<fp9x> means `<fp> <fp> <fp> <fp> <fp> <fp> <fp> <fp> <fp>`.


Operation separators (';') are required.

Example 1: sic input.png output.png --apply-operations "resize 250 250; blur 5; huerotate -30"
Example 2: sic input.png output.jpg --apply-operations "flipv; resize 10 5; blur 100; grayscale"
Example 3: sic input.png output.jpg --apply-operations "filter3x3 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2; flipv; invert"


Some image operations have extra options which (slightly) change the behaviour of an operation.
Options can be set using the following syntax `set <image operation> <option for operation> [<value> 0..n]`.
Not all options require values to be provided and the amount of values may differ.
The options can be overwritten by using the `set` command again, and can also be reset to their default by using the `del` command.
The syntax for the `del` command is as follows: `del <image operation> <option for operation>``


The available options on image operation are:

|===================|===================================|
| for operation:    | option:                           |
|===================|===================================|
| resize            | preserve_aspect_ratio             |
| resize            | sampling_filter <filter>          |
---------------------------------------------------------


|===================|===================================|
| values:           | choices:                          |
|===================|===================================|
| <filter>          | catmullrom, gaussian (default),   |
|                   | lanczos3, nearest, triangle       |
---------------------------------------------------------

Example 1: sic input.png output.png --apply-operations "set resize sampling_filter nearest; resize 250 250;"
Example 2: sic input.png output.png --apply-operations "set resize preserve_aspect_ratio; set resize sampling_filter lanczos3; resize 250 250;"
Example 3: sic input.png output.png --apply-operations "set resize sampling_filter lanczos3; resize 250 250; del resize sampling_filter; resize 100 100"

---

Help pages:
* Each image operation command has a help page which might provide some additional information.
* Display the help page by running `sic -H <operation>` where `<operation>` is an operation from the
  operations column in the table above.

---
