feat(draw): add NemaGFX rendering backend (#7002)
Co-authored-by: Ioannis Markopoulos <Ioannis_Markopoulos@amat.com>
This commit is contained in:
210
libs/nema_gfx/include/nema_transitions.h
Normal file
210
libs/nema_gfx/include/nema_transitions.h
Normal file
@@ -0,0 +1,210 @@
|
||||
/* TSI 2023.xmo */
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2023 Think Silicon Single Member PC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this header file and/or associated documentation files to use, copy,
|
||||
* modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
||||
* Materials, and to permit persons to whom the Materials are furnished to do
|
||||
* so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Materials.
|
||||
*
|
||||
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||
* NEMAGFX API. THE UNMODIFIED, NORMATIVE VERSIONS OF THINK-SILICON NEMAGFX
|
||||
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT:
|
||||
* https://think-silicon.com/products/software/nemagfx-api
|
||||
*
|
||||
* The software is provided 'as is', without warranty of any kind, express or
|
||||
* implied, including but not limited to the warranties of merchantability,
|
||||
* fitness for a particular purpose and noninfringement. In no event shall
|
||||
* Think Silicon Single Member PC be liable for any claim, damages or other
|
||||
* liability, whether in an action of contract, tort or otherwise, arising
|
||||
* from, out of or in connection with the software or the use or other dealings
|
||||
* in the software.
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef NEMA_TRANSITIONS_H__
|
||||
#define NEMA_TRANSITIONS_H__
|
||||
|
||||
#include "nema_blender.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
NEMA_TRANS_LINEAR_H,
|
||||
NEMA_TRANS_CUBE_H,
|
||||
NEMA_TRANS_INNERCUBE_H,
|
||||
NEMA_TRANS_STACK_H,
|
||||
NEMA_TRANS_LINEAR_V,
|
||||
NEMA_TRANS_CUBE_V,
|
||||
NEMA_TRANS_INNERCUBE_V,
|
||||
NEMA_TRANS_STACK_V,
|
||||
NEMA_TRANS_FADE,
|
||||
NEMA_TRANS_FADE_ZOOM,
|
||||
NEMA_TRANS_MAX,
|
||||
NEMA_TRANS_NONE,
|
||||
} nema_transition_t;
|
||||
|
||||
/** \brief Transition from 'initial' texture to 'final' texture. The transition is complete when 'step' is 0 or 1
|
||||
*
|
||||
* \param effect Transition effect
|
||||
* \param initial Initial texture
|
||||
* \param final Final texture
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Transition step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition(nema_transition_t effect, nema_tex_t initial, nema_tex_t final,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
|
||||
/** \brief Linear transition horizontally. When 'step' changes from zero to one, textures move from right to left,
|
||||
otherwise textures move from left to right. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param left Texture on the left side
|
||||
* \param right Texture on the right side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
*
|
||||
*/
|
||||
void nema_transition_linear_hor(nema_tex_t left, nema_tex_t right,
|
||||
uint32_t blending_mode, float step, int width);
|
||||
|
||||
/** \brief Linear transition vertically. When 'step' changes from zero to one, textures move from top to bottom,
|
||||
otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param up Texture on the top side
|
||||
* \param down Texture on the bottom side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_linear_ver(nema_tex_t up, nema_tex_t down,
|
||||
uint32_t blending_mode, float step, int height);
|
||||
|
||||
/** \brief Cubic (textures are mapped on the external faces of a cube) transition horizontally. When 'step' changes from zero to one, textures move from left to right,
|
||||
otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param left Texture on the left side
|
||||
* \param right Texture on the right side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_cube_hor(nema_tex_t left, nema_tex_t right,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
/** \brief Cube (textures are mapped on the external faces of a cube) transition vertically. When 'step' changes from zero to one, textures move from top to bottom,
|
||||
otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param up Texture on the top side
|
||||
* \param down Texture on the bottom side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_cube_ver(nema_tex_t up, nema_tex_t down,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
/** \brief Inner Cube (textures are mapped on the internal faces of a cube) transition horizontally. When 'step' changes from zero to one, textures move from left to right,
|
||||
otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param left Texture on the left side
|
||||
* \param right Texture on the right side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_innercube_hor(nema_tex_t left, nema_tex_t right,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
/** \brief Inner Cube (textures are mapped on the internal faces of a cube) transition vertically. When 'step' changes from zero to one, textures move from top to bottom,
|
||||
otherwise textures move from bottom to top. The transition The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param up Texture on the top side
|
||||
* \param down Texture on the bottom side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_innercube_ver(nema_tex_t up, nema_tex_t down,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
/** \brief Stack transition horizontally. When 'step' changes from zero to one, textures move from left to right,
|
||||
otherwise textures move from right to left. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param up Texture on the top side
|
||||
* \param down Texture on the bottom side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_stack_hor(nema_tex_t left, nema_tex_t right, float step,
|
||||
int width, int height);
|
||||
|
||||
/** \brief Stack transition vertically. When 'step' moves from zero to one, textures move from top to bottom,
|
||||
otherwise textures move from bottom to top. The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param up Texture on the top side
|
||||
* \param down Texture on the bottom side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_stack_ver(nema_tex_t up, nema_tex_t down, float step,
|
||||
int width, int height);
|
||||
|
||||
/** \brief Fade transition. Initial texture is being faded out, while final texture is being faded in.
|
||||
The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param left Texture on the left side
|
||||
* \param right Texture on the right side
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_fade(nema_tex_t initial, nema_tex_t final,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
/** \brief Fade-zoom transition. Initial texture is being zoomed and faded out, while final texture is being zoomed and faded in.
|
||||
The transition is complete when 'step' is 0 or 1.
|
||||
*
|
||||
* \param initial Initial texture
|
||||
* \param final Final texture
|
||||
* \param blending_mode Blending mode
|
||||
* \param step Current step within [0.f , 1.f] range
|
||||
* \param width Texture width
|
||||
* \param height Texture height
|
||||
*
|
||||
*/
|
||||
void nema_transition_fade_zoom(nema_tex_t initial, nema_tex_t final,
|
||||
uint32_t blending_mode, float step, int width, int height);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user