more info in ui and print view info on exit

parent 6cc918c0
...@@ -241,16 +241,16 @@ parse_opt (int key, char *arg, struct argp_state *state) ...@@ -241,16 +241,16 @@ parse_opt (int key, char *arg, struct argp_state *state)
break; break;
case 'a': case 'a':
arguments->x_max = atoi(arg); arguments->x_max = atof(arg);
break; break;
case 'b': case 'b':
arguments->x_min = atoi(arg); arguments->x_min = atof(arg);
break; break;
case 'c': case 'c':
arguments->y_max= atoi(arg); arguments->y_max= atof(arg);
break; break;
case 'd': case 'd':
arguments->y_min= atoi(arg); arguments->y_min= atof(arg);
break; break;
case 'z': case 'z':
arguments->zoom= atof(arg); arguments->zoom= atof(arg);
...@@ -358,10 +358,10 @@ main(int argc, char **argv) ...@@ -358,10 +358,10 @@ main(int argc, char **argv)
ViewInfo view = { ViewInfo view = {
.x_min = args.x_min * args.zoom, .x_min = args.x_min,
.x_max = args.x_max * args.zoom, .x_max = args.x_max,
.y_min = args.y_min * args.zoom, .y_min = args.y_min,
.y_max = args.y_max * args.zoom, .y_max = args.y_max,
.zoom = args.zoom .zoom = args.zoom
}; };
...@@ -520,7 +520,7 @@ main(int argc, char **argv) ...@@ -520,7 +520,7 @@ main(int argc, char **argv)
fps = 1000.0 / (double) msec; fps = 1000.0 / (double) msec;
if(app.draw_ui) if(app.draw_ui)
render_ui(&ui, app.renderer, view, fps); render_ui(&ui, app.renderer, view, fps, app.win_width, app.win_height, screen.size);
SDL_RenderPresent(app.renderer); SDL_RenderPresent(app.renderer);
} }
...@@ -530,4 +530,11 @@ main(int argc, char **argv) ...@@ -530,4 +530,11 @@ main(int argc, char **argv)
SDL_DestroyRenderer(app.renderer); SDL_DestroyRenderer(app.renderer);
SDL_DestroyWindow(app.window); SDL_DestroyWindow(app.window);
SDL_Quit(); SDL_Quit();
printf("To recreate last image add those arguments to program next time:\n"
"--x_min %lf --x_max %lf --y_min %lf --y_max %lf --zoom %lf "
"--width %u --height %u --iterations %u\n",
view.x_min, view.x_max, view.y_min, view.y_max, view.zoom,
app.win_width, app.win_height, args.max_iterations
);
} }
#include "ui.h" #include "ui.h"
#include <SDL2/SDL_render.h>
void void
render_text(SDL_Renderer* renderer, TTF_Font* font, const char* text, SDL_Rect* rect) { render_text(SDL_Renderer* renderer, TTF_Font* font, const char* text, SDL_Rect* rect) {
...@@ -26,34 +27,59 @@ init_ui(UI* ui) ...@@ -26,34 +27,59 @@ init_ui(UI* ui)
ui->fps_display = (SDL_Rect){UI_PADDING, UI_PADDING * 2 + BUTTON_HEIGHT, ui->fps_display = (SDL_Rect){UI_PADDING, UI_PADDING * 2 + BUTTON_HEIGHT,
BUTTON_WIDTH, BUTTON_HEIGHT}; BUTTON_WIDTH, BUTTON_HEIGHT};
ui->window_size = (SDL_Rect){UI_PADDING, UI_PADDING * 3 + 2 * BUTTON_HEIGHT,
BUTTON_WIDTH, BUTTON_HEIGHT};
ui->x_cords = (SDL_Rect){UI_PADDING, UI_PADDING * 4 + 3 * BUTTON_HEIGHT,
BUTTON_WIDTH, BUTTON_HEIGHT};
ui->y_cords = (SDL_Rect){UI_PADDING, UI_PADDING * 5 + 4 * BUTTON_HEIGHT,
BUTTON_WIDTH, BUTTON_HEIGHT};
TTF_Init(); TTF_Init();
//ui->font = TTF_OpenFont("/System/Library/Fonts/Monaco.ttf", FONT_SIZE); //ui->font = TTF_OpenFont("/System/Library/Fonts/Monaco.ttf", FONT_SIZE);
//ui->font = TTF_OpenFont("C:/Windows/Fonts/arial.ttf", FONT_SIZE); //ui->font = TTF_OpenFont("C:/Windows/Fonts/arial.ttf", FONT_SIZE);
ui->font = TTF_OpenFont("/usr/share/fonts/nerdfonts/TerminessNerdFont-Regular.ttf", FONT_SIZE); ui->font = TTF_OpenFont("/usr/share/fonts/nerdfonts/TerminessNerdFont-Regular.ttf", FONT_SIZE);
if (!ui->font) { if (!ui->font) {
printf("Font yüklenemedi: %s\n", TTF_GetError()); printf("Font not found!: %s\n", TTF_GetError());
} }
} }
void void
render_ui(UI* ui, SDL_Renderer* renderer, ViewInfo view, float fps) render_ui(UI* ui, SDL_Renderer* renderer, ViewInfo view, float fps, unsigned short win_width, unsigned short win_height, int arr_size)
{ {
SDL_SetRenderDrawColor(renderer, 60, 60, 60, UI_ALPHA); SDL_SetRenderDrawColor(renderer, 60, 60, 60, UI_ALPHA);
SDL_RenderFillRect(renderer, &ui->zoom_display); SDL_RenderFillRect(renderer, &ui->zoom_display);
SDL_RenderFillRect(renderer, &ui->fps_display); SDL_RenderFillRect(renderer, &ui->fps_display);
SDL_RenderFillRect(renderer, &ui->window_size);
SDL_RenderFillRect(renderer, &ui->x_cords);
SDL_RenderFillRect(renderer, &ui->y_cords);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, UI_ALPHA); SDL_SetRenderDrawColor(renderer, 255, 255, 255, UI_ALPHA);
SDL_RenderDrawRect(renderer, &ui->zoom_display); SDL_RenderDrawRect(renderer, &ui->zoom_display);
SDL_RenderDrawRect(renderer, &ui->fps_display); SDL_RenderDrawRect(renderer, &ui->fps_display);
SDL_RenderDrawRect(renderer, &ui->window_size);
SDL_RenderDrawRect(renderer, &ui->x_cords);
SDL_RenderDrawRect(renderer, &ui->y_cords);
if (ui->font) { if (ui->font) {
char buf[16]; char buf[24];
snprintf(buf, sizeof(buf), "Zoom %.3gx", view.zoom); snprintf(buf, sizeof(buf), "Zoom %.3gx", view.zoom);
render_text(renderer, ui->font, buf, &ui->zoom_display); render_text(renderer, ui->font, buf, &ui->zoom_display);
snprintf(buf, sizeof(buf), "Fps %.2f", fps); snprintf(buf, sizeof(buf), "Fps %.2f", fps);
render_text(renderer, ui->font, buf, &ui->fps_display); render_text(renderer, ui->font, buf, &ui->fps_display);
snprintf(buf, sizeof(buf), "%ux%u; arr:%d", win_width, win_height, arr_size);
render_text(renderer, ui->font, buf, &ui->window_size);
snprintf(buf, sizeof(buf), "x:(%lf %lf)", view.x_min, view.x_max);
render_text(renderer, ui->font, buf, &ui->x_cords);
snprintf(buf, sizeof(buf), "y:(%lf %lf)", view.y_min, view.y_max);
render_text(renderer, ui->font, buf, &ui->y_cords);
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "mouse.h" #include "mouse.h"
#include "mandelbrot.h" #include "mandelbrot.h"
#define BUTTON_WIDTH 120 #define BUTTON_WIDTH 190
#define BUTTON_HEIGHT 30 #define BUTTON_HEIGHT 30
#define PREVIEW_SIZE 200 #define PREVIEW_SIZE 200
#define UI_PADDING 10 #define UI_PADDING 10
...@@ -17,11 +17,16 @@ ...@@ -17,11 +17,16 @@
typedef struct { typedef struct {
SDL_Rect zoom_display; SDL_Rect zoom_display;
SDL_Rect fps_display; SDL_Rect fps_display;
SDL_Rect window_size;
SDL_Rect x_cords;
SDL_Rect y_cords;
TTF_Font* font; TTF_Font* font;
} UI; } UI;
void init_ui(UI* ui); void init_ui(UI* ui);
void render_ui(UI* ui, SDL_Renderer* renderer, ViewInfo view, float fps); void render_ui(UI* ui, SDL_Renderer* renderer, ViewInfo view, float fps, unsigned short win_width, unsigned short win_height, int arr_size);
int handle_ui_event(UI* ui, SDL_Event event, ViewInfo* view); int handle_ui_event(UI* ui, SDL_Event event, ViewInfo* view);
void cleanup_ui(UI* ui); void cleanup_ui(UI* ui);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment