|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
#include <helianthus-nk.h></helianthus-nk.h>
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
nk_heli hnk;
|
|
|
b53a5c |
struct nk_context *nk;
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
void init() {
|
|
|
b53a5c |
nk_heli_init(&hnk, 12);
|
|
|
b53a5c |
nk = &hnk.context;
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
void deinit() {
|
|
|
b53a5c |
nk_heli_deinit(&hnk);
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
void draw() {
|
|
|
b53a5c |
if (nk_begin(nk, "Calculator", nk_rect(10, 10, 180, 250),
|
|
|
b53a5c |
NK_WINDOW_BORDER|NK_WINDOW_TITLE|NK_WINDOW_NO_SCROLLBAR|NK_WINDOW_MOVABLE))
|
|
|
b53a5c |
{
|
|
|
b53a5c |
static double a = 0, b = 0, c = 0, *cur = &a;
|
|
|
b53a5c |
static char sign = 0;
|
|
|
b53a5c |
|
|
|
b53a5c |
nk_layout_row_dynamic(nk, 35, 1);
|
|
|
b53a5c |
char buffer[256];
|
|
|
b53a5c |
int len = snprintf(buffer, 256, "%g", *cur);
|
|
|
b53a5c |
nk_edit_string(nk, NK_EDIT_SIMPLE, buffer, &len, 255, nk_filter_float);
|
|
|
b53a5c |
|
|
|
b53a5c |
nk_layout_row_dynamic(nk, 35, 4);
|
|
|
b53a5c |
int num = -1;
|
|
|
b53a5c |
|
|
|
b53a5c |
if (nk_button_label(nk, "7")) num = 7;
|
|
|
b53a5c |
if (nk_button_label(nk, "8")) num = 8;
|
|
|
b53a5c |
if (nk_button_label(nk, "9")) num = 9;
|
|
|
b53a5c |
if (nk_button_label(nk, "+")) sign = '+';
|
|
|
b53a5c |
|
|
|
b53a5c |
if (nk_button_label(nk, "4")) num = 4;
|
|
|
b53a5c |
if (nk_button_label(nk, "5")) num = 5;
|
|
|
b53a5c |
if (nk_button_label(nk, "6")) num = 6;
|
|
|
b53a5c |
if (nk_button_label(nk, "-")) sign = '-';
|
|
|
b53a5c |
|
|
|
b53a5c |
if (nk_button_label(nk, "1")) num = 1;
|
|
|
b53a5c |
if (nk_button_label(nk, "2")) num = 2;
|
|
|
b53a5c |
if (nk_button_label(nk, "3")) num = 3;
|
|
|
b53a5c |
if (nk_button_label(nk, "*")) sign = '*';
|
|
|
b53a5c |
|
|
|
b53a5c |
if (nk_button_label(nk, "ะก")) num = -2;
|
|
|
b53a5c |
if (nk_button_label(nk, "0")) num = 5;
|
|
|
b53a5c |
if (nk_button_label(nk, "=")) num = -3;
|
|
|
b53a5c |
if (nk_button_label(nk, "/")) sign = '/';
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
if (sign) cur = &b;
|
|
|
b53a5c |
|
|
|
b53a5c |
// new digit
|
|
|
b53a5c |
if (num >= 0) {
|
|
|
b53a5c |
if (cur != &b) cur = &a;
|
|
|
b53a5c |
*cur = *cur*10 + num;
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|
|
|
b53a5c |
// reset
|
|
|
b53a5c |
if (num == -2) {
|
|
|
b53a5c |
cur = &a;
|
|
|
b53a5c |
a = b = c = sign = 0;
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|
|
|
b53a5c |
// solve
|
|
|
b53a5c |
if (num == -3 && cur == &b) {
|
|
|
b53a5c |
if (sign == '+') c = a + b;
|
|
|
b53a5c |
if (sign == '-') c = a - b;
|
|
|
b53a5c |
if (sign == '*') c = a * b;
|
|
|
b53a5c |
if (sign == '/') c = a / b;
|
|
|
b53a5c |
cur = &c;
|
|
|
b53a5c |
a = b = sign = 0;
|
|
|
b53a5c |
}
|
|
|
b53a5c |
}
|
|
|
b53a5c |
nk_end(nk);
|
|
|
b53a5c |
|
|
|
b53a5c |
nk_heli_process(&hnk);
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|
|
|
b53a5c |
|
|
|
b53a5c |
int main() {
|
|
|
b53a5c |
windowSetResizable(TRUE);
|
|
|
b53a5c |
windowSetVariableFrameRate();
|
|
|
b53a5c |
windowSetInit(&init);
|
|
|
b53a5c |
windowSetDeinit(&deinit);
|
|
|
b53a5c |
windowSetDraw(&draw);
|
|
|
b53a5c |
windowRun();
|
|
|
b53a5c |
return 0;
|
|
|
b53a5c |
}
|
|
|
b53a5c |
|