From 705bf2d9bfcd46860e5f120afcf3189d1fd14d2e Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 3 Jun 2018 17:18:01 -0400 Subject: [PATCH] Planned a new system for transferring data between tables and models, based on uiAttribute. --- uitable.h | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/uitable.h b/uitable.h index 0f23c448..bd95cb53 100644 --- a/uitable.h +++ b/uitable.h @@ -8,24 +8,43 @@ _UI_EXTERN uiImage *uiNewImage(double width, double height); _UI_EXTERN void uiFreeImage(uiImage *i); _UI_EXTERN void uiImageAppend(uiImage *i, void *pixels, int pixelWidth, int pixelHeight, int pixelStride); -typedef struct uiTableModel uiTableModel; -typedef struct uiTableModelHandler uiTableModelHandler; +typedef struct uiTableData uiTableData; + +_UI_EXTERN void uiFreeTableData(uiTableData *d); // TODO actually validate these -_UI_ENUM(uiTableModelColumnType) { - uiTableModelColumnString, - uiTableModelColumnImage, - uiTableModelColumnInt, - uiTableModelColumnColor, +_UI_ENUM(uiTableDataType) { + uiTableDataTypeString, + uiTableDataTypeImage, + uiTableDataTypeInt, + uiTableDataTypeColor, }; +// TODO I don't like this name +_UI_EXTERN uiTableDataType uiTableDataGetType(const uiTableData *d); + +_UI_EXTERN uiTableData *uiNewTableDataString(const char *str); +_UI_EXTERN const char *uiTableDataString(const uiTableData *d); + +_UI_EXTERN uiTableData *uiNewTableDataImage(uiImage *img); +_UI_EXTERN uiImage *uiTableDataImage(const uiTableData *d); + +_UI_EXTERN uiTableData *uiNewTableDataInt(int i); +_UI_EXTERN int uiTableDataInt(const uiTableData *d); + +_UI_EXTERN uiTableData *uiNewTableDataColor(double r, double g, double b, double a); +_UI_EXTERN void uiTableDataColor(const uiTableData *d, double *r, double *g, double *b, double *a); + +typedef struct uiTableModel uiTableModel; +typedef struct uiTableModelHandler uiTableModelHandler; + // TODO validate ranges; validate types on each getter/setter call (? table columns only?) struct uiTableModelHandler { int (*NumColumns)(uiTableModelHandler *, uiTableModel *); - uiTableModelColumnType (*ColumnType)(uiTableModelHandler *, uiTableModel *, int); + uiTableDataType (*ColumnType)(uiTableModelHandler *, uiTableModel *, int); int (*NumRows)(uiTableModelHandler *, uiTableModel *); - void *(*CellValue)(uiTableModelHandler *, uiTableModel *, int, int); - void (*SetCellValue)(uiTableModelHandler *, uiTableModel *, int, int, const void *); + uiTableData *(*CellValue)(uiTableModelHandler *, uiTableModel *, int, int); + void (*SetCellValue)(uiTableModelHandler *, uiTableModel *, int, int, const uiTableData *); }; _UI_EXTERN void *uiTableModelStrdup(const char *str);