mirror of
				https://github.com/davidgiven/fluxengine.git
				synced 2025-10-24 11:11:02 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // 3 june 2018
 | |
| #include "../ui.h"
 | |
| #include "uipriv.h"
 | |
| #include "table.h"
 | |
| 
 | |
| struct uiTableValue {
 | |
| 	uiTableValueType type;
 | |
| 	union {
 | |
| 		char *str;
 | |
| 		uiImage *img;
 | |
| 		int i;
 | |
| 		struct {
 | |
| 			double r;
 | |
| 			double g;
 | |
| 			double b;
 | |
| 			double a;
 | |
| 		} color;
 | |
| 	} u;
 | |
| };
 | |
| 
 | |
| static uiTableValue *newTableValue(uiTableValueType type)
 | |
| {
 | |
| 	uiTableValue *v;
 | |
| 
 | |
| 	v = uiprivNew(uiTableValue);
 | |
| 	v->type = type;
 | |
| 	return v;
 | |
| }
 | |
| 
 | |
| void uiFreeTableValue(uiTableValue *v)
 | |
| {
 | |
| 	switch (v->type) {
 | |
| 	case uiTableValueTypeString:
 | |
| 		uiprivFree(v->u.str);
 | |
| 		break;
 | |
| 	}
 | |
| 	uiprivFree(v);
 | |
| }
 | |
| 
 | |
| uiTableValueType uiTableValueGetType(const uiTableValue *v)
 | |
| {
 | |
| 	return v->type;
 | |
| }
 | |
| 
 | |
| uiTableValue *uiNewTableValueString(const char *str)
 | |
| {
 | |
| 	uiTableValue *v;
 | |
| 
 | |
| 	v = newTableValue(uiTableValueTypeString);
 | |
| 	v->u.str = (char *) uiprivAlloc((strlen(str) + 1) * sizeof (char), "char[] (uiTableValue)");
 | |
| 	strcpy(v->u.str, str);
 | |
| 	return v;
 | |
| }
 | |
| 
 | |
| const char *uiTableValueString(const uiTableValue *v)
 | |
| {
 | |
| 	return v->u.str;
 | |
| }
 | |
| 
 | |
| uiTableValue *uiNewTableValueImage(uiImage *img)
 | |
| {
 | |
| 	uiTableValue *v;
 | |
| 
 | |
| 	v = newTableValue(uiTableValueTypeImage);
 | |
| 	v->u.img = img;
 | |
| 	return v;
 | |
| }
 | |
| 
 | |
| uiImage *uiTableValueImage(const uiTableValue *v)
 | |
| {
 | |
| 	return v->u.img;
 | |
| }
 | |
| 
 | |
| uiTableValue *uiNewTableValueInt(int i)
 | |
| {
 | |
| 	uiTableValue *v;
 | |
| 
 | |
| 	v = newTableValue(uiTableValueTypeInt);
 | |
| 	v->u.i = i;
 | |
| 	return v;
 | |
| }
 | |
| 
 | |
| int uiTableValueInt(const uiTableValue *v)
 | |
| {
 | |
| 	return v->u.i;
 | |
| }
 | |
| 
 | |
| uiTableValue *uiNewTableValueColor(double r, double g, double b, double a)
 | |
| {
 | |
| 	uiTableValue *v;
 | |
| 
 | |
| 	v = newTableValue(uiTableValueTypeColor);
 | |
| 	v->u.color.r = r;
 | |
| 	v->u.color.g = g;
 | |
| 	v->u.color.b = b;
 | |
| 	v->u.color.a = a;
 | |
| 	return v;
 | |
| }
 | |
| 
 | |
| void uiTableValueColor(const uiTableValue *v, double *r, double *g, double *b, double *a)
 | |
| {
 | |
| 	*r = v->u.color.r;
 | |
| 	*g = v->u.color.g;
 | |
| 	*b = v->u.color.b;
 | |
| 	*a = v->u.color.a;
 | |
| }
 |