mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-09 14:00:17 +00:00
Merge pull request #216 from a740g/tfd-support
This implements cross-platform common dialogs for QB64-PE (issue #189)
This commit is contained in:
commit
bfec18cd92
35 changed files with 9596 additions and 186 deletions
5
Makefile
5
Makefile
|
@ -126,7 +126,7 @@ endif
|
|||
GENERATE_LICENSE ?= n
|
||||
|
||||
LICENSE ?= $(EXE).license.txt
|
||||
LICENSE_IN_USE := qb64
|
||||
LICENSE_IN_USE := qb64 tinyfiledialogs
|
||||
|
||||
all: $(EXE)
|
||||
|
||||
|
@ -141,7 +141,7 @@ ifeq ($(OS),lnx)
|
|||
endif
|
||||
|
||||
ifeq ($(OS),win)
|
||||
CXXLIBS += -static-libgcc -static-libstdc++
|
||||
CXXLIBS += -static-libgcc -static-libstdc++ -lcomdlg32 -lole32
|
||||
CXXFLAGS += -DGLEW_STATIC -DFREEGLUT_STATIC
|
||||
endif
|
||||
|
||||
|
@ -192,6 +192,7 @@ include $(PATH_INTERNAL_C)/parts/core/build.mk
|
|||
include $(PATH_INTERNAL_C)/parts/input/game_controller/build.mk
|
||||
include $(PATH_INTERNAL_C)/parts/video/font/ttf/build.mk
|
||||
include $(PATH_INTERNAL_C)/parts/video/image/build.mk
|
||||
include $(PATH_INTERNAL_C)/parts/gui/build.mk
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "mutex.h"
|
||||
#include "audio.h"
|
||||
#include "image.h"
|
||||
#include "gui.h"
|
||||
|
||||
int32 disableEvents = 0;
|
||||
|
||||
|
@ -217,9 +218,6 @@ void log_event(int32 x) {
|
|||
// forward references
|
||||
void sub__printimage(int32 i);
|
||||
|
||||
void alert(int32 x);
|
||||
void alert(char *x);
|
||||
|
||||
// GUI notification variables
|
||||
int32 force_display_update = 0;
|
||||
|
||||
|
@ -601,8 +599,7 @@ ptrszint list_add(list *L) {
|
|||
// note: L->structure is only modified by list_add
|
||||
L->structure = (uint8 *)calloc(1, L->internal_structure_size * (new_structures_last + 1));
|
||||
if (L->structure == NULL) {
|
||||
alert("list_add: failed to allocate new buffer, structure size:");
|
||||
alert(L->internal_structure_size);
|
||||
gui_alert("list_add: failed to allocate new buffer, structure size: %lld", (int64_t)L->internal_structure_size);
|
||||
}
|
||||
L->structures_last = new_structures_last;
|
||||
L->structures = 0;
|
||||
|
@ -1062,8 +1059,7 @@ int32 new_hardware_img(int32 x, int32 y, uint32 *pixels, int32 flags) {
|
|||
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, x, y, GL_BGRA, GL_UNSIGNED_BYTE, pixels);
|
||||
glerrorcode = glGetError();
|
||||
if (glerrorcode) {
|
||||
alert("gluBuild2DMipmaps failed");
|
||||
alert(glerrorcode);
|
||||
gui_alert("gluBuild2DMipmaps failed: %i", glerrorcode);
|
||||
}
|
||||
hardware_img->source_state.PO2_fix = PO2_FIX__MIPMAPPED;
|
||||
hardware_img->PO2_w = x;
|
||||
|
@ -1100,8 +1096,7 @@ void hardware_img_buffer_to_texture(int32 handle) {
|
|||
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, hardware_img->w, hardware_img->h, GL_BGRA, GL_UNSIGNED_BYTE, hardware_img->software_pixel_buffer);
|
||||
glerrorcode = glGetError();
|
||||
if (glerrorcode) {
|
||||
alert("gluBuild2DMipmaps failed");
|
||||
alert(glerrorcode);
|
||||
gui_alert("gluBuild2DMipmaps failed: %i", glerrorcode);
|
||||
}
|
||||
hardware_img->source_state.PO2_fix = PO2_FIX__MIPMAPPED;
|
||||
hardware_img->PO2_w = hardware_img->w;
|
||||
|
@ -2560,129 +2555,10 @@ int32 exit_ok = 0;
|
|||
|
||||
// substitute Windows functionality
|
||||
#ifndef QB64_WINDOWS
|
||||
// MessageBox defines
|
||||
# define IDOK 1
|
||||
# define IDCANCEL 2
|
||||
# define IDABORT 3
|
||||
# define IDRETRY 4
|
||||
# define IDIGNORE 5
|
||||
# define IDYES 6
|
||||
# define IDNO 7
|
||||
# define MB_OK 0x00000000L
|
||||
# define MB_OKCANCEL 0x00000001L
|
||||
# define MB_ABORTRETRYIGNORE 0x00000002L
|
||||
# define MB_YESNOCANCEL 0x00000003L
|
||||
# define MB_YESNO 0x00000004L
|
||||
# define MB_RETRYCANCEL 0x00000005L
|
||||
# define MB_SYSTEMMODAL 0x00001000L
|
||||
// alternate implementations of MessageBox
|
||||
# ifdef QB64_MACOSX
|
||||
int MessageBox(int ignore, char *message, char *header, int type) {
|
||||
|
||||
CFStringRef header_ref = CFStringCreateWithCString(NULL, header, kCFStringEncodingASCII);
|
||||
CFStringRef message_ref = CFStringCreateWithCString(NULL, message, kCFStringEncodingASCII);
|
||||
CFOptionFlags result;
|
||||
if (type & MB_SYSTEMMODAL)
|
||||
type -= MB_SYSTEMMODAL;
|
||||
if (type == MB_YESNO) {
|
||||
CFUserNotificationDisplayAlert(0, // no timeout
|
||||
kCFUserNotificationNoteAlertLevel, NULL, NULL, NULL, header_ref, message_ref, CFSTR("No"), CFSTR("Yes"), NULL, &result);
|
||||
CFRelease(header_ref);
|
||||
CFRelease(message_ref);
|
||||
if (result == kCFUserNotificationDefaultResponse)
|
||||
return IDNO;
|
||||
else
|
||||
return IDYES;
|
||||
}
|
||||
if (type == MB_OK) {
|
||||
CFUserNotificationDisplayAlert(0, // no timeout
|
||||
kCFUserNotificationNoteAlertLevel, NULL, NULL, NULL, header_ref, message_ref, CFSTR("OK"), NULL, NULL, &result);
|
||||
CFRelease(header_ref);
|
||||
CFRelease(message_ref);
|
||||
return IDOK;
|
||||
}
|
||||
return IDCANCEL;
|
||||
}
|
||||
# else
|
||||
int MessageBox(int ignore, char *message, char *title, int type) {
|
||||
static qbs *s = NULL;
|
||||
if (!s)
|
||||
s = qbs_new(0, 0);
|
||||
if (type & MB_SYSTEMMODAL)
|
||||
type -= MB_SYSTEMMODAL;
|
||||
if (type == MB_YESNO) {
|
||||
qbs_set(s, qbs_new_txt("xmessage -center -title "));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(title)));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(" -buttons Yes:2,No:1 ")));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(message)));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(" ")));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 0;
|
||||
static int status;
|
||||
status = system((char *)s->chr);
|
||||
if (-1 != status) {
|
||||
static int32 r;
|
||||
r = WEXITSTATUS(status);
|
||||
if (r == 2)
|
||||
return IDYES;
|
||||
if (r == 1)
|
||||
return IDNO;
|
||||
}
|
||||
return IDNO;
|
||||
} // MB_YESNO
|
||||
if (type == MB_OK) {
|
||||
qbs_set(s, qbs_new_txt("xmessage -center -title "));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(title)));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(" -buttons OK:1 ")));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(message)));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt(" ")));
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 34;
|
||||
qbs_set(s, qbs_add(s, qbs_new_txt("?")));
|
||||
s->chr[s->len - 1] = 0;
|
||||
system((char *)s->chr);
|
||||
return IDOK;
|
||||
} // MB_OK
|
||||
return IDCANCEL;
|
||||
}
|
||||
# endif
|
||||
|
||||
void AllocConsole() { return; }
|
||||
void FreeConsole() { return; }
|
||||
#endif
|
||||
|
||||
int MessageBox2(int ignore, char *message, char *title, int type) {
|
||||
|
||||
#ifdef QB64_WINDOWS
|
||||
return MessageBox(window_handle, message, title, type);
|
||||
#else
|
||||
return MessageBox(NULL, message, title, type);
|
||||
#endif
|
||||
}
|
||||
|
||||
void alert(int32 x) {
|
||||
static char str[100];
|
||||
memset(&str[0], 0, 100);
|
||||
sprintf(str, "%d", x);
|
||||
MessageBox(0, &str[0], "Alert", MB_OK);
|
||||
}
|
||||
|
||||
void alert(char *x) { MessageBox(0, x, "Alert", MB_OK); }
|
||||
|
||||
// vc->project->properties->configuration properties->general->configuration type->application(.exe)
|
||||
// vc->project->properties->configuration properties->general->configuration type->static library(.lib)
|
||||
|
||||
|
@ -7749,7 +7625,7 @@ skip_0F_opcodes:
|
|||
else
|
||||
i2 = i2 - 10 + 65;
|
||||
unknown_opcode_mess->chr[17] = i2;
|
||||
MessageBox2(NULL, (char *)unknown_opcode_mess->chr, "X86 Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert((const char *)unknown_opcode_mess->chr, "X86 Error", "ok");
|
||||
exit(86);
|
||||
done:
|
||||
if (*ip)
|
||||
|
@ -8040,13 +7916,13 @@ void fix_error() {
|
|||
snprintf(errtitle, len + 1, FIXERRMSG_TITLE, (!prevent_handling ? FIXERRMSG_UNHAND : FIXERRMSG_CRIT), new_error, binary_name->chr);
|
||||
|
||||
if (prevent_handling) {
|
||||
v = MessageBox2(NULL, errmess, errtitle, MB_OK);
|
||||
v = gui_alert(errmess, errtitle, "ok");
|
||||
exit(0);
|
||||
} else {
|
||||
v = MessageBox2(NULL, errmess, errtitle, MB_YESNO | MB_SYSTEMMODAL);
|
||||
v = gui_alert(errmess, errtitle, "yesno");
|
||||
}
|
||||
|
||||
if ((v == IDNO) || (v == IDOK)) {
|
||||
if ((v == 2) || (v == 0)) {
|
||||
close_program = 1;
|
||||
end();
|
||||
}
|
||||
|
@ -8067,107 +7943,107 @@ void error(int32 error_number) {
|
|||
|
||||
// out of memory errors
|
||||
if (error_number == 257) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #1", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #1", "ok");
|
||||
exit(0);
|
||||
} // generic "Out of memory" error
|
||||
// tracable "Out of memory" errors
|
||||
if (error_number == 502) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #2", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #2", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 503) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #3", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #3", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 504) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #4", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #4", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 505) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #5", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #5", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 506) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #6", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #6", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 507) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #7", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #7", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 508) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #8", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #8", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 509) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #9", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #9", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 510) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #10", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #10", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 511) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #11", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #11", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 512) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #12", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #12", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 513) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #13", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #13", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 514) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #14", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #14", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 515) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #15", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #15", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 516) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #16", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #16", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 517) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #17", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #17", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 518) {
|
||||
MessageBox2(NULL, "Out of memory", "Critical Error #18", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of memory", "Critical Error #18", "ok");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// other critical errors
|
||||
if (error_number == 11) {
|
||||
MessageBox2(NULL, "Division by zero", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Division by zero", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 256) {
|
||||
MessageBox2(NULL, "Out of stack space", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Out of stack space", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 259) {
|
||||
MessageBox2(NULL, "Cannot find dynamic library file", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Cannot find dynamic library file", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 260) {
|
||||
MessageBox2(NULL, "Sub/Function does not exist in dynamic library", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Sub/Function does not exist in dynamic library", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 261) {
|
||||
MessageBox2(NULL, "Sub/Function does not exist in dynamic library", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("Sub/Function does not exist in dynamic library", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (error_number == 270) {
|
||||
MessageBox2(NULL, "_GL command called outside of SUB _GL's scope", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("_GL command called outside of SUB _GL's scope", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
if (error_number == 271) {
|
||||
MessageBox2(NULL, "END/SYSTEM called within SUB _GL's scope", "Critical Error", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert("END/SYSTEM called within SUB _GL's scope", "Critical Error", "ok");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -28447,7 +28323,7 @@ void showvalue(__int64 v) {
|
|||
if (s == NULL)
|
||||
s = qbs_new(0, 0);
|
||||
qbs_set(s, qbs_str(v));
|
||||
MessageBox2(NULL, (char *)s->chr, "showvalue", MB_OK | MB_SYSTEMMODAL);
|
||||
gui_alert((char *)s->chr, "showvalue", "ok");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -35110,7 +34986,7 @@ void free_hardware_img(int32 handle, int32 caller_id) {
|
|||
hardware_img = (hardware_img_struct *)list_get(hardware_img_handles, handle);
|
||||
|
||||
if (hardware_img == NULL) {
|
||||
alert("free_hardware_img: image does not exist");
|
||||
gui_alert("free_hardware_img: image does not exist");
|
||||
}
|
||||
|
||||
if (hardware_img->dest_context_handle) {
|
||||
|
@ -36499,10 +36375,10 @@ void GLUT_DISPLAY_REQUEST() {
|
|||
static hardware_img_struct *f1;
|
||||
f1 = (hardware_img_struct *)list_get(hardware_img_handles, software_screen_hardware_frame);
|
||||
if (software_screen_hardware_frame == 0) {
|
||||
alert("Invalid software_screen_hardware_frame!!");
|
||||
gui_alert("Invalid software_screen_hardware_frame!!");
|
||||
}
|
||||
if (f1 == NULL)
|
||||
alert("Invalid software_screen_hardware_frame!");
|
||||
gui_alert("Invalid software_screen_hardware_frame!");
|
||||
|
||||
static int32 use_alpha;
|
||||
use_alpha = 0;
|
||||
|
@ -36542,7 +36418,7 @@ void GLUT_DISPLAY_REQUEST() {
|
|||
hardware_graphics_command_struct *last_hgc =
|
||||
(hardware_graphics_command_struct *)list_get(hardware_graphics_command_handles, last_hardware_command_rendered);
|
||||
if (last_hgc == NULL)
|
||||
alert("Rendering: Last HGC is NULL!");
|
||||
gui_alert("Rendering: Last HGC is NULL!");
|
||||
command = last_hgc->next_command;
|
||||
caller_flag = 200;
|
||||
}
|
||||
|
@ -36630,10 +36506,8 @@ void GLUT_DISPLAY_REQUEST() {
|
|||
|
||||
hardware_graphics_command_struct *hgcx =
|
||||
(hardware_graphics_command_struct *)list_get(hardware_graphics_command_handles, next_hardware_command_to_remove);
|
||||
alert(order);
|
||||
alert(hgcx->order);
|
||||
alert(command);
|
||||
alert("Renderer: Command does not exist.");
|
||||
gui_alert("Renderer: Command does not exist: command = %i, hgcx->order = %lld, order = %lld", command, hgcx->order, order);
|
||||
|
||||
}
|
||||
if (hgc->order == order) {
|
||||
if (first_command_prev_order == 0)
|
||||
|
@ -38062,7 +37936,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
GLenum err = glewInit();
|
||||
if (GLEW_OK != err) {
|
||||
alert((char *)glewGetErrorString(err));
|
||||
gui_alert((char *)glewGetErrorString(err));
|
||||
}
|
||||
if (glewIsSupported("GL_EXT_framebuffer_object"))
|
||||
framebufferobjects_supported = 1;
|
||||
|
@ -38358,7 +38232,7 @@ void display() {
|
|||
}
|
||||
}
|
||||
if (frame_i == -1) {
|
||||
alert("Software frame buffer: Failed to find available frame");
|
||||
gui_alert("Software frame buffer: Failed to find available frame");
|
||||
return;
|
||||
}
|
||||
display_frame[frame_i].state = DISPLAY_FRAME_STATE__BUILDING;
|
||||
|
@ -38535,7 +38409,7 @@ void display() {
|
|||
if (i2 != -1) {
|
||||
memcpy(display_frame[frame_i].bgra, display_frame[i2].bgra, display_frame[frame_i].w * display_frame[frame_i].h * 4);
|
||||
} else {
|
||||
alert("Text Screen Update: Failed to locate previous frame's data for comparison");
|
||||
gui_alert("Text Screen Update: Failed to locate previous frame's data for comparison");
|
||||
check_last = 0; // never occurs, safe-guard only
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ int32 func__display();
|
|||
void qbg_sub_view_print(int32, int32, int32);
|
||||
qbs *qbs_new(int32, uint8);
|
||||
qbs *qbs_new_txt(const char *);
|
||||
qbs *qbs_new_txt_len(const char *, int32_t); // a740g: Added this here so that we don't have to declare it ourselves everywhere
|
||||
qbs *qbs_add(qbs *, qbs *);
|
||||
qbs *qbs_set(qbs *, qbs *);
|
||||
void qbg_sub_window(float, float, float, float, int32);
|
||||
|
|
46
internal/c/libqb/include/gui.h
Normal file
46
internal/c/libqb/include/gui.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
//-----------------------------------------------------------------------------------------------------
|
||||
// ___ ____ __ _ _ ____ _____ ____ _ _ ___ _ _ _
|
||||
// / _ \| __ ) / /_ | || | | _ \| ____| / ___| | | |_ _| | | (_) |__ _ __ __ _ _ __ _ _
|
||||
// | | | | _ \| '_ \| || |_| |_) | _| | | _| | | || | | | | | '_ \| '__/ _` | '__| | | |
|
||||
// | |_| | |_) | (_) |__ _| __/| |___ | |_| | |_| || | | |___| | |_) | | | (_| | | | |_| |
|
||||
// \__\_\____/ \___/ |_| |_| |_____| \____|\___/|___| |_____|_|_.__/|_| \__,_|_| \__, |
|
||||
// |___/
|
||||
// QB64-PE GUI Library
|
||||
// Powered by tinyfiledialogs (http://tinyfiledialogs.sourceforge.net)
|
||||
//
|
||||
// Copyright (c) 2022 Samuel Gomes
|
||||
// https://github.com/a740g
|
||||
//
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// HEADER FILES
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// FORWARD DECLARATIONS
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
struct qbs;
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// FUNCTIONS
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
void sub__guiNotifyPopup(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsIconType, int32_t passed);
|
||||
int32_t func__guiMessageBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsDialogType, qbs *qbsIconType, int32_t nDefaultButton, int32_t passed);
|
||||
void sub__guiMessageBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsIconType, int32_t passed);
|
||||
qbs *func__guiInputBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsDefaultInput, int32_t passed);
|
||||
qbs *func__guiSelectFolderDialog(qbs *qbsTitle, qbs *qbsDefaultPath, int32_t passed);
|
||||
uint32_t func__guiColorChooserDialog(qbs *qbsTitle, uint32_t nDefaultRGB, int32_t passed);
|
||||
qbs *func__guiOpenFileDialog(qbs *qbsTitle, qbs *qbsDefaultPathAndFile, qbs *qbsFilterPatterns, qbs *qbsSingleFilterDescription, int32_t nAllowMultipleSelects,
|
||||
int32_t passed);
|
||||
qbs *func__guiSaveFileDialog(qbs *qbsTitle, qbs *qbsDefaultPathAndFile, qbs *qbsFilterPatterns, qbs *qbsSingleFilterDescription);
|
||||
|
||||
int gui_alert(const char *message, const char *title, const char *type);
|
||||
bool gui_alert(const char *fmt, ...);
|
||||
//-----------------------------------------------------------------------------------------------------
|
|
@ -42,6 +42,14 @@
|
|||
# endif
|
||||
# define IMAGE_DEBUG_CHECK(_exp_) // Don't do anything in release builds
|
||||
#endif
|
||||
|
||||
// The byte ordering here are straight from libqb.cpp. So, if libqb.cpp is wrong, then we are wrong! ;)
|
||||
#define IMAGE_GET_BGRA_RED(c) ((uint8_t)((uint32_t)(c) >> 16 & 0xFF))
|
||||
#define IMAGE_GET_BGRA_GREEN(c) ((uint8_t)((uint32_t)(c) >> 8 & 0xFF))
|
||||
#define IMAGE_GET_BGRA_BLUE(c) ((uint8_t)((uint32_t)(c) & 0xFF))
|
||||
#define IMAGE_GET_BGRA_ALPHA(c) ((uint8_t)(uint32_t(c) >> 24))
|
||||
#define IMAGE_MAKE_BGRA(r, g, b, a) \
|
||||
((uint32_t)(((uint8_t)(b) | ((uint16_t)((uint8_t)(g)) << 8)) | ((uint32_t)((uint8_t)(r)) << 16) | ((uint32_t)((uint8_t)(a)) << 24)))
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -82,7 +82,6 @@ void AudioEngineAttachCustomBackendVTables(ma_resource_manager_config *maResourc
|
|||
|
||||
// These are stuff that was not declared anywhere else
|
||||
// We will wait for Matt to cleanup the C/C++ source file and include header files that declare this stuff
|
||||
qbs *qbs_new_txt_len(const char *txt, int32 len); // Not declared in libqb.h
|
||||
int32 func_instr(int32 start, qbs *str, qbs *substr, int32 passed); // Did not find this declared anywhere
|
||||
void new_mem_lock(); // This is required for MemSound()
|
||||
void free_mem_lock(mem_lock *lock); // Same as above
|
||||
|
|
20
internal/c/parts/gui/build.mk
Normal file
20
internal/c/parts/gui/build.mk
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
TFD_SRCS := \
|
||||
tinyfiledialogs.c
|
||||
|
||||
GUI_SRCS := \
|
||||
gui.cpp
|
||||
|
||||
TFD_OBJS := $(patsubst %.c,$(PATH_INTERNAL_C)/parts/gui/%.o,$(TFD_SRCS))
|
||||
|
||||
GUI_OBJS := $(patsubst %.cpp,$(PATH_INTERNAL_C)/parts/gui/%.o,$(GUI_SRCS))
|
||||
|
||||
$(PATH_INTERNAL_C)/parts/gui/%.o: $(PATH_INTERNAL_C)/parts/gui/%.c
|
||||
$(CC) -O2 $(CFLAGS) -DDEPENDENCY_CONSOLE_ONLY -Wall $< -c -o $@
|
||||
|
||||
$(PATH_INTERNAL_C)/parts/gui/%.o: $(PATH_INTERNAL_C)/parts/gui/%.cpp
|
||||
$(CXX) -O2 $(CXXFLAGS) -DDEPENDENCY_CONSOLE_ONLY -Wall $< -c -o $@
|
||||
|
||||
EXE_LIBS += $(TFD_OBJS) $(GUI_OBJS)
|
||||
|
||||
CLEAN_LIST += $(TFD_OBJS) $(GUI_OBJS)
|
433
internal/c/parts/gui/gui.cpp
Normal file
433
internal/c/parts/gui/gui.cpp
Normal file
|
@ -0,0 +1,433 @@
|
|||
//-----------------------------------------------------------------------------------------------------
|
||||
// ___ ____ __ _ _ ____ _____ ____ _ _ ___ _ _ _
|
||||
// / _ \| __ ) / /_ | || | | _ \| ____| / ___| | | |_ _| | | (_) |__ _ __ __ _ _ __ _ _
|
||||
// | | | | _ \| '_ \| || |_| |_) | _| | | _| | | || | | | | | '_ \| '__/ _` | '__| | | |
|
||||
// | |_| | |_) | (_) |__ _| __/| |___ | |_| | |_| || | | |___| | |_) | | | (_| | | | |_| |
|
||||
// \__\_\____/ \___/ |_| |_| |_____| \____|\___/|___| |_____|_|_.__/|_| \__,_|_| \__, |
|
||||
// |___/
|
||||
// QB64-PE GUI Library
|
||||
// Powered by tinyfiledialogs (http://tinyfiledialogs.sourceforge.net)
|
||||
//
|
||||
// Copyright (c) 2022 Samuel Gomes
|
||||
// https://github.com/a740g
|
||||
//
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// HEADER FILES
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
#include "gui.h"
|
||||
// We need the IMAGE_... macros from here
|
||||
#include "image.h"
|
||||
#include "tinyfiledialogs.h"
|
||||
// The below include is a bad idea because of reasons mentioned in https://github.com/QB64-Phoenix-Edition/QB64pe/issues/172
|
||||
// However, we need a bunch of things like the 'qbs' structs and some more
|
||||
// We'll likely keep the 'include' this way because I do not want to duplicate stuff and cause issues
|
||||
// Matt is already doing work to separate and modularize libqb
|
||||
// So, this will be replaced with relevant stuff once that work is done
|
||||
#include "../../libqb.h"
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// FUNCTIONS
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
/// @brief Splits a string delimted by '|' into an array of strings
|
||||
/// @param input The string to be parsed
|
||||
/// @param count Point to an integer that will hold the count of tokens. This cannot be NULL
|
||||
/// @return Array of string tokens. This must be freed using gui_free_tokens()
|
||||
static char **gui_tokenize(const char *input, int32_t *count) {
|
||||
auto str = strdup(input);
|
||||
auto capacity = 2;
|
||||
char **result = (char **)malloc(capacity * sizeof(*result));
|
||||
char *saveptr;
|
||||
|
||||
*count = 0;
|
||||
auto tok = strtok_r(str, "|", &saveptr);
|
||||
|
||||
for (;;) {
|
||||
if (*count >= capacity)
|
||||
result = (char **)realloc(result, (capacity *= 2) * sizeof(*result));
|
||||
|
||||
result[*count] = tok ? strdup(tok) : tok;
|
||||
|
||||
if (!tok)
|
||||
break;
|
||||
|
||||
++(*count);
|
||||
|
||||
tok = strtok_r(nullptr, "|", &saveptr);
|
||||
}
|
||||
|
||||
free(str);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// @brief Frees all string and the array itself created by gui_tokenize()
|
||||
/// @param tokens Array of string pointers
|
||||
static void gui_free_tokens(char **tokens) {
|
||||
for (auto it = tokens; it && *it; ++it)
|
||||
free(*it);
|
||||
|
||||
free(tokens);
|
||||
}
|
||||
|
||||
/// @brief Shows a system notification (on Windows this will be an action center notification)
|
||||
/// @param qbsTitle [OPTIONAL] Title of the notification
|
||||
/// @param qbsMessage [OPTIONAL] The message that will be displayed
|
||||
/// @param qbsIconType [OPTIONAL] Icon type ("info" "warning" "error")
|
||||
/// @param passed How many parameters were passed?
|
||||
void sub__guiNotifyPopup(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsIconType, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aMessage = nullptr;
|
||||
static qbs *aIconType = nullptr;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aMessage)
|
||||
aMessage = qbs_new(0, 0);
|
||||
|
||||
if (!aIconType)
|
||||
aIconType = qbs_new(0, 0);
|
||||
|
||||
if (passed & 1)
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aTitle, qbs_new_txt_len("\0", 1));
|
||||
|
||||
if (passed & 2)
|
||||
qbs_set(aMessage, qbs_add(qbsMessage, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aMessage, qbs_new_txt_len("\0", 1));
|
||||
|
||||
if (passed & 4)
|
||||
qbs_set(aIconType, qbs_add(qbsIconType, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aIconType, qbs_new_txt("info")); // info if not passed
|
||||
|
||||
tinyfd_notifyPopup((const char *)aTitle->chr, (const char *)aMessage->chr, (const char *)aIconType->chr);
|
||||
}
|
||||
|
||||
/// @brief Shows a standard system message dialog box
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param qbsMessage The message that will be displayed
|
||||
/// @param qbsDialogType The dialog type ("ok" "okcancel" "yesno" "yesnocancel")
|
||||
/// @param qbsIconType The dialog icon type ("info" "warning" "error" "question")
|
||||
/// @param nDefaultButon [OPTIONAL] The default button that will be selected
|
||||
/// @param passed How many parameters were passed?
|
||||
/// @return 0 for cancel/no, 1 for ok/yes, 2 for no in yesnocancel
|
||||
int32_t func__guiMessageBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsDialogType, qbs *qbsIconType, int32_t nDefaultButton, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aMessage = nullptr;
|
||||
static qbs *aDialogType = nullptr;
|
||||
static qbs *aIconType = nullptr;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aMessage)
|
||||
aMessage = qbs_new(0, 0);
|
||||
|
||||
if (!aDialogType)
|
||||
aDialogType = qbs_new(0, 0);
|
||||
|
||||
if (!aIconType)
|
||||
aIconType = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aMessage, qbs_add(qbsMessage, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aDialogType, qbs_add(qbsDialogType, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aIconType, qbs_add(qbsIconType, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
if (!passed)
|
||||
nDefaultButton = 1; // 1 for ok/yes
|
||||
|
||||
return tinyfd_messageBox((const char *)aTitle->chr, (const char *)aMessage->chr, (const char *)aDialogType->chr, (const char *)aIconType->chr,
|
||||
nDefaultButton);
|
||||
}
|
||||
|
||||
/// @brief Shows a standard system message dialog box
|
||||
/// @param qbsTitle [OPTIONAL] Title of the dialog box
|
||||
/// @param qbsMessage [OPTIONAL] The message that will be displayed
|
||||
/// @param qbsIconType [OPTIONAL] The dialog icon type ("info" "warning" "error")
|
||||
/// @param passed How many parameters were passed?
|
||||
void sub__guiMessageBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsIconType, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aMessage = nullptr;
|
||||
static qbs *aIconType = nullptr;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aMessage)
|
||||
aMessage = qbs_new(0, 0);
|
||||
|
||||
if (!aIconType)
|
||||
aIconType = qbs_new(0, 0);
|
||||
|
||||
if (passed & 1)
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aTitle, qbs_new_txt_len("\0", 1));
|
||||
|
||||
if (passed & 2)
|
||||
qbs_set(aMessage, qbs_add(qbsMessage, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aMessage, qbs_new_txt_len("\0", 1));
|
||||
|
||||
if (passed & 4)
|
||||
qbs_set(aIconType, qbs_add(qbsIconType, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aIconType, qbs_new_txt("info")); // info if not passed
|
||||
|
||||
tinyfd_messageBox((const char *)aTitle->chr, (const char *)aMessage->chr, "ok", (const char *)aIconType->chr, 1);
|
||||
}
|
||||
|
||||
/// @brief Shows an input box for getting a string from the user
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param qbsMessage The message or prompt that will be displayed
|
||||
/// @param qbsDefaultInput [OPTIONAL] The default response that can be changed by the user
|
||||
/// @param passed How many parameters were passed?
|
||||
/// @return The user response or an empty string if the user cancelled
|
||||
qbs *func__guiInputBox(qbs *qbsTitle, qbs *qbsMessage, qbs *qbsDefaultInput, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aMessage = nullptr;
|
||||
static qbs *aDefaultInput = nullptr;
|
||||
static qbs *qbsInput;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aMessage)
|
||||
aMessage = qbs_new(0, 0);
|
||||
|
||||
if (!aDefaultInput)
|
||||
aDefaultInput = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aMessage, qbs_add(qbsMessage, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
char *sDefaultInput;
|
||||
|
||||
if (passed) {
|
||||
qbs_set(aDefaultInput, qbs_add(qbsDefaultInput, qbs_new_txt_len("\0", 1)));
|
||||
sDefaultInput =
|
||||
aDefaultInput->len == 1 ? nullptr : (char *)aDefaultInput->chr; // if string is "" then password box, else we pass the default input as is
|
||||
} else {
|
||||
qbs_set(aDefaultInput, qbs_new_txt_len("\0", 1)); // input box by default
|
||||
sDefaultInput = (char *)aDefaultInput->chr;
|
||||
}
|
||||
|
||||
auto sInput = tinyfd_inputBox((const char *)aTitle->chr, (const char *)aMessage->chr, (const char *)sDefaultInput);
|
||||
|
||||
// Create a new qbs and then copy the string to it
|
||||
qbsInput = qbs_new(sInput ? strlen(sInput) : 0, 1);
|
||||
if (qbsInput->len)
|
||||
memcpy(qbsInput->chr, sInput, qbsInput->len);
|
||||
|
||||
return qbsInput;
|
||||
}
|
||||
|
||||
/// @brief Shows the browse for folder dialog box
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param qbsDefaultPath [OPTIONAL] The default path from where to start browsing
|
||||
/// @param passed How many parameters were passed?
|
||||
/// @return The path selected by the user or an empty string if the user cancelled
|
||||
qbs *func__guiSelectFolderDialog(qbs *qbsTitle, qbs *qbsDefaultPath, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aDefaultPath = nullptr;
|
||||
static qbs *qbsFolder;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aDefaultPath)
|
||||
aDefaultPath = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
if (passed)
|
||||
qbs_set(aDefaultPath, qbs_add(qbsDefaultPath, qbs_new_txt_len("\0", 1)));
|
||||
else
|
||||
qbs_set(aDefaultPath, qbs_new_txt_len("\0", 1));
|
||||
|
||||
auto sFolder = tinyfd_selectFolderDialog((const char *)aTitle->chr, (const char *)aDefaultPath->chr);
|
||||
|
||||
// Create a new qbs and then copy the string to it
|
||||
qbsFolder = qbs_new(sFolder ? strlen(sFolder) : 0, 1);
|
||||
if (qbsFolder->chr)
|
||||
memcpy(qbsFolder->chr, sFolder, qbsFolder->len);
|
||||
|
||||
return qbsFolder;
|
||||
}
|
||||
|
||||
/// @brief Shows the color picker dialog box
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param nDefaultRGB [OPTIONAL] Default selected color
|
||||
/// @param passed How many parameters were passed?
|
||||
/// @return 0 on cancel (i.e. no color, no alpha, nothing). Else, returns color with alpha set to 255
|
||||
uint32_t func__guiColorChooserDialog(qbs *qbsTitle, uint32_t nDefaultRGB, int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
if (!passed)
|
||||
nDefaultRGB = 0;
|
||||
|
||||
// Break the color into RGB components
|
||||
uint8_t lRGB[3];
|
||||
lRGB[0] = IMAGE_GET_BGRA_RED(nDefaultRGB);
|
||||
lRGB[1] = IMAGE_GET_BGRA_GREEN(nDefaultRGB);
|
||||
lRGB[2] = IMAGE_GET_BGRA_BLUE(nDefaultRGB);
|
||||
|
||||
// On cancel, return 0 (i.e. no color, no alpha, nothing). Else, return color with alpha set to 255
|
||||
return !tinyfd_colorChooser((const char *)aTitle->chr, nullptr, lRGB, lRGB) ? 0 : IMAGE_MAKE_BGRA(lRGB[0], lRGB[1], lRGB[2], 0xFF);
|
||||
}
|
||||
|
||||
/// @brief Shows the system file open dialog box
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param qbsDefaultPathAndFile The default path (and filename) that will be pre-populated
|
||||
/// @param qbsFilterPatterns File filters separated using '|' (e.g. "*.png|*.jpg")
|
||||
/// @param qbsSingleFilterDescription Single filter description (e.g. "Image files")
|
||||
/// @param nAllowMultipleSelects [OPTIONAL] Should multiple file selection be allowed?
|
||||
/// @param passed How many parameters were passed?
|
||||
/// @return The file name (or names separated by '|' if multiselect was on) selected by the user or an empty string if the user cancelled
|
||||
qbs *func__guiOpenFileDialog(qbs *qbsTitle, qbs *qbsDefaultPathAndFile, qbs *qbsFilterPatterns, qbs *qbsSingleFilterDescription, int32_t nAllowMultipleSelects,
|
||||
int32_t passed) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aDefaultPathAndFile = nullptr;
|
||||
static qbs *aFilterPatterns = nullptr;
|
||||
static qbs *aSingleFilterDescription = nullptr;
|
||||
static qbs *qbsFileName;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aDefaultPathAndFile)
|
||||
aDefaultPathAndFile = qbs_new(0, 0);
|
||||
|
||||
if (!aFilterPatterns)
|
||||
aFilterPatterns = qbs_new(0, 0);
|
||||
|
||||
if (!aSingleFilterDescription)
|
||||
aSingleFilterDescription = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aDefaultPathAndFile, qbs_add(qbsDefaultPathAndFile, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aFilterPatterns, qbs_add(qbsFilterPatterns, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aSingleFilterDescription, qbs_add(qbsSingleFilterDescription, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
if (!passed)
|
||||
nAllowMultipleSelects = false;
|
||||
|
||||
char *sSingleFilterDescription = aSingleFilterDescription->len == 1 ? nullptr : (char *)aSingleFilterDescription->chr;
|
||||
|
||||
int32_t aNumOfFilterPatterns;
|
||||
auto psaFilterPatterns = gui_tokenize((const char *)aFilterPatterns->chr, &aNumOfFilterPatterns); // get the number of file filters & count
|
||||
|
||||
auto sFileName = tinyfd_openFileDialog((const char *)aTitle->chr, (const char *)aDefaultPathAndFile->chr, aNumOfFilterPatterns, psaFilterPatterns,
|
||||
(const char *)sSingleFilterDescription, nAllowMultipleSelects);
|
||||
|
||||
gui_free_tokens(psaFilterPatterns); // free memory used by tokenizer
|
||||
|
||||
// Create a new qbs and then copy the string to it
|
||||
qbsFileName = qbs_new(sFileName ? strlen(sFileName) : 0, 1);
|
||||
if (qbsFileName->len)
|
||||
memcpy(qbsFileName->chr, sFileName, qbsFileName->len);
|
||||
|
||||
return qbsFileName;
|
||||
}
|
||||
|
||||
/// @brief Shows the system file save dialog box
|
||||
/// @param qbsTitle Title of the dialog box
|
||||
/// @param qbsDefaultPathAndFile The default path (and filename) that will be pre-populated
|
||||
/// @param qbsFilterPatterns File filters separated using '|' (e.g. "*.png|*.jpg")
|
||||
/// @param qbsSingleFilterDescription Single filter description (e.g. "Image files")
|
||||
/// @return The file name selected by the user or an empty string if the user cancelled
|
||||
qbs *func__guiSaveFileDialog(qbs *qbsTitle, qbs *qbsDefaultPathAndFile, qbs *qbsFilterPatterns, qbs *qbsSingleFilterDescription) {
|
||||
static qbs *aTitle = nullptr;
|
||||
static qbs *aDefaultPathAndFile = nullptr;
|
||||
static qbs *aFilterPatterns = nullptr;
|
||||
static qbs *aSingleFilterDescription = nullptr;
|
||||
static qbs *qbsFileName;
|
||||
|
||||
if (!aTitle)
|
||||
aTitle = qbs_new(0, 0);
|
||||
|
||||
if (!aDefaultPathAndFile)
|
||||
aDefaultPathAndFile = qbs_new(0, 0);
|
||||
|
||||
if (!aFilterPatterns)
|
||||
aFilterPatterns = qbs_new(0, 0);
|
||||
|
||||
if (!aSingleFilterDescription)
|
||||
aSingleFilterDescription = qbs_new(0, 0);
|
||||
|
||||
qbs_set(aTitle, qbs_add(qbsTitle, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aDefaultPathAndFile, qbs_add(qbsDefaultPathAndFile, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aFilterPatterns, qbs_add(qbsFilterPatterns, qbs_new_txt_len("\0", 1)));
|
||||
qbs_set(aSingleFilterDescription, qbs_add(qbsSingleFilterDescription, qbs_new_txt_len("\0", 1)));
|
||||
|
||||
char *sSingleFilterDescription = aSingleFilterDescription->len == 1 ? nullptr : (char *)aSingleFilterDescription->chr;
|
||||
|
||||
int32_t aNumOfFilterPatterns;
|
||||
auto psaFilterPatterns = gui_tokenize((const char *)aFilterPatterns->chr, &aNumOfFilterPatterns); // get the number of file filters & count
|
||||
|
||||
auto sFileName = tinyfd_saveFileDialog((const char *)aTitle->chr, (const char *)aDefaultPathAndFile->chr, aNumOfFilterPatterns, psaFilterPatterns,
|
||||
(const char *)sSingleFilterDescription);
|
||||
|
||||
gui_free_tokens(psaFilterPatterns); // free memory used by tokenizer
|
||||
|
||||
// Create a new qbs and then copy the string to it
|
||||
qbsFileName = qbs_new(sFileName ? strlen(sFileName) : 0, 1);
|
||||
if (qbsFileName->len)
|
||||
memcpy(qbsFileName->chr, sFileName, qbsFileName->len);
|
||||
|
||||
return qbsFileName;
|
||||
}
|
||||
|
||||
/// @brief This is used internally by libqb to show warning and failure messages
|
||||
/// @param message The message the will show inside the dialog box
|
||||
/// @param title The dialog box title
|
||||
/// @param type The type of dialog box (see tinyfd_messageBox)
|
||||
/// @return returns the value retured by tinyfd_messageBox
|
||||
int gui_alert(const char *message, const char *title, const char *type) { return tinyfd_messageBox(title, message, type, "error", 1); }
|
||||
|
||||
/// @brief This is used internally by libqb to show warning and failure messages
|
||||
/// @param fmt A string that contains a printf style format
|
||||
/// @param ... Additional arguments
|
||||
/// @return true if successful, false otherwise
|
||||
bool gui_alert(const char *fmt, ...) {
|
||||
if (!fmt)
|
||||
return false;
|
||||
|
||||
size_t l = strlen(fmt) * 2 + UCHAR_MAX;
|
||||
|
||||
char *buf = (char *)malloc(l);
|
||||
if (!buf)
|
||||
return false;
|
||||
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
if (vsnprintf(buf, l, fmt, args) < 0) {
|
||||
va_end(args);
|
||||
free(buf);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
va_end(args);
|
||||
|
||||
gui_alert(buf, "Alert", "ok");
|
||||
|
||||
free(buf);
|
||||
|
||||
return true;
|
||||
}
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------------------------------
|
7737
internal/c/parts/gui/tinyfiledialogs.c
Normal file
7737
internal/c/parts/gui/tinyfiledialogs.c
Normal file
File diff suppressed because it is too large
Load diff
303
internal/c/parts/gui/tinyfiledialogs.h
Normal file
303
internal/c/parts/gui/tinyfiledialogs.h
Normal file
|
@ -0,0 +1,303 @@
|
|||
/* If you are using a C++ compiler to compile tinyfiledialogs.c (maybe renamed with an extension ".cpp")
|
||||
then comment out << extern "C" >> bellow in this header file) */
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.h v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique header file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
________________________________________________________________________________
|
||||
| ____________________________________________________________________________ |
|
||||
| | | |
|
||||
| | on windows: | |
|
||||
| | - for UTF-16, use the wchar_t functions at the bottom of the header file | |
|
||||
| | - _wfopen() requires wchar_t | |
|
||||
| | | |
|
||||
| | - in tinyfiledialogs, char is UTF-8 by default (since v3.6) | |
|
||||
| | - but fopen() expects MBCS (not UTF-8) | |
|
||||
| | - if you want char to be MBCS: set tinyfd_winUtf8 to 0 | |
|
||||
| | | |
|
||||
| | - alternatively, tinyfiledialogs provides | |
|
||||
| | functions to convert between UTF-8, UTF-16 and MBCS | |
|
||||
| |____________________________________________________________________________| |
|
||||
|________________________________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef TINYFILEDIALOGS_H
|
||||
#define TINYFILEDIALOGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* if tinydialogs.c is compiled as C++ code rather than C code, you may need to comment this out
|
||||
and the corresponding closing bracket near the end of this file. */
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/******************************************************************************************************/
|
||||
/**************************************** UTF-8 on Windows ********************************************/
|
||||
/******************************************************************************************************/
|
||||
#ifdef _WIN32
|
||||
/* On windows, if you want to use UTF-8 ( instead of the UTF-16/wchar_t functions at the end of this file )
|
||||
Make sure your code is really prepared for UTF-8 (on windows, functions like fopen() expect MBCS and not UTF-8) */
|
||||
extern int tinyfd_winUtf8; /* on windows char strings can be 1:UTF-8(default) or 0:MBCS */
|
||||
/* for MBCS change this to 0, in tinyfiledialogs.c or in your code */
|
||||
|
||||
/* Here are some functions to help you convert between UTF-16 UTF-8 MBSC */
|
||||
char * tinyfd_utf8toMbcs(char const * aUtf8string);
|
||||
char * tinyfd_utf16toMbcs(wchar_t const * aUtf16string);
|
||||
wchar_t * tinyfd_mbcsTo16(char const * aMbcsString);
|
||||
char * tinyfd_mbcsTo8(char const * aMbcsString);
|
||||
wchar_t * tinyfd_utf8to16(char const * aUtf8string);
|
||||
char * tinyfd_utf16to8(wchar_t const * aUtf16string);
|
||||
#endif
|
||||
/******************************************************************************************************/
|
||||
/******************************************************************************************************/
|
||||
/******************************************************************************************************/
|
||||
|
||||
/************* 3 funtions for C# (you don't need this in C or C++) : */
|
||||
char const * tinyfd_getGlobalChar(char const * aCharVariableName); /* returns NULL on error */
|
||||
int tinyfd_getGlobalInt(char const * aIntVariableName); /* returns -1 on error */
|
||||
int tinyfd_setGlobalInt(char const * aIntVariableName, int aValue); /* returns -1 on error */
|
||||
/* aCharVariableName: "tinyfd_version" "tinyfd_needs" "tinyfd_response"
|
||||
aIntVariableName : "tinyfd_verbose" "tinyfd_silent" "tinyfd_allowCursesDialogs"
|
||||
"tinyfd_forceConsole" "tinyfd_assumeGraphicDisplay" "tinyfd_winUtf8"
|
||||
**************/
|
||||
|
||||
|
||||
extern char tinyfd_version[8]; /* contains tinyfd current version number */
|
||||
extern char tinyfd_needs[]; /* info about requirements */
|
||||
extern int tinyfd_verbose; /* 0 (default) or 1 : on unix, prints the command line calls */
|
||||
extern int tinyfd_silent; /* 1 (default) or 0 : on unix, hide errors and warnings from called dialogs */
|
||||
|
||||
/* Curses dialogs are difficult to use, on windows they are only ascii and uses the unix backslah */
|
||||
extern int tinyfd_allowCursesDialogs; /* 0 (default) or 1 */
|
||||
|
||||
extern int tinyfd_forceConsole; /* 0 (default) or 1 */
|
||||
/* for unix & windows: 0 (graphic mode) or 1 (console mode).
|
||||
0: try to use a graphic solution, if it fails then it uses console mode.
|
||||
1: forces all dialogs into console mode even when an X server is present,
|
||||
it can use the package dialog or dialog.exe.
|
||||
on windows it only make sense for console applications */
|
||||
|
||||
extern int tinyfd_assumeGraphicDisplay; /* 0 (default) or 1 */
|
||||
/* some systems don't set the environment variable DISPLAY even when a graphic display is present.
|
||||
set this to 1 to tell tinyfiledialogs to assume the existence of a graphic display */
|
||||
|
||||
extern char tinyfd_response[1024];
|
||||
/* if you pass "tinyfd_query" as aTitle,
|
||||
the functions will not display the dialogs
|
||||
but will return 0 for console mode, 1 for graphic mode.
|
||||
tinyfd_response is then filled with the retain solution.
|
||||
possible values for tinyfd_response are (all lowercase)
|
||||
for graphic mode:
|
||||
windows_wchar windows applescript kdialog zenity zenity3 matedialog
|
||||
shellementary qarma yad python2-tkinter python3-tkinter python-dbus
|
||||
perl-dbus gxmessage gmessage xmessage xdialog gdialog
|
||||
for console mode:
|
||||
dialog whiptail basicinput no_solution */
|
||||
|
||||
void tinyfd_beep(void);
|
||||
|
||||
int tinyfd_notifyPopup(
|
||||
char const * aTitle, /* NULL or "" */
|
||||
char const * aMessage, /* NULL or "" may contain \n \t */
|
||||
char const * aIconType); /* "info" "warning" "error" */
|
||||
/* return has only meaning for tinyfd_query */
|
||||
|
||||
int tinyfd_messageBox(
|
||||
char const * aTitle , /* NULL or "" */
|
||||
char const * aMessage , /* NULL or "" may contain \n \t */
|
||||
char const * aDialogType , /* "ok" "okcancel" "yesno" "yesnocancel" */
|
||||
char const * aIconType , /* "info" "warning" "error" "question" */
|
||||
int aDefaultButton ) ;
|
||||
/* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */
|
||||
|
||||
char * tinyfd_inputBox(
|
||||
char const * aTitle , /* NULL or "" */
|
||||
char const * aMessage , /* NULL or "" (\n and \t have no effect) */
|
||||
char const * aDefaultInput ) ; /* NULL passwordBox, "" inputbox */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
char * tinyfd_saveFileDialog(
|
||||
char const * aTitle , /* NULL or "" */
|
||||
char const * aDefaultPathAndFile , /* NULL or "" */
|
||||
int aNumOfFilterPatterns , /* 0 (1 in the following example) */
|
||||
char const * const * aFilterPatterns , /* NULL or char const * lFilterPatterns[1]={"*.txt"} */
|
||||
char const * aSingleFilterDescription ) ; /* NULL or "text files" */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
char * tinyfd_openFileDialog(
|
||||
char const * aTitle, /* NULL or "" */
|
||||
char const * aDefaultPathAndFile, /* NULL or "" */
|
||||
int aNumOfFilterPatterns , /* 0 (2 in the following example) */
|
||||
char const * const * aFilterPatterns, /* NULL or char const * lFilterPatterns[2]={"*.png","*.jpg"}; */
|
||||
char const * aSingleFilterDescription, /* NULL or "image files" */
|
||||
int aAllowMultipleSelects ) ; /* 0 or 1 */
|
||||
/* in case of multiple files, the separator is | */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
char * tinyfd_selectFolderDialog(
|
||||
char const * aTitle, /* NULL or "" */
|
||||
char const * aDefaultPath); /* NULL or "" */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
char * tinyfd_colorChooser(
|
||||
char const * aTitle, /* NULL or "" */
|
||||
char const * aDefaultHexRGB, /* NULL or "#FF0000" */
|
||||
unsigned char const aDefaultRGB[3] , /* unsigned char lDefaultRGB[3] = { 0 , 128 , 255 }; */
|
||||
unsigned char aoResultRGB[3] ) ; /* unsigned char lResultRGB[3]; */
|
||||
/* returns the hexcolor as a string "#FF0000" */
|
||||
/* aoResultRGB also contains the result */
|
||||
/* aDefaultRGB is used only if aDefaultHexRGB is NULL */
|
||||
/* aDefaultRGB and aoResultRGB can be the same array */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
|
||||
/************ WINDOWS ONLY SECTION ************************/
|
||||
#ifdef _WIN32
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
int tinyfd_notifyPopupW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aMessage, /* NULL or L"" may contain \n \t */
|
||||
wchar_t const * aIconType); /* L"info" L"warning" L"error" */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
int tinyfd_messageBoxW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aMessage, /* NULL or L"" may contain \n \t */
|
||||
wchar_t const * aDialogType, /* L"ok" L"okcancel" L"yesno" */
|
||||
wchar_t const * aIconType, /* L"info" L"warning" L"error" L"question" */
|
||||
int aDefaultButton ); /* 0 for cancel/no , 1 for ok/yes */
|
||||
/* returns 0 for cancel/no , 1 for ok/yes */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
wchar_t * tinyfd_inputBoxW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aMessage, /* NULL or L"" (\n nor \t not respected) */
|
||||
wchar_t const * aDefaultInput); /* NULL passwordBox, L"" inputbox */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
wchar_t * tinyfd_saveFileDialogW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aDefaultPathAndFile, /* NULL or L"" */
|
||||
int aNumOfFilterPatterns, /* 0 (1 in the following example) */
|
||||
wchar_t const * const * aFilterPatterns, /* NULL or wchar_t const * lFilterPatterns[1]={L"*.txt"} */
|
||||
wchar_t const * aSingleFilterDescription); /* NULL or L"text files" */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
wchar_t * tinyfd_openFileDialogW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aDefaultPathAndFile, /* NULL or L"" */
|
||||
int aNumOfFilterPatterns , /* 0 (2 in the following example) */
|
||||
wchar_t const * const * aFilterPatterns, /* NULL or wchar_t const * lFilterPatterns[2]={L"*.png","*.jpg"} */
|
||||
wchar_t const * aSingleFilterDescription, /* NULL or L"image files" */
|
||||
int aAllowMultipleSelects ) ; /* 0 or 1 */
|
||||
/* in case of multiple files, the separator is | */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
wchar_t * tinyfd_selectFolderDialogW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aDefaultPath); /* NULL or L"" */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
/* windows only - utf-16 version */
|
||||
wchar_t * tinyfd_colorChooserW(
|
||||
wchar_t const * aTitle, /* NULL or L"" */
|
||||
wchar_t const * aDefaultHexRGB, /* NULL or L"#FF0000" */
|
||||
unsigned char const aDefaultRGB[3], /* unsigned char lDefaultRGB[3] = { 0 , 128 , 255 }; */
|
||||
unsigned char aoResultRGB[3]); /* unsigned char lResultRGB[3]; */
|
||||
/* returns the hexcolor as a string L"#FF0000" */
|
||||
/* aoResultRGB also contains the result */
|
||||
/* aDefaultRGB is used only if aDefaultHexRGB is NULL */
|
||||
/* aDefaultRGB and aoResultRGB can be the same array */
|
||||
/* returns NULL on cancel */
|
||||
|
||||
#endif /*_WIN32 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /* TINYFILEDIALOGS_H */
|
||||
|
||||
/*
|
||||
________________________________________________________________________________
|
||||
| ____________________________________________________________________________ |
|
||||
| | | |
|
||||
| | on windows: | |
|
||||
| | - for UTF-16, use the wchar_t functions at the bottom of the header file | |
|
||||
| | - _wfopen() requires wchar_t | |
|
||||
| | | |
|
||||
| | - in tinyfiledialogs, char is UTF-8 by default (since v3.6) | |
|
||||
| | - but fopen() expects MBCS (not UTF-8) | |
|
||||
| | - if you want char to be MBCS: set tinyfd_winUtf8 to 0 | |
|
||||
| | | |
|
||||
| | - alternatively, tinyfiledialogs provides | |
|
||||
| | functions to convert between UTF-8, UTF-16 and MBCS | |
|
||||
| |____________________________________________________________________________| |
|
||||
|________________________________________________________________________________|
|
||||
|
||||
- This is not for ios nor android (it works in termux though).
|
||||
- The files can be renamed with extension ".cpp" as the code is 100% compatible C C++
|
||||
(just comment out << extern "C" >> in the header file)
|
||||
- Windows is fully supported from XP to 10 (maybe even older versions)
|
||||
- C# & LUA via dll, see files in the folder EXTRAS
|
||||
- OSX supported from 10.4 to latest (maybe even older versions)
|
||||
- Do not use " and ' as the dialogs will be displayed with a warning
|
||||
instead of the title, message, etc...
|
||||
- There's one file filter only, it may contain several patterns.
|
||||
- If no filter description is provided,
|
||||
the list of patterns will become the description.
|
||||
- On windows link against Comdlg32.lib and Ole32.lib
|
||||
(on windows the no linking claim is a lie)
|
||||
- On unix: it tries command line calls, so no such need (NO LINKING).
|
||||
- On unix you need one of the following:
|
||||
applescript, kdialog, zenity, matedialog, shellementary, qarma, yad,
|
||||
python (2 or 3)/tkinter/python-dbus (optional), Xdialog
|
||||
or curses dialogs (opens terminal if running without console).
|
||||
- One of those is already included on most (if not all) desktops.
|
||||
- In the absence of those it will use gdialog, gxmessage or whiptail
|
||||
with a textinputbox. If nothing is found, it switches to basic console input,
|
||||
it opens a console if needed (requires xterm + bash).
|
||||
- for curses dialogs you must set tinyfd_allowCursesDialogs=1
|
||||
- You can query the type of dialog that will be used (pass "tinyfd_query" as aTitle)
|
||||
- String memory is preallocated statically for all the returned values.
|
||||
- File and path names are tested before return, they should be valid.
|
||||
- tinyfd_forceConsole=1; at run time, forces dialogs into console mode.
|
||||
- On windows, console mode only make sense for console applications.
|
||||
- On windows, console mode is not implemented for wchar_T UTF-16.
|
||||
- Mutiple selects are not possible in console mode.
|
||||
- The package dialog must be installed to run in curses dialogs in console mode.
|
||||
It is already installed on most unix systems.
|
||||
- On osx, the package dialog can be installed via
|
||||
http://macappstore.org/dialog or http://macports.org
|
||||
- On windows, for curses dialogs console mode,
|
||||
dialog.exe should be copied somewhere on your executable path.
|
||||
It can be found at the bottom of the following page:
|
||||
http://andrear.altervista.org/home/cdialog.php
|
||||
*/
|
|
@ -29,7 +29,7 @@
|
|||
// We'll likely keep the 'include' this way because I do not want to duplicate stuff and cause issues
|
||||
// Matt is already doing work to separate and modularize libqb
|
||||
// So, this will be replaced with relevant stuff once that work is done
|
||||
#include "../../libqb.h"
|
||||
#include "../../../libqb.h"
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
@ -42,12 +42,6 @@
|
|||
//-----------------------------------------------------------------------------------------------------
|
||||
// MACROS
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// The byte ordering here are straight from libqb.cpp. So, if libqb.cpp is wrong, then we are wrong! ;)
|
||||
#define IMAGE_GET_BGRA_RED(c) (uint32_t(c) >> 16 & 0xFF)
|
||||
#define IMAGE_GET_BGRA_GREEN(c) (uint32_t(c) >> 8 & 0xFF)
|
||||
#define IMAGE_GET_BGRA_BLUE(c) (uint32_t(c) & 0xFF)
|
||||
#define IMAGE_GET_BGRA_ALPHA(c) (uint32_t(c) >> 24)
|
||||
#define IMAGE_MAKE_BGRA(r, g, b, a) (uint32_t((uint8_t(b) | (uint16_t(uint8_t(g)) << 8)) | (uint32_t(uint8_t(r)) << 16) | (uint32_t(uint8_t(a)) << 24)))
|
||||
// Calculates the RGB distance in the RGB color cube
|
||||
#define IMAGE_CALCULATE_RGB_DISTANCE(r1, g1, b1, r2, g2, b2) \
|
||||
sqrt(((float(r2) - float(r1)) * (float(r2) - float(r1))) + ((float(g2) - float(g1)) * (float(g2) - float(g1))) + \
|
||||
|
@ -64,7 +58,6 @@
|
|||
// FORWARD DECLARATIONS
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// These should be replaced with appropriate header files when Matt finishes cleaning up libqb
|
||||
qbs *qbs_new_txt_len(const char *, int32); // Not declared in libqb.h
|
||||
void sub__freeimage(int32, int32); // Not declared in libqb.h
|
||||
|
||||
extern img_struct *img; // Required by func__loadimage
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "common.h"
|
||||
#include "audio.h"
|
||||
#include "gui.h"
|
||||
|
||||
extern int32 func__cinp(int32 toggle,
|
||||
int32 passed); // Console INP scan code reader
|
||||
|
|
|
@ -91,6 +91,14 @@ These are used if you make use of MIDI support.
|
|||
| TinySoundFont | MIT | license_tinysoundfont.txt | internal/c/parts/audio/extras/tinysoundfont/tsf.h
|
||||
| TinyMidiLoader | ZLIB | license_tinymidiloader.txt | internal/c/parts/audio/extras/tinysoundfont.tml.h |
|
||||
|
||||
## Common Dialogs Support
|
||||
|
||||
This is used by libqb to show alerts and also by the common dialog functions and subroutines.
|
||||
|
||||
| Library | License | License file | Location |
|
||||
| :------ | :-----: | :----------- | :------- |
|
||||
| tiny file dialogs | ZLIB | license_tinyfiledialogs.txt | internal/c/parts/gui
|
||||
|
||||
## Legacy OpenAL audio backend
|
||||
|
||||
The below licenses apply when making use of the legacy OpenAL audio backend (can be enabled in `Compiler Settings`). These replace all other sound related libraries:
|
||||
|
|
47
licenses/license_tinyfiledialogs.txt
Normal file
47
licenses/license_tinyfiledialogs.txt
Normal file
|
@ -0,0 +1,47 @@
|
|||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
|
@ -1970,7 +1970,7 @@ id.args = 2
|
|||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER)
|
||||
id.specialformat = "?[,?]"
|
||||
id.ret = ULONGTYPE - ISPOINTER
|
||||
id.hr_syntax = "_SNDOPEN(fileName$)"
|
||||
id.hr_syntax = "_SNDOPEN(fileName$[, capabilities$])"
|
||||
regid
|
||||
|
||||
clearid
|
||||
|
@ -3866,3 +3866,95 @@ id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
|||
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||
id.hr_syntax = "_TOGGLEBIT(numericalVariable, numericalValue)"
|
||||
regid
|
||||
|
||||
' a740g: Common dialog support using tiny file dialogs
|
||||
clearid
|
||||
id.n = qb64prefix$ + "NotifyPopup" ' Name in CaMeL case
|
||||
id.subfunc = 2 ' 1 = function, 2 = sub
|
||||
id.callname = "sub__guiNotifyPopup" ' C/C++ function name
|
||||
id.args = 3 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "[?][,[?][,?]]" ' special format (optional in [])
|
||||
id.hr_syntax = "_NOTIFYPOPUP [title$][, message$][, iconType$]" ' syntax help
|
||||
|
||||
regid
|
||||
clearid
|
||||
id.n = qb64prefix$ + "MessageBox" ' Name in CaMeL case
|
||||
id.subfunc = 2 ' 1 = function, 2 = sub
|
||||
id.callname = "sub__guiMessageBox" ' C/C++ function name
|
||||
id.args = 3 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "[?][,[?][,?]]" ' special format (optional in [])
|
||||
id.hr_syntax = "_MESSAGEBOX [title$][, message$][, iconType$]" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "SelectFolderDialog" ' Name in CaMeL case
|
||||
id.musthave = "$"
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiSelectFolderDialog" ' C/C++ function name
|
||||
id.args = 2 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "?[,?]" ' special format (optional in [])
|
||||
id.ret = STRINGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_SELECTFOLDERDIALOG$(title$[, defaultPath$])" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "ColorChooserDialog" ' Name in CaMeL case
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiColorChooserDialog" ' C/C++ function name
|
||||
id.args = 2 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "?[,?]" ' special format (optional in [])
|
||||
id.ret = LONGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_COLORCHOOSERDIALOG&(title$[, defaultRGB&])" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "MessageBox" ' Name in CaMeL case
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiMessageBox" ' C/C++ function name
|
||||
id.args = 5 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "?,?,?,?[,?]" ' special format (optional in [])
|
||||
id.ret = LONGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_MESSAGEBOX&(title$, message$, dialogType$, iconType$[, defaultButton&])" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "InputBox" ' Name in CaMeL case
|
||||
id.musthave = "$"
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiInputBox" ' C/C++ function name
|
||||
id.args = 3 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "?,?[,?]" ' special format (optional in [])
|
||||
id.ret = STRINGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_INPUTBOX$(title$, message$[, defaultInput$])" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "OpenFileDialog" ' Name in CaMeL case
|
||||
id.musthave = "$"
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiOpenFileDialog" ' C/C++ function name
|
||||
id.args = 5 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) ' arguments & types
|
||||
id.specialformat = "?,?,?,?[,?]" ' special format (optional in [])
|
||||
id.ret = STRINGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_OPENFILEDIALOG$(title$, defaultPathAndFile$, filterPatterns$, singleFilterDescription$[, allowMultipleSelects&])" ' syntax help
|
||||
regid
|
||||
|
||||
clearid
|
||||
id.n = qb64prefix$ + "SaveFileDialog" ' Name in CaMeL case
|
||||
id.musthave = "$"
|
||||
id.subfunc = 1 ' 1 = function, 2 = sub
|
||||
id.callname = "func__guiSaveFileDialog" ' C/C++ function name
|
||||
id.args = 4 ' number of arguments - "passed"
|
||||
id.arg = MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) + MKL$(STRINGTYPE - ISPOINTER) ' arguments & types
|
||||
id.ret = STRINGTYPE - ISPOINTER ' return type for functions
|
||||
id.hr_syntax = "_SAVEFILEDIALOG$(title$, defaultPathAndFile$, filterPatterns$, singleFilterDescription$)" ' syntax help
|
||||
regid
|
||||
' a740g: Common dialog support using tiny file dialogs
|
||||
|
||||
|
|
|
@ -5,4 +5,5 @@ listOfKeywords$ = listOfKeywords$ + "_GLCOPYTEXSUBIMAGE2D@_GLCULLFACE@_GLDELETEL
|
|||
listOfKeywords$ = listOfKeywords$ + "_GLPOPATTRIB@_GLPOPCLIENTATTRIB@_GLPOPMATRIX@_GLPOPNAME@_GLPRIORITIZETEXTURES@_GLPUSHATTRIB@_GLPUSHCLIENTATTRIB@_GLPUSHMATRIX@_GLPUSHNAME@_GLRASTERPOS2D@_GLRASTERPOS2DV@_GLRASTERPOS2F@_GLRASTERPOS2FV@_GLRASTERPOS2I@_GLRASTERPOS2IV@_GLRASTERPOS2S@_GLRASTERPOS2SV@_GLRASTERPOS3D@_GLRASTERPOS3DV@_GLRASTERPOS3F@_GLRASTERPOS3FV@_GLRASTERPOS3I@_GLRASTERPOS3IV@_GLRASTERPOS3S@_GLRASTERPOS3SV@_GLRASTERPOS4D@_GLRASTERPOS4DV@_GLRASTERPOS4F@_GLRASTERPOS4FV@_GLRASTERPOS4I@_GLRASTERPOS4IV@_GLRASTERPOS4S@_GLRASTERPOS4SV@_GLREADBUFFER@_GLREADPIXELS@_GLRECTD@_GLRECTDV@_GLRECTF@_GLRECTFV@_GLRECTI@_GLRECTIV@_GLRECTS@_GLRECTSV@_GLRENDERMODE@_GLROTATED@_GLROTATEF@_GLSCALED@_GLSCALEF@_GLSCISSOR@_GLSELECTBUFFER@_GLSHADEMODEL@_GLSTENCILFUNC@_GLSTENCILMASK@_GLSTENCILOP@_GLTEXCOORD1D@_GLTEXCOORD1DV@_GLTEXCOORD1F@_GLTEXCOORD1FV@_GLTEXCOORD1I@_GLTEXCOORD1IV@_GLTEXCOORD1S@_GLTEXCOORD1SV@_GLTEXCOORD2D@_GLTEXCOORD2DV@_GLTEXCOORD2F@_GLTEXCOORD2FV@_GLTEXCOORD2I@_GLTEXCOORD2IV@_GLTEXCOORD2S@_GLTEXCOORD2SV@_GLTEXCOORD3D@_GLTEXCOORD3DV@_GLTEXCOORD3F@_GLTEXCOORD3FV@_GLTEXCOORD3I@_GLTEXCOORD3IV@_GLTEXCOORD3S@_GLTEXCOORD3SV@_GLTEXCOORD4D@_GLTEXCOORD4DV@_GLTEXCOORD4F@_GLTEXCOORD4FV@_GLTEXCOORD4I@_GLTEXCOORD4IV@_GLTEXCOORD4S@_GLTEXCOORD4SV@_GLTEXCOORDPOINTER@_GLTEXENVF@_GLTEXENVFV@_GLTEXENVI@_GLTEXENVIV@_GLTEXGEND@_GLTEXGENDV@_GLTEXGENF@_GLTEXGENFV@_GLTEXGENI@_GLTEXGENIV@_GLTEXIMAGE1D@_GLTEXIMAGE2D@_GLTEXPARAMETERF@_GLTEXPARAMETERFV@_GLTEXPARAMETERI@_GLTEXPARAMETERIV@_GLTEXSUBIMAGE1D@_GLTEXSUBIMAGE2D@_GLTRANSLATED@_GLTRANSLATEF@_GLVERTEX2D@_GLVERTEX2DV@_GLVERTEX2F@_GLVERTEX2FV@_GLVERTEX2I@_GLVERTEX2IV@_GLVERTEX2S@_GLVERTEX2SV@_GLVERTEX3D@_GLVERTEX3DV@_GLVERTEX3F@_GLVERTEX3FV@_GLVERTEX3I@_GLVERTEX3IV@_GLVERTEX3S@_GLVERTEX3SV@_GLVERTEX4D@_GLVERTEX4DV@_GLVERTEX4F@_GLVERTEX4FV@_GLVERTEX4I@_GLVERTEX4IV@_GLVERTEX4S@_GLVERTEX4SV@_GLVERTEXPOINTER@_GLVIEWPORT@SMOOTH@STRETCH@_ANTICLOCKWISE@_BEHIND@_CLEAR@_FILLBACKGROUND@_GLUPERSPECTIVE@_HARDWARE@_HARDWARE1@_KEEPBACKGROUND@_NONE@_OFF@_ONLY@_ONLYBACKGROUND@_ONTOP@_SEAMLESS@_SMOOTH@_SMOOTHSHRUNK@_SMOOTHSTRETCHED@"
|
||||
listOfKeywords$ = listOfKeywords$ + "_SOFTWARE@_SQUAREPIXELS@_STRETCH@_ALLOWFULLSCREEN@_ALL@_ECHO@_INSTRREV@_TRIM$@_ACCEPTFILEDROP@_FINISHDROP@_TOTALDROPPEDFILES@_DROPPEDFILE@_DROPPEDFILE$@_SHR@_SHL@_ROR@_ROL@" ' a740g: added ROR & ROL
|
||||
listOfKeywords$ = listOfKeywords$ + "_DEFLATE$@_INFLATE$@_READBIT@_RESETBIT@_SETBIT@_TOGGLEBIT@$ASSERTS@_ASSERT@_CAPSLOCK@_NUMLOCK@_SCROLLLOCK@_TOGGLE@_CONSOLEFONT@_CONSOLECURSOR@_CONSOLEINPUT@_CINP@$NOPREFIX@$COLOR@$DEBUG@_ENVIRONCOUNT@$UNSTABLE@$MIDISOUNDFONT@"
|
||||
listOfKeywords$ = listOfKeywords$ + "_NOTIFYPOPUP@_MESSAGEBOX@_INPUTBOX$@_SELECTFOLDERDIALOG$@_COLORCHOOSERDIALOG@_OPENFILEDIALOG$@_SAVEFILEDIALOG$@" ' a740g: added common dialog keywords
|
||||
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of FreeGLUT:
|
||||
|
||||
Freeglut Copyright
|
||||
|
|
|
@ -9,3 +9,50 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of FreeGLUT:
|
||||
|
||||
Freeglut Copyright
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of FreeType:
|
||||
|
||||
The FreeType Project LICENSE
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of FreeType:
|
||||
|
||||
The FreeType Project LICENSE
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of FreeType:
|
||||
|
||||
The FreeType Project LICENSE
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of PCX Image Loader:
|
||||
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of PCX Image Loader:
|
||||
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of PCX Image Loader:
|
||||
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of zlib:
|
||||
|
||||
* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of zlib:
|
||||
|
||||
* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of zlib:
|
||||
|
||||
* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
|
@ -10,6 +10,53 @@ The above copyright notice and this permission notice shall be included in all c
|
|||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
License of tiny file dialogs
|
||||
|
||||
/*_________
|
||||
/ \ tinyfiledialogs.c v3.8.8 [Apr 22, 2021] zlib licence
|
||||
|tiny file| Unique code file created [November 9, 2014]
|
||||
| dialogs | Copyright (c) 2014 - 2021 Guillaume Vareille http://ysengrin.com
|
||||
\____ ___/ http://tinyfiledialogs.sourceforge.net
|
||||
\| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd
|
||||
____________________________________________
|
||||
| |
|
||||
| email: tinyfiledialogs at ysengrin.com |
|
||||
|____________________________________________|
|
||||
_________________________________________________________________________________
|
||||
| |
|
||||
| the windows only wchar_t UTF-16 prototypes are at the bottom of the header file |
|
||||
|_________________________________________________________________________________|
|
||||
_________________________________________________________
|
||||
| |
|
||||
| on windows: - since v3.6 char is UTF-8 by default |
|
||||
| - if you want MBCS set tinyfd_winUtf8 to 0 |
|
||||
| - functions like fopen expect MBCS |
|
||||
|_________________________________________________________|
|
||||
|
||||
If you like tinyfiledialogs, please upvote my stackoverflow answer
|
||||
https://stackoverflow.com/a/47651444
|
||||
|
||||
- License -
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
-----------
|
||||
|
||||
Thanks for contributions, bug corrections & thorough testing to:
|
||||
- Don Heyse http://ldglite.sf.net for bug corrections & thorough testing!
|
||||
- Paul Rouget
|
||||
*/
|
||||
--------------------------------------------------------------------------------
|
||||
License of Miniaudio:
|
||||
|
||||
This software is available as a choice of the following licenses. Choose
|
||||
|
|
Loading…
Reference in a new issue