Add scrollbar and image objects, cropping, layout properties
This commit is contained in:
55
src/k3menu.h
55
src/k3menu.h
@@ -21,7 +21,8 @@ struct k3MObj;
|
||||
#define k3M_EVENT_COMPLETE 10
|
||||
#define k3M_EVENT_MEASURE 11
|
||||
#define k3M_EVENT_ARRANGE 12
|
||||
#define k3M_EVENT_ALL 13
|
||||
#define k3M_EVENT_POST_ARRANGE 13
|
||||
#define k3M_EVENT_ALL 14
|
||||
|
||||
#define k3M_MOUSE_BUTTON_0 0
|
||||
#define k3M_MOUSE_BUTTON_1 1
|
||||
@@ -31,11 +32,18 @@ struct k3MObj;
|
||||
#define k3M_EVENTKIND_CAPTURE 1
|
||||
#define k3M_EVENTKIND_BUBBLE 2
|
||||
|
||||
#define k3M_USERDATA_SIZE 16
|
||||
#define k3M_USERDATA_SIZE 32
|
||||
|
||||
#define k3M_ALIGN_LEFT 0
|
||||
#define k3M_ALIGN_TOP 3
|
||||
#define k3M_ALIGN_CENTER 1
|
||||
#define k3M_ALIGN_RIGHT 2
|
||||
#define k3M_ALIGN_BOTTOM 4
|
||||
|
||||
#define k3M_IDX_TOP 0
|
||||
#define k3M_IDX_RIGHT 1
|
||||
#define k3M_IDX_BOTTOM 2
|
||||
#define k3M_IDX_LEFT 3
|
||||
|
||||
#ifdef k3M_FIXED_POINT
|
||||
typedef uint8_t k3MCC;
|
||||
@@ -43,6 +51,11 @@ typedef uint8_t k3MCC;
|
||||
typedef float k3MCC;
|
||||
#endif
|
||||
|
||||
#define k3M_UNIT_ABSOLUTE 0
|
||||
#define k3M_UNIT_PROPORTION 1
|
||||
|
||||
#include"k3menu_internal.h"
|
||||
|
||||
struct k3MEvent {
|
||||
uint16_t code;
|
||||
|
||||
@@ -76,16 +89,28 @@ typedef struct k3MEventHandler {
|
||||
|
||||
enum k3MPropertyType {
|
||||
k3M_PROP_BG_COLOR,
|
||||
k3M_PROP_FG_COLOR,
|
||||
k3M_PROP_BORDER_RADIUS,
|
||||
k3M_PROP_MARGIN,
|
||||
k3M_PROP_PADDING,
|
||||
k3M_PROP_HORIZONTAL_ALIGNMENT,
|
||||
k3M_PROP_VERTICAL_ALIGNMENT,
|
||||
k3M_PROP_LEFT,
|
||||
k3M_PROP_TOP,
|
||||
k3M_PROP_WIDTH,
|
||||
k3M_PROP_HEIGHT,
|
||||
k3M_PROP_FONT_SIZE,
|
||||
k3M_PROP_SCROLL_ANYWHERE,
|
||||
k3M_PROP_SCROLLBAR_SIZE,
|
||||
};
|
||||
struct k3MProperty {
|
||||
enum k3MPropertyType type;
|
||||
uint8_t units[4];
|
||||
union {
|
||||
intmax_t si[4];
|
||||
void *ptr;
|
||||
void *ptr[4];
|
||||
uint8_t buf[32];
|
||||
float f[4];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -103,7 +128,7 @@ struct k3MObj {
|
||||
int16_t wDesired;
|
||||
int16_t hDesired;
|
||||
|
||||
bool invisible, hovered, disabled;
|
||||
bool invisible, hovered, disabled, crop;
|
||||
|
||||
k3MEventHandler *handlers;
|
||||
size_t handlerCount;
|
||||
@@ -150,6 +175,8 @@ struct k3MScreen {
|
||||
|
||||
struct k3MObj *keyboardFocus;
|
||||
struct k3MObj *lastHover;
|
||||
|
||||
struct k3MObj *mouseCapture;
|
||||
};
|
||||
struct k3MScreen *k3MScreen();
|
||||
|
||||
@@ -173,3 +200,23 @@ struct k3MTextInput {
|
||||
char *txt;
|
||||
};
|
||||
struct k3MTextInput *k3MTextInput(struct k3Font *font, float sz, const char *placeholder, const char *txt);
|
||||
|
||||
struct k3MImage {
|
||||
struct k3MObj;
|
||||
|
||||
k3MImageData data;
|
||||
};
|
||||
struct k3MImage *k3MImage(k3MImageData);
|
||||
|
||||
struct k3MScrollbox {
|
||||
struct k3MObj;
|
||||
|
||||
int mouseHeld;
|
||||
int16_t mouseX;
|
||||
int16_t mouseY;
|
||||
|
||||
float scrollbarOffset;
|
||||
int16_t scrollbarLength;
|
||||
};
|
||||
struct k3MScrollbox *k3MScrollbox();
|
||||
struct k3MObj *k3MScrollboxGetContent(struct k3MScrollbox*);
|
||||
|
||||
Reference in New Issue
Block a user