From 987835afe8fc5d46cb3a6359ec80c9f035e72801 Mon Sep 17 00:00:00 2001 From: pacien Date: Tue, 28 Nov 2017 19:01:51 +0100 Subject: Add module spec headers Signed-off-by: pacien --- include/blender/blender.h | 42 +++++++++++++++++++++++++ include/blender/canvas.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++ include/blender/color.h | 27 ++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 include/blender/blender.h create mode 100644 include/blender/canvas.h create mode 100644 include/blender/color.h (limited to 'include/blender') diff --git a/include/blender/blender.h b/include/blender/blender.h new file mode 100644 index 0000000..356c68e --- /dev/null +++ b/include/blender/blender.h @@ -0,0 +1,42 @@ +#ifndef UPEM_MORPHING_BLENDER +#define UPEM_MORPHING_BLENDER + +/** + * File: blender.h + * Will it blend? That is the question. + */ + +#include "common/time.h" +#include "blender/canvas.h" +#include "blender/color.h" +#include "morpher/morpher.h" + +/** + * Function: blender_blend_canvas + * Blends two canvas by applying the given morphing at the requested time frame. + * + * Parameters: + * *canvas - pointer to the canvas to paint + * *source - source image + * *target - target image + * *morphing - morphing transform to apply + * frame - the interpolation distance from the origin canvas [0;1] + */ +void blender_blend_canvas(Canvas *canvas, Canvas *source, Canvas *target, Morphing *morphing, TimeVector frame); + +/** + * Function: blender_blend_colors + * Properly blends two coloured pixels, interpolated at the given time frame. + * (https://www.youtube.com/watch?v=LKnqECcg6Gw) + * + * Parameters: + * origin - the origin colour + * target - the target colour + * frame - the interpolation distance from the origin colour [0;1] + * + * Returns: + * The blended coloured pixel + */ +Color blender_blend_colors(Color origin, Color target, TimeVector frame); + +#endif diff --git a/include/blender/canvas.h b/include/blender/canvas.h new file mode 100644 index 0000000..12f7ce1 --- /dev/null +++ b/include/blender/canvas.h @@ -0,0 +1,79 @@ +#ifndef UPEM_MORPHING_CANVAS +#define UPEM_MORPHING_CANVAS + +/** + * File: canvas.h + * + * See also: + * Freedom, according to Bob Ross + */ + +#include +#include "common/geom.h" +#include "color.h" + +/** + * Type: Canvas + * Represents a fixed size RGBa pixel matrix. + */ +typedef struct { + MLV_Image mlv; +} Canvas; + +/** + * Function: canvas_init + * Initialises a canvas of the given size + * + * Parameters: + * *canvas - the canvas to initialise + * width - the width in pixels + * height - the height in pixels + */ +void canvas_init(Canvas *canvas, IntVector width, IntVector height); + +/** + * Function: canvas_free + * Frees all memory allocated to a canvas. + * + * Parameters: + * *canvas - the canvas to destroy + */ +void canvas_free(Canvas *canvas); + +/** + * Function: canvas_set_pixel + * Sets the pixel colour at the given coordinates. + * + * Parameters: + * *canvas - the canvas to alter + * position - the cartesian coordinates of the pixel to set + * color - the new colour to set + */ +void canvas_set_pixel(Canvas *canvas, CartesianVector position, Color color); + +/** + * Function: canvas_get_pixel + * Returns the colour of the pixel at the given position. + * + * Parameters: + * *canvas - the base canvas + * position - the position in cartesian coordinates + * + * Returns: + * The colour of the requested pixel + */ +Color canvas_get_pixel(Canvas *canvas, CartesianVector position); + +/** + * Function: canvas_get_size + * Returns the size (in pixels) of the given canvas. + * + * Parameters: + * *canvas - the canvas + * + * Returns: + * The size of the canvas + */ +CartesianVector canvas_get_size(Canvas *canvas); + +#endif diff --git a/include/blender/color.h b/include/blender/color.h new file mode 100644 index 0000000..cdf488a --- /dev/null +++ b/include/blender/color.h @@ -0,0 +1,27 @@ +#ifndef UPEM_MORPHING_COLOR +#define UPEM_MORPHING_COLOR + +/** + * File: color.h + * + * See also: + * A rainbow + */ + +/** + * Type: ColorComponent + * Represents a single colour component of 32-bits RGBa tuple. + */ +typedef uint8_t ColorComponent; + +/** + * Type: ColorPixel + * Represents a single RGBa coloured pixel. + * Compatible with the libMLV representation. + */ +typedef union { + ColorComponent r, g, b, a; + MLV_Color mlv; +} Color; + +#endif -- cgit v1.2.3