add logs
This commit is contained in:
+4
-3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "logs.h"
|
||||||
|
|
||||||
void print_help(int status_code) {
|
void print_help(int status_code) {
|
||||||
puts(PACKAGE " " VERSION "\n\n"
|
puts(PACKAGE " " VERSION "\n\n"
|
||||||
@@ -26,12 +27,12 @@ void print_help(int status_code) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void invalid_arg(char *arg) {
|
void invalid_arg(char *arg) {
|
||||||
fprintf(stderr, "invalid argument: '%s'\n\n", arg);
|
log_error("invalid argument: '%s'", arg);
|
||||||
print_help(EXIT_FAILURE);
|
print_help(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void invalid_value(char *arg, char *value) {
|
void invalid_value(char *arg, char *value) {
|
||||||
fprintf(stderr, "invalid value for argument '%s': '%s'\n\n", arg, value);
|
log_error("invalid value for argument '%s': '%s'", arg, value);
|
||||||
print_help(EXIT_FAILURE);
|
print_help(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +96,7 @@ Parameters parse_args(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (params.frag_path == 0) {
|
if (params.frag_path == 0) {
|
||||||
fprintf(stderr, "required argument -f/--frag\n\n");
|
log_error("required argument -f/--frag");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "logs.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
time_t get_file_time(File file) {
|
time_t get_file_time(File file) {
|
||||||
@@ -23,6 +24,7 @@ void update_file(File *file) {
|
|||||||
if (file->content != 0) {
|
if (file->content != 0) {
|
||||||
free(file->content);
|
free(file->content);
|
||||||
}
|
}
|
||||||
|
log_info("Reading '%s'...", file->path);
|
||||||
// init empty file
|
// init empty file
|
||||||
file->content = 0;
|
file->content = 0;
|
||||||
file->error = false;
|
file->error = false;
|
||||||
@@ -31,6 +33,7 @@ void update_file(File *file) {
|
|||||||
FILE *file_pointer = fopen(file->path, "rb");
|
FILE *file_pointer = fopen(file->path, "rb");
|
||||||
if (!file_pointer) {
|
if (!file_pointer) {
|
||||||
file->error = true;
|
file->error = true;
|
||||||
|
log_error("Cannot open file '%s'", file->path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// read file length
|
// read file length
|
||||||
@@ -42,6 +45,7 @@ void update_file(File *file) {
|
|||||||
if (!file->content) {
|
if (!file->content) {
|
||||||
file->error = true;
|
file->error = true;
|
||||||
fclose(file_pointer);
|
fclose(file_pointer);
|
||||||
|
log_error("Cannot read file '%s'", file->path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// read file
|
// read file
|
||||||
|
|||||||
+2
-4
@@ -1,15 +1,15 @@
|
|||||||
#include <linmath.h>
|
#include <linmath.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
#include "logs.h"
|
||||||
#include "shaders.h"
|
#include "shaders.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
void error_callback(int error, const char *description) {
|
void error_callback(int error, const char *description) {
|
||||||
fprintf(stderr, "Error %d: %s\n", error, description);
|
log_error("[GLFW] %d: %s", error, description);
|
||||||
close_window(0, true);
|
close_window(0, true);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,6 @@ void forge_run(Parameters params) {
|
|||||||
File fragment_shader = read_file(params.frag_path);
|
File fragment_shader = read_file(params.frag_path);
|
||||||
|
|
||||||
if (fragment_shader.error) {
|
if (fragment_shader.error) {
|
||||||
fprintf(stderr, "Cannot read file\n");
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +53,6 @@ void forge_run(Parameters params) {
|
|||||||
ShaderProgram program = init_program(fragment_shader);
|
ShaderProgram program = init_program(fragment_shader);
|
||||||
|
|
||||||
if (program.error) {
|
if (program.error) {
|
||||||
fprintf(stderr, "Failed to compile shaders\n");
|
|
||||||
close_window(window, true);
|
close_window(window, true);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef LOG_H
|
||||||
|
#define LOG_H
|
||||||
|
|
||||||
|
#define ANSI_COLOR_RED "\x1b[31m"
|
||||||
|
#define ANSI_COLOR_GREEN "\x1b[32m"
|
||||||
|
#define ANSI_COLOR_YELLOW "\x1b[33m"
|
||||||
|
#define ANSI_COLOR_BLUE "\x1b[34m"
|
||||||
|
#define ANSI_COLOR_MAGENTA "\x1b[35m"
|
||||||
|
#define ANSI_COLOR_CYAN "\x1b[36m"
|
||||||
|
#define ANSI_COLOR_RESET "\x1b[0m"
|
||||||
|
|
||||||
|
#define log_debug(format, ...) \
|
||||||
|
fprintf(stderr, ANSI_COLOR_MAGENTA "[DEBUG] " format ANSI_COLOR_RESET \
|
||||||
|
"\n" __VA_OPT__(, ) __VA_ARGS__)
|
||||||
|
#define log_success(format, ...) \
|
||||||
|
fprintf(stdout, ANSI_COLOR_GREEN "[SUCCESS] " format ANSI_COLOR_RESET \
|
||||||
|
"\n" __VA_OPT__(, ) __VA_ARGS__)
|
||||||
|
#define log_info(format, ...) \
|
||||||
|
fprintf(stdout, "[INFO] " format "\n" __VA_OPT__(, ) __VA_ARGS__)
|
||||||
|
#define log_warn(format, ...) \
|
||||||
|
fprintf(stderr, ANSI_COLOR_YELLOW "[WARN] " format ANSI_COLOR_RESET \
|
||||||
|
"\n" __VA_OPT__(, ) __VA_ARGS__)
|
||||||
|
#define log_error(format, ...) \
|
||||||
|
fprintf(stderr, ANSI_COLOR_RED "[ERROR] " format ANSI_COLOR_RESET \
|
||||||
|
"\n" __VA_OPT__(, ) __VA_ARGS__)
|
||||||
|
|
||||||
|
#endif
|
||||||
+9
-3
@@ -1,15 +1,17 @@
|
|||||||
#include <glad/gl.h>
|
#include <glad/gl.h>
|
||||||
#include <linmath.h>
|
#include <linmath.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
|
#include "logs.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
bool compile_shader(GLuint shader_id, char *name, char *source_code) {
|
bool compile_shader(GLuint shader_id, char *name, char *source_code) {
|
||||||
GLint status_params;
|
GLint status_params;
|
||||||
char log[1024];
|
char log[1024];
|
||||||
|
|
||||||
|
log_info("Compiling '%s'...", name);
|
||||||
|
|
||||||
// update shader source code
|
// update shader source code
|
||||||
glShaderSource(shader_id, 1, (const GLchar **)&source_code, NULL);
|
glShaderSource(shader_id, 1, (const GLchar **)&source_code, NULL);
|
||||||
|
|
||||||
@@ -21,9 +23,9 @@ bool compile_shader(GLuint shader_id, char *name, char *source_code) {
|
|||||||
glGetShaderInfoLog(shader_id, 1024, NULL, (GLchar *)&log);
|
glGetShaderInfoLog(shader_id, 1024, NULL, (GLchar *)&log);
|
||||||
|
|
||||||
if (status_params == GL_FALSE) {
|
if (status_params == GL_FALSE) {
|
||||||
fprintf(stderr, "Failed to compile shader '%s'\n%s\n", name, log);
|
log_error("Failed to compile\n%s", log);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stdout, "Compiled shader '%s'\n", name);
|
log_success("Compilation successful");
|
||||||
}
|
}
|
||||||
|
|
||||||
return status_params == GL_TRUE;
|
return status_params == GL_TRUE;
|
||||||
@@ -72,6 +74,8 @@ ShaderProgram init_program(File fragment_shader) {
|
|||||||
glVertexAttribPointer(program.vpos_location, 2, GL_FLOAT, GL_FALSE,
|
glVertexAttribPointer(program.vpos_location, 2, GL_FLOAT, GL_FALSE,
|
||||||
sizeof(Vertex), (void *)offsetof(Vertex, pos));
|
sizeof(Vertex), (void *)offsetof(Vertex, pos));
|
||||||
|
|
||||||
|
log_success("Program initialized");
|
||||||
|
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,6 +88,8 @@ void update_program(ShaderProgram program, File fragment_shader) {
|
|||||||
if (result) {
|
if (result) {
|
||||||
// re-link program
|
// re-link program
|
||||||
glLinkProgram(program.program);
|
glLinkProgram(program.program);
|
||||||
|
|
||||||
|
log_success("Program updated");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
-5
@@ -5,21 +5,24 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "logs.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#define GLAD_GL_IMPLEMENTATION
|
#define GLAD_GL_IMPLEMENTATION
|
||||||
#include <glad/gl.h>
|
#include <glad/gl.h>
|
||||||
|
|
||||||
void init_glfw(void (*error_callback)(int, const char *)) {
|
void init_glfw(void (*error_callback)(int, const char *)) {
|
||||||
|
log_info("[GLFW] Initializing...");
|
||||||
|
|
||||||
// set errors handler
|
// set errors handler
|
||||||
glfwSetErrorCallback(error_callback);
|
glfwSetErrorCallback(error_callback);
|
||||||
|
|
||||||
// print current GLFW version
|
// print current GLFW version
|
||||||
fprintf(stdout, "[GLFW] %s\n", glfwGetVersionString());
|
log_info("[GLFW] %s", glfwGetVersionString());
|
||||||
|
|
||||||
// init GLFW
|
// init GLFW
|
||||||
if (!glfwInit()) {
|
if (!glfwInit()) {
|
||||||
fprintf(stderr, "[GLFW] Initialization failed\n");
|
log_error("[GLFW] Initialization failed");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,6 +30,8 @@ void init_glfw(void (*error_callback)(int, const char *)) {
|
|||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
|
||||||
|
log_success("[GLFS] Initialized...");
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWmonitor *get_monitor(unsigned char screen_index) {
|
GLFWmonitor *get_monitor(unsigned char screen_index) {
|
||||||
@@ -36,8 +41,8 @@ GLFWmonitor *get_monitor(unsigned char screen_index) {
|
|||||||
|
|
||||||
// check selected monitor availability
|
// check selected monitor availability
|
||||||
if (screen_index >= count) {
|
if (screen_index >= count) {
|
||||||
fprintf(stderr, "Screen %d is out of range [0-%d]\n", screen_index,
|
log_error("[GLFW] Screen %d is out of range [0-%d]", screen_index,
|
||||||
count - 1);
|
count - 1);
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@@ -47,6 +52,9 @@ GLFWmonitor *get_monitor(unsigned char screen_index) {
|
|||||||
|
|
||||||
GLFWwindow *create_window(GLFWmonitor *monitor,
|
GLFWwindow *create_window(GLFWmonitor *monitor,
|
||||||
void (*key_callback)(Window *, int, int, int, int)) {
|
void (*key_callback)(Window *, int, int, int, int)) {
|
||||||
|
|
||||||
|
log_info("[GLFW] Creating window...");
|
||||||
|
|
||||||
// Window related hints
|
// Window related hints
|
||||||
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
|
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
|
||||||
glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE);
|
glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE);
|
||||||
@@ -59,7 +67,7 @@ GLFWwindow *create_window(GLFWmonitor *monitor,
|
|||||||
|
|
||||||
// handle window creation fail
|
// handle window creation fail
|
||||||
if (!window) {
|
if (!window) {
|
||||||
fprintf(stderr, "[GLFW] Window or context creation failed\n");
|
log_error("[GLFW] Window or context creation failed");
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@@ -69,6 +77,8 @@ GLFWwindow *create_window(GLFWmonitor *monitor,
|
|||||||
// hide cursor
|
// hide cursor
|
||||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
|
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
|
||||||
|
|
||||||
|
log_success("[GLFW] Window created");
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,8 +127,10 @@ Context get_window_context(Window *window) {
|
|||||||
|
|
||||||
void close_window(Window *window, bool hard) {
|
void close_window(Window *window, bool hard) {
|
||||||
if (hard) {
|
if (hard) {
|
||||||
|
log_info("[GLFW] Terminating library...");
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
} else {
|
} else {
|
||||||
|
log_info("[GLFW] Closing window...");
|
||||||
glfwSetWindowShouldClose(window, GLFW_TRUE);
|
glfwSetWindowShouldClose(window, GLFW_TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user