diff options
author | Mattias Andrée <maandree@kth.se> | 2023-01-21 18:08:32 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2023-01-21 18:08:32 +0100 |
commit | 5e9e4ffc468b5f9287641e23dc375afd77177523 (patch) | |
tree | 5fc741325e6d617e5fadce7f45910bf606f50c89 /libglitter.h | |
parent | m doc (diff) | |
download | libglitter-5e9e4ffc468b5f9287641e23dc375afd77177523.tar.gz libglitter-5e9e4ffc468b5f9287641e23dc375afd77177523.tar.bz2 libglitter-5e9e4ffc468b5f9287641e23dc375afd77177523.tar.xz |
Add integer versions of libglitter_compose_*
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libglitter.h')
-rw-r--r-- | libglitter.h | 76 |
1 files changed, 74 insertions, 2 deletions
diff --git a/libglitter.h b/libglitter.h index be25d72..ca358aa 100644 --- a/libglitter.h +++ b/libglitter.h @@ -10,6 +10,10 @@ * Create one raster per monitor colour from a raster of * subpixels (which may be further divided in the raster) * + * Note that this function does not regard the colour + * model's transfer function: it does not directly give + * you appropriate sRGB values + * * @param outputs Array of output rasters, on for each subpixel colour; * each raster must be initialised to have the value 0 * in each cell. The function may change the offset for @@ -33,7 +37,7 @@ * raster (the value of the cell is the output's index * in `outputs`); this is row-major map, and each valid * value must appear at least once - * @param ncellweights For each `i` in [0, `noutputs`), `ncellvalues[i]` + * @param ncellweights For each `i` in [0, `noutputs`), `ncellweights[i]` * shall have the value `1. / x`, where `x` is the * number of times the value `i` occurs in `cellmap` * @@ -56,7 +60,75 @@ void libglitter_compose_float(float **, size_t, const float *restrict, size_t, size_t, size_t, size_t, size_t, size_t, size_t, const uint8_t *restrict, const float *restrict); -/* TODO add integer versions */ +/** + * Create one raster per monitor colour from a raster of + * subpixels (which may be further divided in the raster) + * + * Note that this function does not regard the colour + * model's transfer function: it does not directly give + * you appropriate sRGB values + * + * @param outputs Array of output rasters, on for each subpixel colour. + * The function may change the offset for each raster, + * as such, the given pointer shall not be used anywhere + * else during the execution of the function and the + * inner pointers shall be considered undefined after + * the execution of the function + * @param noutputs The number of output buffers + * @param input Input raster; cells are adjacent + * @param output_rowsize The number of cells in a row in each output raster + * @param output_cellsize The number of values stored in each output raster, + * between each cell, plus 1 (that is, the number of + * values per cell) + * @param input_rowsize The number of cells in a row in `input` + * @param width The horizontal number of pixels in the rasters + * @param height The vertical number of pixels in the rasters + * @param widthmul The horizontal number of cells per pixel in `input` + * @param heightmul The vertical number of cells per pixel in `input` + * @param cellmap Subpixel map of size `heightmul * widthmul` that + * maps a cell for a pixel in `input` to an output + * raster (the value of the cell is the output's index + * in `outputs`); this is row-major map, and each valid + * value must appear at least once + * @param ncellvalues For each `i` in [0, `noutputs`), `ncellvalues[i]` + * shall be the number of times the value `i` occurs + * in `cellmap` + * + * If `noutputs` is 3 and either `widthmul` or `heightmul` is 3 and + * the other one is 1, `ncellvalues` will not be used as it is preknown + * that all its values are 1 + */ +void libglitter_compose_uint64(uint64_t **, size_t, const uint64_t *restrict, + size_t, size_t, size_t, size_t, size_t, size_t, size_t, + const uint8_t *restrict, const uint8_t *restrict); + +/** + * This value is identical to `libglitter_compose_uint64`, + * apart from it parameter types, see `libglitter_compose_uint64` + * for details about this function + */ +void libglitter_compose_uint32(uint32_t **, size_t, const uint32_t *restrict, + size_t, size_t, size_t, size_t, size_t, size_t, size_t, + const uint8_t *restrict, const uint8_t *restrict); + +/** + * This value is identical to `libglitter_compose_uint64`, + * apart from it parameter types, see `libglitter_compose_uint64` + * for details about this function + */ +void libglitter_compose_uint16(uint16_t **, size_t, const uint16_t *restrict, + size_t, size_t, size_t, size_t, size_t, size_t, size_t, + const uint8_t *restrict, const uint8_t *restrict); + +/** + * This value is identical to `libglitter_compose_uint64`, + * apart from it parameter types, see `libglitter_compose_uint64` + * for details about this function + */ +void libglitter_compose_uint8(uint8_t **, size_t, const uint8_t *restrict, + size_t, size_t, size_t, size_t, size_t, size_t, size_t, + const uint8_t *restrict, const uint8_t *restrict); + /* TODO add colour space conversion and saturation */ |