mirror of
https://github.com/digarok/gsplus.git
synced 2024-11-28 04:49:18 +00:00
add screenshot dir argument
This commit is contained in:
parent
64d8dcd3a3
commit
7e1bd6a82a
@ -129,6 +129,7 @@ extern int g_key_down;
|
|||||||
extern const char g_gsplus_version_str[];
|
extern const char g_gsplus_version_str[];
|
||||||
int g_config_control_panel = 0;
|
int g_config_control_panel = 0;
|
||||||
char g_config_gsplus_name[1024];
|
char g_config_gsplus_name[1024];
|
||||||
|
char g_config_gsplus_screenshot_dir[1024];
|
||||||
char g_cfg_cwd_str[CFG_PATH_MAX] = { 0 };
|
char g_cfg_cwd_str[CFG_PATH_MAX] = { 0 };
|
||||||
|
|
||||||
int g_config_gsplus_auto_update = 1;
|
int g_config_gsplus_auto_update = 1;
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <libgen.h> // just for basename :P
|
||||||
#include "defc.h"
|
#include "defc.h"
|
||||||
#ifdef HAVE_ICON // Currently a flag because not supported outside of SDL builds. Looking at full solution.
|
#ifdef HAVE_ICON // Currently a flag because not supported outside of SDL builds. Looking at full solution.
|
||||||
#include "icongs.h"
|
#include "icongs.h"
|
||||||
@ -51,6 +52,7 @@ int kb_shift_control_state = 0;
|
|||||||
void x_take_screenshot(); // screenshot stuff
|
void x_take_screenshot(); // screenshot stuff
|
||||||
int g_screenshot_requested = 0; // DB to know if we want to save a screenshot
|
int g_screenshot_requested = 0; // DB to know if we want to save a screenshot
|
||||||
extern char g_config_gsplus_name[];
|
extern char g_config_gsplus_name[];
|
||||||
|
extern char *g_config_gsplus_screenshot_dir;
|
||||||
int screenshot_index = 0; // allows us to save time by not scanning from 0 each time
|
int screenshot_index = 0; // allows us to save time by not scanning from 0 each time
|
||||||
char screenshot_filename[256];
|
char screenshot_filename[256];
|
||||||
|
|
||||||
@ -622,18 +624,22 @@ void make_next_screenshot_filename()
|
|||||||
|
|
||||||
int available_filename = 0;
|
int available_filename = 0;
|
||||||
while (!available_filename) {
|
while (!available_filename) {
|
||||||
|
char *bn = basename(g_config_gsplus_name);
|
||||||
// get location of '.'
|
// get location of '.'
|
||||||
char *dotptr = strchr(g_config_gsplus_name, '.');
|
char *dotptr = strchr(bn, '.');
|
||||||
int index = dotptr - g_config_gsplus_name;
|
int index = dotptr - bn;
|
||||||
strncpy(filepart, g_config_gsplus_name, index);
|
strncpy(filepart, bn, index);
|
||||||
filepart[index] = '\0'; //terminator
|
filepart[index] = '\0'; //terminator
|
||||||
sprintf(filename, "%s%04d.png",filepart,screenshot_index);
|
// handle trailing "/" vs no "/"
|
||||||
|
char tchar = g_config_gsplus_screenshot_dir[strlen(g_config_gsplus_screenshot_dir) - 1];
|
||||||
if (file_exists(filename)) {
|
if (tchar == '/') {
|
||||||
//printf("Found existing %s\n", filename);
|
sprintf(filename, "%s%s%04d.png",g_config_gsplus_screenshot_dir,filepart,screenshot_index);
|
||||||
screenshot_index++;
|
|
||||||
} else {
|
} else {
|
||||||
//printf("Available filename: %s\n", filename);
|
sprintf(filename, "%s/%s%04d.png",g_config_gsplus_screenshot_dir,filepart,screenshot_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
screenshot_index++;
|
||||||
|
if (!file_exists(filename)) {
|
||||||
available_filename = 1;
|
available_filename = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -644,7 +650,7 @@ void make_next_screenshot_filename()
|
|||||||
// workaround is this horrible hack of saving the bmp -> load bmp -> save png
|
// workaround is this horrible hack of saving the bmp -> load bmp -> save png
|
||||||
void x_take_screenshot() {
|
void x_take_screenshot() {
|
||||||
make_next_screenshot_filename();
|
make_next_screenshot_filename();
|
||||||
|
printf("Screenshot! ---> %s\n", screenshot_filename);
|
||||||
SDL_Surface *sshot = SDL_CreateRGBSurface(0, BASE_WINDOW_WIDTH, X_A2_WINDOW_HEIGHT, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);
|
SDL_Surface *sshot = SDL_CreateRGBSurface(0, BASE_WINDOW_WIDTH, X_A2_WINDOW_HEIGHT, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);
|
||||||
SDL_LockSurface(sshot);
|
SDL_LockSurface(sshot);
|
||||||
int read = SDL_RenderReadPixels(renderer, NULL, SDL_PIXELFORMAT_ARGB8888, sshot->pixels, sshot->pitch);
|
int read = SDL_RenderReadPixels(renderer, NULL, SDL_PIXELFORMAT_ARGB8888, sshot->pixels, sshot->pitch);
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
extern const char *g_config_gsplus_name_list[];
|
extern const char *g_config_gsplus_name_list[];
|
||||||
|
extern char *g_config_gsplus_screenshot_dir;
|
||||||
#ifdef UNDER_CE
|
#ifdef UNDER_CE
|
||||||
#define vsnprintf _vsnprintf
|
#define vsnprintf _vsnprintf
|
||||||
#endif
|
#endif
|
||||||
@ -1049,6 +1050,15 @@ gsplusmain(int argc, char **argv)
|
|||||||
g_config_gsplus_name_list[0] = argv[i+1]; // super dangerous ?
|
g_config_gsplus_name_list[0] = argv[i+1]; // super dangerous ?
|
||||||
g_config_gsplus_name_list[1] = 0; // terminate string array
|
g_config_gsplus_name_list[1] = 0; // terminate string array
|
||||||
i++;
|
i++;
|
||||||
|
} else if (!strcmp("-ssdir", argv[i])) { // screenshot directory passed
|
||||||
|
g_config_gsplus_screenshot_dir = argv[i+1];
|
||||||
|
struct stat path_stat;
|
||||||
|
int ret = stat(g_config_gsplus_screenshot_dir, &path_stat); // (weakly) validate path
|
||||||
|
if (!S_ISDIR(path_stat.st_mode)) {
|
||||||
|
strcpy(g_config_gsplus_screenshot_dir, "./");
|
||||||
|
}
|
||||||
|
printf("USING SCREEN PATH: %s\n", g_config_gsplus_screenshot_dir);
|
||||||
|
i++;
|
||||||
} else if(!strcmp("-debugport", argv[i])) { // Debug port passed
|
} else if(!strcmp("-debugport", argv[i])) { // Debug port passed
|
||||||
if((i+1) >= argc) {
|
if((i+1) >= argc) {
|
||||||
printf("Missing argument\n");
|
printf("Missing argument\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user