PetGraphycs beta1.0
Uma simples biblioteca gráfica de terminal em C
Loading...
Searching...
No Matches
graphycs.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <stdint.h>
#include <conio.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
#include "graphycs.h"

Data Structures

struct  Obj_Node
struct  Obj_Stack

Macros

#define _USE_MATH_DEFINES
#define min(a, b)
#define max(a, b)

Typedefs

typedef struct Obj_Node Obj_Node

Functions

Obj_Node pop_obj (Obj_Stack *stack)
void push_Obj (Obj_Stack *stack, void **obj, char obj_type)
char ler_teclado ()
 Lê o input do teclado sem interromper a execução do programa.
int next_anim (Animation *anim)
Color converter_ABGR_para_Color (uint32_t abgr)
Color criar_cor (int r, int g, int b)
 Retorna uma nova cor dados os componentes RGB.
Color aplicar_filtro (Color original, Color filtro)
 Põe uma cor de filtro em cima de outra cor para alterar sua matiz.
Vector2 new_Vector2 (int x, int y)
 Retorna um novo vetor dados x e y.
Vector2 produto_vetor_escalar (Vector2 vet, float escalar)
 Calcula o produto de um vetor por um escalar inteiro.
Vector2 vector_sum (Vector2 v1, Vector2 v2)
 Soma dois vetores.
Vector2 vector_subtr (Vector2 v1, Vector2 v2)
 Subtrai dois vetores.
Vector2 reverse_vector (Vector2 v)
 Inverte os componentes de um vetor.
Vector2 centro_objeto_complexo (ObjetoComplexo *obj)
 Retorna as coordenadas relativas do centro geométrico do objeto complexo, considerando a totalidade dos frames.
Vector2 get_complexo_abs_Pixel_pos (ObjetoComplexo *obj, int frame, int index)
 Retorna a posição absoluta do index-ésimo píxel do vetor de pixeis do frame-ésimo frame dentro do Objeto Complexo.
Vector2 aplicar_matriz_rot (Vector2 Pixel_pos, Vector2 rot_pivo, float graus)
Pixel criar_Pixel (Color cor, Vector2 pos)
 Cria um Pixel com cor e posição especificadas.
void add_Pixel (Pixel_Stack *stack, Pixel p)
void limpar_pilha (Pixel_Stack *pixel_stack, Obj_Stack *obj_stack)
void mover_tela (Screen *s, Vector2 direction)
Vector2 get_abs_Pixel_pos (Objeto *obj, int index)
 Retorna a posição absoluta do index-ésimo píxel do vetor de pixeis dentro do Objeto.
Vector2 centro_do_objeto (Objeto *obj)
 Retorna as coordenadas relativas do centro geométrico do objeto.
Vector2 centro_da_tela (Screen *s)
 Retorna as coordenadas relativas do centro geométrico da tela.
Pixel desempilhar_Pixel (Pixel_Stack *stack)
 Desempilha o pixel do topo da pilha de pixeis.
void normalizar_objeto (Objeto *obj)
 Normaliza objeto simples para ter pivô no canto superior esquerdo.
void centralizar_objeto (Objeto *obj)
 Centraliza o pivô do objeto simples no centro geométrico.
Objetocriar_objeto_custom (Pixel *info, int qtd_Pixel, bool normalizar)
 Cria um objeto customizado a partir de uma lista de pixels.
Objetocriar_retangulo_monocromatico (Color cor, Vector2 tamanho)
 Gera um objeto retangular monocromático preenchido.
Objetorecortar_objeto (Objeto *obj, Vector2 inicio, Vector2 fim)
 Recorta parte de um objeto dentro de um retângulo definido.
Objetocriar_obj_eixos_debug (Screen *s)
 Cria um objeto de eixos cartesianos brancos para debug.
Objetomerge_objeto (Objeto *prioridade, Objeto *novo, Vector2 pivot)
 Une dois objetos em um só a partir de um pivot.
Pixel deletar_Pixel (Screen *s, Vector2 pos)
 Remove o pixel do topo da pilha na tela em posição dada.
Screencriar_tela (Vector2 tamanho, Color fundo)
 Cria o objeto de tela que será renderizado.
void excluir_tela (Screen *s)
 Exclui completamente uma tela da memória.
Animation criar_anim (int *frame_list, int qtd_frames, char nome[])
 Cria uma animação encapsulando índices de frames.
int * obj_complexo_contem_Pixel_em (ObjetoComplexo *obj, Vector2 pos, int *out_qtd_de_frames)
 Verifica em quais frames de um objeto complexo há pixel em posição.
bool vetor_valido_na_tela (Screen *s, Vector2 vet)
 Retorna true se vetor está dentro dos limites da tela.
bool compare_vector (Vector2 v1, Vector2 v2)
 Compara igualdade entre dois vetores.
bool obj_contem_Pixel_em (Objeto *obj, Vector2 pos)
 Verifica se objeto simples contém pixel em posição relativa dada.
Pixel get_pixel_em (Screen *s, Vector2 pos)
 retorna o pixel que está no topo da pilha na posição relativa à tela dada
AnimationManagercriar_anim_manager (int qtd_anims)
void setar_animation_via_index (ObjetoComplexo *obj, int anim_index)
 Seleciona a animação atual de um objeto complexo por índice.
void setar_animation_via_nome (ObjetoComplexo *obj, char nome[])
 Seleciona a animação atual de um objeto complexo por nome.
void setar_frame_obj_complexo (Screen *s, ObjetoComplexo *obj, int frame)
 Define manualmente o frame atual de um objeto complexo.
void animar_objeto_complexo (Screen *s, ObjetoComplexo *obj)
 Executa o passo de animação do objeto complexo na tela.
void setup_animations (ObjetoComplexo *obj, Animation anims[], int qtd_anims)
 Configura o gerenciador de animações (AnimationManager) de um objeto complexo.
void alterar_pivot_obj (Objeto *obj, Vector2 new_pivot)
 Altera o pivô de um objeto simples.
void alterar_pivot_frame (ObjetoComplexo *obj, int frame, Vector2 novo_pivot)
 Altera o pivô de um frame específico em objeto complexo.
void desenhar_objeto (Screen *s, Objeto *obj)
 Desenha um objeto simples na tela em sua posição.
void aplicar_filtro_obj (Objeto *obj, Color filtro)
 Aplica um filtro de cor ao objeto simples.
void espelhar_objeto (Screen *s, Objeto *obj, bool horizontalmente)
 Espelha um objeto simples horizontalmente ou verticalmente.
void espelhar_objeto_complexo (Screen *s, ObjetoComplexo *obj, bool horizontalmente)
 Espelha todos os frames de um objeto complexo horizontalmente ou verticalmente.
void desenhar_objeto_complexo (Screen *s, ObjetoComplexo *obj)
 Desenha um objeto complexo na tela em sua posição.
void excluir_anim_manager (AnimationManager *manager)
void excluir_objeto (Objeto *obj)
 Exclui completamente um objeto simples da memória.
void excluir_objeto_complexo (ObjetoComplexo *obj)
 Exclui completamente um objeto complexo da memória.
void esconder_objeto (Screen *s, Objeto *obj)
 Esconde um objeto simples removendo seus pixels na tela.
void esconder_objeto_complexo (Screen *s, ObjetoComplexo *obj)
 Esconde um objeto complexo removendo seus pixels na tela.
void mover_objeto (Screen *s, Objeto *obj, Vector2 direction)
 Move um objeto simples de acordo com vetor de deslocamento.
void teleportar_objeto (Screen *s, Objeto *obj, Vector2 pos_final)
 Teleporta um objeto simples para posição final absoluta.
void teleportar_objeto_complexo (Screen *s, ObjetoComplexo *obj, Vector2 pos_final)
 Teleporta um objeto complexo para posição final absoluta.
void preencher_background (Screen *s, Color cor)
 Preenche toda a tela com uma cor de fundo.
void printPixel (Pixel_Stack *p)
void mover_objeto_complexo (Screen *s, ObjetoComplexo *obj, Vector2 direction)
 Move um objeto complexo de acordo com vetor de deslocamento.
void rotacionar_objeto (Objeto *obj, Vector2 pivot, float graus)
 Rotaciona um objeto simples em torno de um pivô.
void rotacionar_objeto_complexo (ObjetoComplexo *obj, Vector2 pivot, float graus)
 Rotaciona um objeto complexo em torno de um pivô.
void moveCursor (Vector2 v)
 Move o cursor de renderização para a posição dada.
void render (Screen *s, bool reset)
 Renderiza o conteúdo da tela no console.
void aplicar_filtro_obj_complexo (ObjetoComplexo *obj, Color filtro)
 Aplica um filtro de cor ao objeto complexo.
Pixelconverter_piskel_frame_para_Pixel_info (const uint32_t frame_data[], int width, int height, int *qtd_Pixel)
Objetocriar_piskel_obj (const uint32_t frame_data[], int width, int height)
 Cria um objeto a partir de dados de um frame do Piskel.
ObjetoComplexocriar_objeto_complexo_piskel (int qtd_frames, int width, int height, const uint32_t obj_data[qtd_frames][width *height])
 Cria um objeto complexo a partir de matriz do Piskel.
ObjetoComplexocriar_objeto_complexo_via_lista (Objeto **obj_origem, int qtd_objetos)
 Cria um objeto complexo a partir de lista de objetos (frames).

Macro Definition Documentation

◆ _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

◆ max

#define max ( a,
b )
Value:
(a > b ? a : b)

◆ min

#define min ( a,
b )
Value:
(a < b ? a : b)

Typedef Documentation

◆ Obj_Node

typedef struct Obj_Node Obj_Node

Function Documentation

◆ add_Pixel()

void add_Pixel ( Pixel_Stack * stack,
Pixel p )

◆ aplicar_matriz_rot()

Vector2 aplicar_matriz_rot ( Vector2 Pixel_pos,
Vector2 rot_pivo,
float graus )

◆ converter_ABGR_para_Color()

Color converter_ABGR_para_Color ( uint32_t abgr)

◆ converter_piskel_frame_para_Pixel_info()

Pixel * converter_piskel_frame_para_Pixel_info ( const uint32_t frame_data[],
int width,
int height,
int * qtd_Pixel )

◆ criar_anim_manager()

AnimationManager * criar_anim_manager ( int qtd_anims)

◆ excluir_anim_manager()

void excluir_anim_manager ( AnimationManager * manager)

◆ limpar_pilha()

void limpar_pilha ( Pixel_Stack * pixel_stack,
Obj_Stack * obj_stack )

◆ next_anim()

int next_anim ( Animation * anim)

◆ pop_obj()

Obj_Node pop_obj ( Obj_Stack * stack)

◆ printPixel()

void printPixel ( Pixel_Stack * p)

◆ push_Obj()

void push_Obj ( Obj_Stack * stack,
void ** obj,
char obj_type )