more fuller suite of error mutes for vs2022
This commit is contained in:
parent
bde66f13a5
commit
6f976ae0ce
11 changed files with 186 additions and 41 deletions
|
|
@ -330,11 +330,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows" OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")
|
||||||
USE_GDI
|
USE_GDI
|
||||||
)
|
)
|
||||||
list(APPEND LIBRARIES gdi32 ole32 winmm uuid)
|
list(APPEND LIBRARIES gdi32 ole32 winmm uuid)
|
||||||
|
if(NOT MSVC)
|
||||||
target_link_options(
|
target_link_options(
|
||||||
Mw
|
Mw
|
||||||
PRIVATE
|
PRIVATE
|
||||||
-static-libgcc
|
-static-libgcc
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
# target_sources(
|
# target_sources(
|
||||||
# Mw
|
# Mw
|
||||||
|
|
|
||||||
|
|
@ -19,15 +19,18 @@ typedef struct dir {
|
||||||
|
|
||||||
void* MwDirectoryOpen(const char* path) {
|
void* MwDirectoryOpen(const char* path) {
|
||||||
dir_t* dir = malloc(sizeof(*dir));
|
dir_t* dir = malloc(sizeof(*dir));
|
||||||
#ifdef _WIN32
|
if(!dir) {
|
||||||
char* p = malloc(strlen(path) + 2 + 1);
|
printf("Out Of Memory\n");
|
||||||
strcpy(p, path);
|
return NULL;
|
||||||
if(strchr(path, '/') != NULL) {
|
|
||||||
strcat(p, "/");
|
|
||||||
} else {
|
|
||||||
strcat(p, "\\");
|
|
||||||
}
|
}
|
||||||
strcat(p, "*");
|
#ifdef _WIN32
|
||||||
|
char* p = MwStringDuplicate(path);
|
||||||
|
if(strchr(path, '/') != NULL) {
|
||||||
|
MwStringConcat(p, "/");
|
||||||
|
} else {
|
||||||
|
MwStringConcat(p, "\\");
|
||||||
|
}
|
||||||
|
MwStringConcat(p, "*");
|
||||||
if((dir->hFind = FindFirstFile(p, &dir->ffd)) == INVALID_HANDLE_VALUE) {
|
if((dir->hFind = FindFirstFile(p, &dir->ffd)) == INVALID_HANDLE_VALUE) {
|
||||||
free(p);
|
free(p);
|
||||||
free(dir);
|
free(dir);
|
||||||
|
|
@ -65,6 +68,10 @@ void MwDirectoryClose(void* handle) {
|
||||||
MwDirectoryEntry* MwDirectoryRead(void* handle) {
|
MwDirectoryEntry* MwDirectoryRead(void* handle) {
|
||||||
dir_t* dir = handle;
|
dir_t* dir = handle;
|
||||||
MwDirectoryEntry* entry = malloc(sizeof(*entry));
|
MwDirectoryEntry* entry = malloc(sizeof(*entry));
|
||||||
|
if(!entry) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ULARGE_INTEGER* l;
|
ULARGE_INTEGER* l;
|
||||||
|
|
||||||
|
|
@ -170,8 +177,8 @@ static void MwDirectoryJoinSingle(char* target, char* p) {
|
||||||
b[0] = DIRSEP;
|
b[0] = DIRSEP;
|
||||||
b[1] = 0;
|
b[1] = 0;
|
||||||
|
|
||||||
strcat(target, b);
|
MwStringConcat(target, b);
|
||||||
strcat(target, p);
|
MwStringConcat(target, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = strlen(target) - 1; i >= 0; i--) {
|
for(i = strlen(target) - 1; i >= 0; i--) {
|
||||||
|
|
@ -187,17 +194,16 @@ static void MwDirectoryJoinSingle(char* target, char* p) {
|
||||||
b[0] = DIRSEP;
|
b[0] = DIRSEP;
|
||||||
b[1] = 0;
|
b[1] = 0;
|
||||||
|
|
||||||
strcat(target, b);
|
MwStringConcat(target, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char* MwDirectoryJoin(char* a, char* b) {
|
char* MwDirectoryJoin(char* a, char* b) {
|
||||||
char* p = malloc(strlen(a) + 1 + strlen(b) + 1);
|
char* p = MwStringDuplicate(a);
|
||||||
char* bdup = MwStringDuplicate(b);
|
char* bdup = MwStringDuplicate(b);
|
||||||
char* b2 = bdup;
|
char* b2 = bdup;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
strcpy(p, a);
|
|
||||||
for(i = strlen(p) - 1; i >= 0; i--) {
|
for(i = strlen(p) - 1; i >= 0; i--) {
|
||||||
if(p[i] == DIRSEP) {
|
if(p[i] == DIRSEP) {
|
||||||
p[i] = 0;
|
p[i] = 0;
|
||||||
|
|
|
||||||
|
|
@ -397,6 +397,11 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
||||||
userdata_t* u = malloc(sizeof(*u));
|
userdata_t* u = malloc(sizeof(*u));
|
||||||
WNDCLASSEX wc;
|
WNDCLASSEX wc;
|
||||||
|
|
||||||
|
if(!r || !u) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
memset(&wc, 0, sizeof(wc));
|
memset(&wc, 0, sizeof(wc));
|
||||||
wc.cbSize = sizeof(WNDCLASSEX);
|
wc.cbSize = sizeof(WNDCLASSEX);
|
||||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||||
|
|
@ -482,6 +487,11 @@ static void MwLLPolygonImpl(MwLL handle, MwPoint* points, int points_count, MwLL
|
||||||
HPEN pen = CreatePen(PS_NULL, 0, RGB(0, 0, 0));
|
HPEN pen = CreatePen(PS_NULL, 0, RGB(0, 0, 0));
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if(!p) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for(i = 0; i < points_count; i++) {
|
for(i = 0; i < points_count; i++) {
|
||||||
p[i].x = points[i].x;
|
p[i].x = points[i].x;
|
||||||
p[i].y = points[i].y;
|
p[i].y = points[i].y;
|
||||||
|
|
@ -516,6 +526,11 @@ static void MwLLLineImpl(MwLL handle, MwPoint* points, MwLLColor color) {
|
||||||
static MwLLColor MwLLAllocColorImpl(MwLL handle, int r, int g, int b) {
|
static MwLLColor MwLLAllocColorImpl(MwLL handle, int r, int g, int b) {
|
||||||
MwLLColor c = malloc(sizeof(*c));
|
MwLLColor c = malloc(sizeof(*c));
|
||||||
|
|
||||||
|
if(!c) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
c->gdi.brush = NULL;
|
c->gdi.brush = NULL;
|
||||||
|
|
||||||
MwLLColorUpdate(handle, c, r, g, b);
|
MwLLColorUpdate(handle, c, r, g, b);
|
||||||
|
|
@ -593,10 +608,20 @@ static void MwLLNextEventImpl(MwLL handle) {
|
||||||
if(handle->gdi.get_clipboard) {
|
if(handle->gdi.get_clipboard) {
|
||||||
HGLOBAL hg;
|
HGLOBAL hg;
|
||||||
if(OpenClipboard(handle->gdi.hWnd) != 0 && (hg = GetClipboardData(CF_TEXT)) != NULL) {
|
if(OpenClipboard(handle->gdi.hWnd) != 0 && (hg = GetClipboardData(CF_TEXT)) != NULL) {
|
||||||
char* txt = malloc(GlobalSize(hg));
|
int sz = GlobalSize(hg);
|
||||||
|
char* txt = malloc(sz);
|
||||||
char* clp = GlobalLock(hg);
|
char* clp = GlobalLock(hg);
|
||||||
|
|
||||||
|
if(!txt || !clp) {
|
||||||
|
printf("Out of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
strcpy_s(txt, sz, clp);
|
||||||
|
#else
|
||||||
strcpy(txt, clp);
|
strcpy(txt, clp);
|
||||||
|
#endif
|
||||||
|
|
||||||
GlobalUnlock(hg);
|
GlobalUnlock(hg);
|
||||||
CloseClipboard();
|
CloseClipboard();
|
||||||
|
|
@ -626,7 +651,17 @@ static MwLLPixmap MwLLCreatePixmapImpl(MwLL handle, unsigned char* data, int wid
|
||||||
HDC dc = GetDC(handle->gdi.hWnd);
|
HDC dc = GetDC(handle->gdi.hWnd);
|
||||||
BITMAPINFOHEADER bmih;
|
BITMAPINFOHEADER bmih;
|
||||||
|
|
||||||
|
if(!r) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
r->common.raw = malloc(width * height * 4);
|
r->common.raw = malloc(width * height * 4);
|
||||||
|
if(!r->common.raw) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(r->common.raw, data, 4 * width * height);
|
memcpy(r->common.raw, data, 4 * width * height);
|
||||||
|
|
||||||
r->common.width = width;
|
r->common.width = width;
|
||||||
|
|
@ -666,6 +701,12 @@ static void MwLLPixmapUpdateImpl(MwLLPixmap r) {
|
||||||
|
|
||||||
words = malloc(w * r->common.height);
|
words = malloc(w * r->common.height);
|
||||||
words2 = malloc(w * r->common.height);
|
words2 = malloc(w * r->common.height);
|
||||||
|
|
||||||
|
if(!words || !words2) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
memset(words, 0, w * r->common.height);
|
memset(words, 0, w * r->common.height);
|
||||||
memset(words2, 0, w * r->common.height);
|
memset(words2, 0, w * r->common.height);
|
||||||
for(y = 0; y < r->common.height; y++) {
|
for(y = 0; y < r->common.height; y++) {
|
||||||
|
|
@ -917,12 +958,30 @@ static void MwLLSetClipboardImpl(MwLL handle, const char* text, int clipboard_ty
|
||||||
(void)clipboard_type;
|
(void)clipboard_type;
|
||||||
if(OpenClipboard(handle->gdi.hWnd) != 0) {
|
if(OpenClipboard(handle->gdi.hWnd) != 0) {
|
||||||
char* lock;
|
char* lock;
|
||||||
|
int sz = strlen(text) + 1;
|
||||||
|
|
||||||
EmptyClipboard();
|
EmptyClipboard();
|
||||||
hg = GlobalAlloc(GHND | GMEM_SHARE, strlen(text) + 1);
|
hg = GlobalAlloc(GHND | GMEM_SHARE, sz);
|
||||||
|
|
||||||
|
if(!hg) {
|
||||||
|
printf("Out of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
lock = GlobalLock(hg);
|
lock = GlobalLock(hg);
|
||||||
|
|
||||||
|
if(!lock) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
GlobalUnlock(hg);
|
||||||
|
CloseClipboard();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
strcpy_s(lock, sz, text);
|
||||||
|
#else
|
||||||
strcpy(lock, text);
|
strcpy(lock, text);
|
||||||
|
#endif
|
||||||
GlobalUnlock(hg);
|
GlobalUnlock(hg);
|
||||||
|
|
||||||
SetClipboardData(CF_TEXT, hg);
|
SetClipboardData(CF_TEXT, hg);
|
||||||
|
|
|
||||||
|
|
@ -110,9 +110,9 @@ static void color_picker_image_update(color_picker_t* picker) {
|
||||||
picker->color_picker_image_data[i + 2] = 0;
|
picker->color_picker_image_data[i + 2] = 0;
|
||||||
picker->color_picker_image_data[i + 3] = 0;
|
picker->color_picker_image_data[i + 3] = 0;
|
||||||
} else if(dist >= 180.) {
|
} else if(dist >= 180.) {
|
||||||
picker->color_picker_image_data[i] = dist;
|
picker->color_picker_image_data[i] = (unsigned char)dist;
|
||||||
picker->color_picker_image_data[i + 1] = dist;
|
picker->color_picker_image_data[i + 1] = (unsigned char)dist;
|
||||||
picker->color_picker_image_data[i + 2] = dist;
|
picker->color_picker_image_data[i + 2] = (unsigned char)dist;
|
||||||
picker->color_picker_image_data[i + 3] = 255;
|
picker->color_picker_image_data[i + 3] = 255;
|
||||||
} else {
|
} else {
|
||||||
MwHSV hsv_v;
|
MwHSV hsv_v;
|
||||||
|
|
@ -121,26 +121,26 @@ static void color_picker_image_update(color_picker_t* picker) {
|
||||||
double xd = (M_PI / 180.) * ((double)_x);
|
double xd = (M_PI / 180.) * ((double)_x);
|
||||||
double yd = (M_PI / 180.) * ((double)_y);
|
double yd = (M_PI / 180.) * ((double)_y);
|
||||||
|
|
||||||
float angle = atan2(yd, xd) - M_PI;
|
double angle = atan2(yd, xd) - M_PI;
|
||||||
float hue = (angle * 180.) / M_PI;
|
double hue = (angle * 180.) / M_PI;
|
||||||
|
|
||||||
if(hue < 0.0) {
|
if(hue < 0.0) {
|
||||||
hue += 360;
|
hue += 360;
|
||||||
}
|
}
|
||||||
hsv_v.h = (hue) * (HSV_HUE_STEPS / 360.);
|
hsv_v.h = (MwU8)((hue) * (HSV_HUE_STEPS / 360.));
|
||||||
hsv_v.s = (dist) * (HSV_SAT_MAX / 180.);
|
hsv_v.s = (MwU8)((dist) * (HSV_SAT_MAX / 180.));
|
||||||
picker->hue_table[n] = hsv_v;
|
picker->hue_table[n] = hsv_v;
|
||||||
picker->hue_table[n].generated = 1;
|
picker->hue_table[n].generated = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
hsv_v = picker->hue_table[n];
|
hsv_v = picker->hue_table[n];
|
||||||
hsv_v.v = HSV_VAL_MAX - (picker->value * HSV_VAL_MAX);
|
hsv_v.v = (MwU8)(HSV_VAL_MAX - (picker->value * HSV_VAL_MAX));
|
||||||
|
|
||||||
hsv2rgb(hsv_v.h, hsv_v.s, hsv_v.v, &color.red, &color.green, &color.blue);
|
hsv2rgb(hsv_v.h, hsv_v.s, hsv_v.v, &color.red, &color.green, &color.blue);
|
||||||
|
|
||||||
picker->color_picker_image_data[i] = color.red;
|
picker->color_picker_image_data[i] = (unsigned char)color.red;
|
||||||
picker->color_picker_image_data[i + 1] = color.green;
|
picker->color_picker_image_data[i + 1] = (unsigned char)color.green;
|
||||||
picker->color_picker_image_data[i + 2] = color.blue;
|
picker->color_picker_image_data[i + 2] = (unsigned char)color.blue;
|
||||||
|
|
||||||
picker->color_picker_image_data[i + 3] = 255;
|
picker->color_picker_image_data[i + 3] = 255;
|
||||||
n++;
|
n++;
|
||||||
|
|
|
||||||
51
src/string.c
51
src/string.c
|
|
@ -1,21 +1,53 @@
|
||||||
#include <Mw/Milsko.h>
|
#include <Mw/Milsko.h>
|
||||||
|
|
||||||
char* MwStringDuplicate(const char* str) {
|
char* MwStringDuplicate(const char* str) {
|
||||||
char* r = malloc(strlen(str) + 1);
|
int sz = strlen(str) + 1;
|
||||||
|
char* r = malloc(sz);
|
||||||
|
if(!r) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
strcpy_s(r, sz, str);
|
||||||
|
#else
|
||||||
strcpy(r, str);
|
strcpy(r, str);
|
||||||
|
#endif
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* MwStringConcat(const char* str1, const char* str2) {
|
char* MwStringConcat(const char* str1, const char* str2) {
|
||||||
char* r = malloc(strlen(str1) + strlen(str2) + 1);
|
int sz = strlen(str1) + strlen(str2) + 1;
|
||||||
|
char* r = malloc(sz);
|
||||||
|
if(!r) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
strcpy_s(r, sz, str1);
|
||||||
|
strcat_s(r, sz, str2);
|
||||||
|
#else
|
||||||
strcpy(r, str1);
|
strcpy(r, str1);
|
||||||
strcat(r, str2);
|
strcat(r, str2);
|
||||||
|
#endif
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MwStringSize(char* out, MwOffset size) {
|
void MwStringSize(char* out, MwOffset size) {
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
if(size / 1024 == 0) {
|
||||||
|
sprintf_s(out, 255, "%d", (int)size);
|
||||||
|
} else if(size / 1024 / 1024 == 0) {
|
||||||
|
sprintf_s(out, 255, "%.1fK", (double)size / 1024);
|
||||||
|
} else if(size / 1024 / 1024 / 1024 == 0) {
|
||||||
|
sprintf_s(out, 255, "%.1fM", (double)size / 1024 / 1024);
|
||||||
|
} else {
|
||||||
|
sprintf_s(out, 255, "%.1fG", (double)size / 1024 / 1024 / 1024);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if(size / 1024 == 0) {
|
if(size / 1024 == 0) {
|
||||||
sprintf(out, "%d", (int)size);
|
sprintf(out, "%d", (int)size);
|
||||||
} else if(size / 1024 / 1024 == 0) {
|
} else if(size / 1024 / 1024 == 0) {
|
||||||
|
|
@ -25,16 +57,28 @@ void MwStringSize(char* out, MwOffset size) {
|
||||||
} else {
|
} else {
|
||||||
sprintf(out, "%.1fG", (double)size / 1024 / 1024 / 1024);
|
sprintf(out, "%.1fG", (double)size / 1024 / 1024 / 1024);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void MwStringTime(char* out, time_t t) {
|
void MwStringTime(char* out, time_t t) {
|
||||||
struct tm* tm = localtime(&t);
|
struct tm* tm = localtime(&t);
|
||||||
const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(tm == NULL) {
|
if(tm == NULL) {
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
sprintf_s(out, 255, "localtime error");
|
||||||
|
#else
|
||||||
sprintf(out, "localtime error");
|
sprintf(out, "localtime error");
|
||||||
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
sprintf_s(out, 255, "%s %2d %02d:%02d %d", months[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, 1900 + tm->tm_year);
|
||||||
|
#else
|
||||||
sprintf(out, "%s %2d %02d:%02d %d", months[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, 1900 + tm->tm_year);
|
sprintf(out, "%s %2d %02d:%02d %d", months[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, 1900 + tm->tm_year);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void MwStringPrintIntoBuffer(char* out, MwU32 size, const char* fmt, ...) {
|
void MwStringPrintIntoBuffer(char* out, MwU32 size, const char* fmt, ...) {
|
||||||
|
|
@ -43,6 +87,9 @@ void MwStringPrintIntoBuffer(char* out, MwU32 size, const char* fmt, ...) {
|
||||||
|
|
||||||
#if __STDC_VERSION__ >= 199901L
|
#if __STDC_VERSION__ >= 199901L
|
||||||
vsnprintf(out, size, fmt, va);
|
vsnprintf(out, size, fmt, va);
|
||||||
|
/* MSVC2022 reports the STDC_VERSION as fucking 1994. Thanks Bill Gates. */
|
||||||
|
#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
vsprintf_s(out, size, fmt, va);
|
||||||
#else
|
#else
|
||||||
vsprintf(out, fmt, va);
|
vsprintf(out, fmt, va);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -88,9 +88,9 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
|
||||||
|
|
||||||
if(c != NULL) {
|
if(c != NULL) {
|
||||||
fadedColor = MwLLAllocColor(handle->lowlevel, color->common.red, color->common.blue, color->common.green);
|
fadedColor = MwLLAllocColor(handle->lowlevel, color->common.red, color->common.blue, color->common.green);
|
||||||
fadedColor->common.red = fadedColor->common.red + (c->common.red - fadedColor->common.red) * 0.5;
|
fadedColor->common.red = (MwU8)(fadedColor->common.red + (c->common.red - fadedColor->common.red) * 0.5);
|
||||||
fadedColor->common.green = fadedColor->common.green + (c->common.green - fadedColor->common.green) * 0.5;
|
fadedColor->common.green = (MwU8)(fadedColor->common.green + (c->common.green - fadedColor->common.green) * 0.5);
|
||||||
fadedColor->common.blue = fadedColor->common.blue + (c->common.blue - fadedColor->common.blue) * 0.5;
|
fadedColor->common.blue = (MwU8)(fadedColor->common.blue + (c->common.blue - fadedColor->common.blue) * 0.5);
|
||||||
MwLLColorUpdate(handle->lowlevel, fadedColor, fadedColor->common.red, fadedColor->common.green, fadedColor->common.blue);
|
MwLLColorUpdate(handle->lowlevel, fadedColor, fadedColor->common.red, fadedColor->common.green, fadedColor->common.blue);
|
||||||
|
|
||||||
MwLLFreeColor(c);
|
MwLLFreeColor(c);
|
||||||
|
|
@ -110,6 +110,11 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
|
||||||
char* line = malloc(input - last + 1);
|
char* line = malloc(input - last + 1);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if(!line) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(line, last, input - last);
|
memcpy(line, last, input - last);
|
||||||
|
|
||||||
line[input - last] = 0;
|
line[input - last] = 0;
|
||||||
|
|
@ -177,6 +182,11 @@ int MwTextWidth(MwWidget handle, MwFLFont ttf, const char* text) {
|
||||||
char* line = malloc(input - last + 1);
|
char* line = malloc(input - last + 1);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if(!line) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(line, last, input - last);
|
memcpy(line, last, input - last);
|
||||||
|
|
||||||
line[input - last] = 0;
|
line[input - last] = 0;
|
||||||
|
|
@ -250,6 +260,11 @@ static void bitmap_MwDrawText(MwWidget handle, MwPoint* point, const char* text,
|
||||||
th = MwTextHeight(handle, NULL, text);
|
th = MwTextHeight(handle, NULL, text);
|
||||||
px = malloc(tw * th * 4);
|
px = malloc(tw * th * 4);
|
||||||
|
|
||||||
|
if(!px) {
|
||||||
|
printf("Out of Memory\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
memset(px, 0, tw * th * 4);
|
memset(px, 0, tw * th * 4);
|
||||||
|
|
||||||
sx = 0;
|
sx = 0;
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,11 @@ static void draw(MwWidget handle) {
|
||||||
double sh = (double)oh / px->common.height;
|
double sh = (double)oh / px->common.height;
|
||||||
|
|
||||||
if(sw < sh) {
|
if(sw < sh) {
|
||||||
r.width = px->common.width * sw;
|
r.width = (int)(px->common.width * sw);
|
||||||
r.height = px->common.height * sw;
|
r.height = (int)(px->common.height * sw);
|
||||||
} else {
|
} else {
|
||||||
r.width = px->common.width * sh;
|
r.width = (int)(px->common.width * sh);
|
||||||
r.height = px->common.height * sh;
|
r.height = (int)(px->common.height * sh);
|
||||||
}
|
}
|
||||||
r.width -= MwGetInteger(handle, MwNpadding) * 2;
|
r.width -= MwGetInteger(handle, MwNpadding) * 2;
|
||||||
r.height -= MwGetInteger(handle, MwNpadding) * 2;
|
r.height -= MwGetInteger(handle, MwNpadding) * 2;
|
||||||
|
|
@ -68,8 +68,8 @@ static void draw(MwWidget handle) {
|
||||||
r.height = px->common.height;
|
r.height = px->common.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.x += (double)(ow - r.width) / 2;
|
r.x += (int)((double)(ow - r.width) / 2);
|
||||||
r.y += (double)(oh - r.height) / 2;
|
r.y += (int)((double)(oh - r.height) / 2);
|
||||||
|
|
||||||
MwLLDrawPixmap(handle->lowlevel, &r, px);
|
MwLLDrawPixmap(handle->lowlevel, &r, px);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -203,11 +203,16 @@ static void frame_draw(MwWidget handle) {
|
||||||
int seek = 0;
|
int seek = 0;
|
||||||
int l = 0;
|
int l = 0;
|
||||||
char* old = str;
|
char* old = str;
|
||||||
|
int sz = strlen(old) + 5;
|
||||||
|
|
||||||
if(ind < 0) ind = 0;
|
if(ind < 0) ind = 0;
|
||||||
|
|
||||||
str = malloc(strlen(old) + 5);
|
str = malloc(sz);
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
strcpy_s(str, sz, old);
|
||||||
|
#else
|
||||||
strcpy(str, old);
|
strcpy(str, old);
|
||||||
|
#endif
|
||||||
free(old);
|
free(old);
|
||||||
|
|
||||||
while(str[seek] != 0) {
|
while(str[seek] != 0) {
|
||||||
|
|
@ -317,6 +322,11 @@ static void resize(MwWidget handle, int no_resize) {
|
||||||
|
|
||||||
static int wcreate(MwWidget handle) {
|
static int wcreate(MwWidget handle) {
|
||||||
MwListBox lb = malloc(sizeof(*lb));
|
MwListBox lb = malloc(sizeof(*lb));
|
||||||
|
if(!lb) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
memset(lb, 0, sizeof(*lb));
|
memset(lb, 0, sizeof(*lb));
|
||||||
|
|
||||||
handle->internal = lb;
|
handle->internal = lb;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ static void draw(MwWidget handle) {
|
||||||
r.width -= MwDefaultBorderWidth(handle) * 2;
|
r.width -= MwDefaultBorderWidth(handle) * 2;
|
||||||
r.height -= MwDefaultBorderWidth(handle) * 2;
|
r.height -= MwDefaultBorderWidth(handle) * 2;
|
||||||
|
|
||||||
r.width = r.width * w;
|
r.width = (int)(r.width * w);
|
||||||
MwDrawRect(handle, &r, fill);
|
MwDrawRect(handle, &r, fill);
|
||||||
|
|
||||||
MwLLFreeColor(fill);
|
MwLLFreeColor(fill);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ static int calc_length(MwWidget handle) {
|
||||||
int area = MwGetInteger(handle, MwNareaShown);
|
int area = MwGetInteger(handle, MwNareaShown);
|
||||||
if(area > len) area = len;
|
if(area > len) area = len;
|
||||||
|
|
||||||
return max * (double)area / len;
|
return (int)(max * (double)area / len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int calc_position(MwWidget handle) {
|
static int calc_position(MwWidget handle) {
|
||||||
|
|
@ -36,7 +36,7 @@ static int calc_position(MwWidget handle) {
|
||||||
int len = MwGetInteger(handle, MwNmaxValue) - MwGetInteger(handle, MwNminValue);
|
int len = MwGetInteger(handle, MwNmaxValue) - MwGetInteger(handle, MwNminValue);
|
||||||
int val = MwGetInteger(handle, MwNvalue);
|
int val = MwGetInteger(handle, MwNvalue);
|
||||||
|
|
||||||
return (max - calc_length(handle)) * (double)val / len;
|
return (int)((max - calc_length(handle)) * (double)val / len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_value(MwWidget handle, int mul) {
|
static void add_value(MwWidget handle, int mul) {
|
||||||
|
|
@ -54,7 +54,7 @@ static void add_value(MwWidget handle, int mul) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw(MwWidget handle) {
|
static void draw(MwWidget handle) {
|
||||||
MwRect r, rt, rbar;
|
MwRect r = {0}, rt = {0}, rbar = {0};
|
||||||
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||||
MwLLColor dark = MwLightenColor(handle, base, -64, -64, -64);
|
MwLLColor dark = MwLightenColor(handle, base, -64, -64, -64);
|
||||||
MwScrollBar scr = handle->internal;
|
MwScrollBar scr = handle->internal;
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,12 @@ static void resize(MwWidget handle) {
|
||||||
|
|
||||||
static int wcreate(MwWidget handle) {
|
static int wcreate(MwWidget handle) {
|
||||||
MwViewport vp = malloc(sizeof(*vp));
|
MwViewport vp = malloc(sizeof(*vp));
|
||||||
|
|
||||||
|
if(!vp) {
|
||||||
|
printf("Out Of Memory\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
memset(vp, 0, sizeof(*vp));
|
memset(vp, 0, sizeof(*vp));
|
||||||
|
|
||||||
handle->internal = vp;
|
handle->internal = vp;
|
||||||
|
|
@ -151,7 +157,7 @@ static void tick(MwWidget handle) {
|
||||||
v = MwGetInteger(vp->vscroll, MwNvalue);
|
v = MwGetInteger(vp->vscroll, MwNvalue);
|
||||||
mv = MwGetInteger(vp->vscroll, MwNmaxValue);
|
mv = MwGetInteger(vp->vscroll, MwNmaxValue);
|
||||||
l = MwGetInteger(vp->frame, MwNheight);
|
l = MwGetInteger(vp->frame, MwNheight);
|
||||||
v = (mv - l) * (double)v / mv;
|
v = (int)((mv - l) * (double)v / mv);
|
||||||
|
|
||||||
if(v < 0) v = 0;
|
if(v < 0) v = 0;
|
||||||
MwVaApply(vp->inframe,
|
MwVaApply(vp->inframe,
|
||||||
|
|
@ -166,7 +172,7 @@ static void tick(MwWidget handle) {
|
||||||
v = MwGetInteger(vp->hscroll, MwNvalue);
|
v = MwGetInteger(vp->hscroll, MwNvalue);
|
||||||
mv = MwGetInteger(vp->hscroll, MwNmaxValue);
|
mv = MwGetInteger(vp->hscroll, MwNmaxValue);
|
||||||
l = MwGetInteger(vp->frame, MwNwidth);
|
l = MwGetInteger(vp->frame, MwNwidth);
|
||||||
v = (mv - l) * (double)v / mv;
|
v = (int)((mv - l) * (double)v / mv);
|
||||||
|
|
||||||
if(v < 0) v = 0;
|
if(v < 0) v = 0;
|
||||||
MwVaApply(vp->inframe,
|
MwVaApply(vp->inframe,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue