cmdfx 0.3.2
Lightweight game engine for your terminal
Loading...
Searching...
No Matches
sprites.h
Go to the documentation of this file.
1
11
12#pragma once
13
14#include "cmdfx/core/builder.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20// Core Functions
21
31typedef struct CmdFX_Sprite {
35 int x;
39 int y;
43 int width;
47 int height;
58 char** data;
59
70 char*** ansi;
79 int z;
88 int id;
95 int uid;
97
107
113
127
145CmdFX_Sprite* Sprite_create(char** text, char*** ansi, int z);
146
154
170int Sprite_draw(int x, int y, CmdFX_Sprite* sprite);
171
177
178// Utility Methods - Sprite Builder
179
197int Sprite_setData(CmdFX_Sprite* sprite, char** data);
198
216int Sprite_setChar(CmdFX_Sprite* sprite, int x, int y, char c);
217
236 CmdFX_Sprite* sprite, int x, int y, int width, int height, char c
237);
238
260 CmdFX_Sprite* sprite, int x, int y, int width, int height, char c
261);
262
276int Sprite_fillCharAll(CmdFX_Sprite* sprite, char c);
277
296
312int Sprite_setAnsi(CmdFX_Sprite* sprite, int x, int y, char* ansi);
313
329int Sprite_appendAnsi(CmdFX_Sprite* sprite, int x, int y, char* ansi);
330
349 CmdFX_Sprite* sprite, int x, int y, char* ansi, int width, int height
350);
351
365int Sprite_setAnsiAll(CmdFX_Sprite* sprite, char* ansi);
366
382int Sprite_appendAnsiAll(CmdFX_Sprite* sprite, char* ansi);
383
384// Utility Methods - Sprite Creation
385
404 int width, int height, char c, char* ansi, int z
405);
406
423CmdFX_Sprite* Sprite_loadFromFile(const char* path, int z);
424
425// Utility Methods - Sizing
426
439int Sprite_resize(CmdFX_Sprite* sprite, int width, int height);
440
459 CmdFX_Sprite* sprite, int width, int height, char padding
460);
461
474
489int Sprite_resizeAndCenter(CmdFX_Sprite* sprite, int width, int height);
490
491// Utility Methods - Movement
492
499void Sprite_moveTo(CmdFX_Sprite* sprite, int x, int y);
500
507void Sprite_moveBy(CmdFX_Sprite* sprite, int dx, int dy);
508
509// Utility Methods - Collisions
510
524
532
548int Sprite_isOnTop(CmdFX_Sprite* sprite, int x, int y);
549
565int Sprite_isOnBottom(CmdFX_Sprite* sprite, int x, int y);
566
567// Utility Methods - Color
568
585int Sprite_setForeground(CmdFX_Sprite* sprite, int x, int y, int rgb);
586
602
619
636int Sprite_setBackground(CmdFX_Sprite* sprite, int x, int y, int rgb);
637
653
670
671// Utility Methods - Color Gradient
672
695 CmdFX_Sprite* sprite, int x, int y, int width, int height,
696 enum CmdFX_GradientDirection direction, int numColors, ...
697);
698
715 CmdFX_Sprite* sprite, enum CmdFX_GradientDirection direction, int numColors,
716 ...
717);
718
741 CmdFX_Sprite* sprite, int x, int y, int width, int height,
742 enum CmdFX_GradientDirection direction, int numColors, ...
743);
744
761 CmdFX_Sprite* sprite, enum CmdFX_GradientDirection direction, int numColors,
762 ...
763);
764
765// Utility Methods - Transformations
766
780int Sprite_rotate(CmdFX_Sprite* sprite, double radians);
781
795
808
821
834int Sprite_scale(CmdFX_Sprite* sprite, double scale);
835
848
849#ifdef __cplusplus
850}
851#endif
Builder API for building 2D Character Arrays.
CmdFX_GradientDirection
Represents a color gradient that can be applied .
Definition builder.h:477
CmdFX_Sprite ** Sprite_getCollidingSprites(CmdFX_Sprite *sprite)
Gets the sprites that are colliding with the given sprite.
void Sprite_remove(CmdFX_Sprite *sprite)
Removes a sprite from the terminal, making it no longer visble.
int Sprite_setAnsi(CmdFX_Sprite *sprite, int x, int y, char *ansi)
Sets the ANSI code at the given position in the sprite.
int Sprite_fillCharAllEmpty(CmdFX_Sprite *sprite, char c)
Sets the character at all positions in the sprite where there isn't a character.
int Sprite_setBackground(CmdFX_Sprite *sprite, int x, int y, int rgb)
Sets the background color of the sprite at the given position.
int Sprite_fillAnsi(CmdFX_Sprite *sprite, int x, int y, char *ansi, int width, int height)
Fills positions in the sprite with an ANSI code.
int Sprite_vFlip(CmdFX_Sprite *sprite)
Flips the sprite vertically.
int Sprite_rotate(CmdFX_Sprite *sprite, double radians)
Rotates the sprite by the given angle.
int Sprite_isOnBottom(CmdFX_Sprite *sprite, int x, int y)
Gets whether the sprite is the bottom-most sprite at the given position.
int Sprite_isColliding(CmdFX_Sprite *sprite1, CmdFX_Sprite *sprite2)
Checks if two sprites are colliding.
int Sprite_setForegroundGradient(CmdFX_Sprite *sprite, int x, int y, int width, int height, enum CmdFX_GradientDirection direction, int numColors,...)
Sets a foreground gradient using RGB colors for a specified section of the sprite.
int Sprite_setAnsiAll(CmdFX_Sprite *sprite, char *ansi)
Sets the character at all positions in the sprite.
void Sprite_moveTo(CmdFX_Sprite *sprite, int x, int y)
Moves a sprite to the given position.
CmdFX_Sprite * Canvas_getSpriteAt(int x, int y)
Gets a sprite at the given position with the highest Z-index.
int Sprite_fillCharAll(CmdFX_Sprite *sprite, char c)
Sets the character at all positions in the sprite.
int Sprite_setBackgroundGradient(CmdFX_Sprite *sprite, int x, int y, int width, int height, enum CmdFX_GradientDirection direction, int numColors,...)
Sets a background gradient using RGB colors for a specified section of the sprite.
int Sprite_scale(CmdFX_Sprite *sprite, double scale)
Scales the sprite by the given factor.
CmdFX_Sprite ** Canvas_getDrawnSprites()
Gets the sprites that have been drawn to the terminal.
int Sprite_setData(CmdFX_Sprite *sprite, char **data)
Sets the text data for the sprite.
int Sprite_appendAnsiAll(CmdFX_Sprite *sprite, char *ansi)
Appends an ANSI code to all positions in the sprite.
void Sprite_free(CmdFX_Sprite *sprite)
Frees the memory allocated for a sprite.
double Sprite_getRotationAngle(CmdFX_Sprite *sprite)
Gets the rotation angle of the sprite.
void Sprite_moveBy(CmdFX_Sprite *sprite, int dx, int dy)
Moves a sprite by the given amount.
int Sprite_setForegroundGradientAll(CmdFX_Sprite *sprite, enum CmdFX_GradientDirection direction, int numColors,...)
Sets a foreground gradient using RGB colors.
CmdFX_Sprite * Sprite_loadFromFile(const char *path, int z)
Creates a new sprite from a file.
int Sprite_center(CmdFX_Sprite *sprite)
Centers the sprite on the terminal.
int Sprite_setForeground(CmdFX_Sprite *sprite, int x, int y, int rgb)
Sets the foreground color of the sprite at the given position.
int Sprite_transpose(CmdFX_Sprite *sprite)
Transposes the sprite.
int Sprite_fillCharEmpty(CmdFX_Sprite *sprite, int x, int y, int width, int height, char c)
Fills positions in the sprite where there isn't a character.
int Sprite_resizeAndCenter(CmdFX_Sprite *sprite, int width, int height)
Resizes and centers the sprite on the terminal.
int Sprite_setChar(CmdFX_Sprite *sprite, int x, int y, char c)
Sets the character at the given position in the sprite.
CmdFX_Sprite * Sprite_create(char **text, char ***ansi, int z)
Creates a new sprite.
int Sprite_draw(int x, int y, CmdFX_Sprite *sprite)
Draws a sprite to the terminal.
int Sprite_appendAnsi(CmdFX_Sprite *sprite, int x, int y, char *ansi)
Appends an ANSI code to the given position in the sprite.
int Sprite_fillChar(CmdFX_Sprite *sprite, int x, int y, int width, int height, char c)
Fills positions in the sprite.
int Sprite_resize(CmdFX_Sprite *sprite, int width, int height)
Resizes the sprite to the given dimensions.
CmdFX_Sprite * Sprite_createFilled(int width, int height, char c, char *ansi, int z)
Creates a new sprite with the given dimensions.
int Sprite_setBackgroundAll(CmdFX_Sprite *sprite, int rgb)
Sets the background color of the sprite at the given position.
int Canvas_getDrawnSpritesCount()
Gets the number of sprites that have been drawn to the terminal.
int Sprite_setForegroundAll256(CmdFX_Sprite *sprite, int color)
Sets the foreground color of the sprite at the given position using 256-bit color codes.
int Sprite_hFlip(CmdFX_Sprite *sprite)
Flips the sprite horizontally.
int Sprite_setBackgroundGradientAll(CmdFX_Sprite *sprite, enum CmdFX_GradientDirection direction, int numColors,...)
Sets a background gradient using RGB colors.
int Sprite_isOnTop(CmdFX_Sprite *sprite, int x, int y)
Gets whether the sprite is the top-most sprite at the given position.
int Sprite_setBackgroundAll256(CmdFX_Sprite *sprite, int color)
Sets the background color of the sprite at the given position using 256-bit color codes.
int Sprite_setForegroundAll(CmdFX_Sprite *sprite, int rgb)
Sets the foreground color of the sprite at the given position.
int Sprite_resizeWithPadding(CmdFX_Sprite *sprite, int width, int height, char padding)
Resizes the sprite to the given dimensions.
Represents a sprite that can be drawn to the terminal.
Definition sprites.h:31
int z
The Z-index of the sprite.
Definition sprites.h:79
int width
The width of the sprite.
Definition sprites.h:43
char ** data
The text data for the sprite.
Definition sprites.h:58
int height
The height of the sprite.
Definition sprites.h:47
int id
The drawing ID of the sprite.
Definition sprites.h:88
int x
The X position of the sprite.
Definition sprites.h:35
int y
The Y position of the sprite.
Definition sprites.h:39
char *** ansi
The ANSI data for the sprite.
Definition sprites.h:70
int uid
The unique ID of the sprite.
Definition sprites.h:95