393 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			393 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
| /* utils.c generated by valac 0.56.0, the Vala compiler
 | |
|  * generated from utils.vala, do not modify */
 | |
| 
 | |
| #include "livechart_static.h"
 | |
| #include <glib.h>
 | |
| #include <float.h>
 | |
| #include <math.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <gee.h>
 | |
| #include <glib-object.h>
 | |
| 
 | |
| #define _g_free0(var) (var = (g_free (var), NULL))
 | |
| #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
 | |
| 
 | |
| VALA_EXTERN gint live_chart_num_of_digits (gint value);
 | |
| static gfloat* _float_dup (gfloat* self);
 | |
| static gint __lambda4_ (gint a,
 | |
|                  gint b);
 | |
| static gint ___lambda4__gcompare_data_func (gconstpointer a,
 | |
|                                      gconstpointer b,
 | |
|                                      gpointer self);
 | |
| static inline gpointer _vala_memdup2 (gconstpointer mem,
 | |
|                         gsize byte_size);
 | |
| 
 | |
| gfloat
 | |
| live_chart_cap (gfloat value)
 | |
| {
 | |
| 	gint num_digits = 0;
 | |
| 	gdouble size = 0.0;
 | |
| 	gdouble integer_part = 0.0;
 | |
| 	gdouble fractional_part = 0.0;
 | |
| 	gdouble _tmp0_ = 0.0;
 | |
| 	gdouble _tmp1_;
 | |
| 	gdouble delta = 0.0;
 | |
| 	gfloat result;
 | |
| #line 6 "../src/utils.vala"
 | |
| 	num_digits = live_chart_num_of_digits ((gint) value);
 | |
| #line 8 "../src/utils.vala"
 | |
| 	size = pow ((gdouble) 10, ((gdouble) num_digits) - 1);
 | |
| #line 10 "../src/utils.vala"
 | |
| 	if (fmod (value, size) == ((gdouble) 0)) {
 | |
| #line 11 "../src/utils.vala"
 | |
| 		result = value;
 | |
| #line 11 "../src/utils.vala"
 | |
| 		return result;
 | |
| #line 48 "utils.c"
 | |
| 	}
 | |
| #line 15 "../src/utils.vala"
 | |
| 	_tmp1_ = modf (value / size, &_tmp0_);
 | |
| #line 15 "../src/utils.vala"
 | |
| 	integer_part = _tmp0_;
 | |
| #line 15 "../src/utils.vala"
 | |
| 	fractional_part = _tmp1_ * size;
 | |
| #line 17 "../src/utils.vala"
 | |
| 	delta = size - fractional_part;
 | |
| #line 19 "../src/utils.vala"
 | |
| 	result = (gfloat) (value + delta);
 | |
| #line 19 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 62 "utils.c"
 | |
| }
 | |
| 
 | |
| gboolean
 | |
| live_chart_has_fractional_part (gfloat value)
 | |
| {
 | |
| 	gboolean result;
 | |
| #line 23 "../src/utils.vala"
 | |
| 	result = value != ((gfloat) ((gint) value));
 | |
| #line 23 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 73 "utils.c"
 | |
| }
 | |
| 
 | |
| gchar*
 | |
| live_chart_format_for_y_axis (const gchar* unit,
 | |
|                               gfloat value)
 | |
| {
 | |
| 	gchar* pattern = NULL;
 | |
| 	gchar* _tmp0_;
 | |
| 	const gchar* _tmp2_;
 | |
| 	gchar* _tmp3_;
 | |
| 	gchar* result;
 | |
| #line 26 "../src/utils.vala"
 | |
| 	g_return_val_if_fail (unit != NULL, NULL);
 | |
| #line 27 "../src/utils.vala"
 | |
| 	_tmp0_ = g_strdup ("%0.0f%s");
 | |
| #line 27 "../src/utils.vala"
 | |
| 	pattern = _tmp0_;
 | |
| #line 28 "../src/utils.vala"
 | |
| 	if (live_chart_has_fractional_part (value)) {
 | |
| #line 93 "utils.c"
 | |
| 		gchar* _tmp1_;
 | |
| #line 29 "../src/utils.vala"
 | |
| 		_tmp1_ = g_strdup ("%0.2f%s");
 | |
| #line 29 "../src/utils.vala"
 | |
| 		_g_free0 (pattern);
 | |
| #line 29 "../src/utils.vala"
 | |
| 		pattern = _tmp1_;
 | |
| #line 101 "utils.c"
 | |
| 	}
 | |
| #line 31 "../src/utils.vala"
 | |
| 	_tmp2_ = pattern;
 | |
| #line 31 "../src/utils.vala"
 | |
| 	_tmp3_ = g_strdup_printf (_tmp2_, value, unit);
 | |
| #line 31 "../src/utils.vala"
 | |
| 	result = _tmp3_;
 | |
| #line 31 "../src/utils.vala"
 | |
| 	_g_free0 (pattern);
 | |
| #line 31 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 113 "utils.c"
 | |
| }
 | |
| 
 | |
| static gfloat*
 | |
| _float_dup (gfloat* self)
 | |
| {
 | |
| 	gfloat* dup;
 | |
| #line 37 "../src/utils.vala"
 | |
| 	dup = g_new0 (gfloat, 1);
 | |
| #line 37 "../src/utils.vala"
 | |
| 	memcpy (dup, self, sizeof (gfloat));
 | |
| #line 37 "../src/utils.vala"
 | |
| 	return dup;
 | |
| #line 126 "utils.c"
 | |
| }
 | |
| 
 | |
| static gint
 | |
| __lambda4_ (gint a,
 | |
|             gint b)
 | |
| {
 | |
| 	gint result;
 | |
| #line 57 "../src/utils.vala"
 | |
| 	result = a - b;
 | |
| #line 57 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 138 "utils.c"
 | |
| }
 | |
| 
 | |
| static gint
 | |
| ___lambda4__gcompare_data_func (gconstpointer a,
 | |
|                                 gconstpointer b,
 | |
|                                 gpointer self)
 | |
| {
 | |
| 	gint result;
 | |
| 	result = __lambda4_ ((gint) ((gintptr) a), (gint) ((gintptr) b));
 | |
| #line 56 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 150 "utils.c"
 | |
| }
 | |
| 
 | |
| GeeList*
 | |
| live_chart_golden_divisors (gfloat value)
 | |
| {
 | |
| 	gfloat _tmp1_ = 0.0F;
 | |
| 	gfloat factor = 0.0F;
 | |
| 	gfloat working_value = 0.0F;
 | |
| 	gfloat sqrt = 0.0F;
 | |
| 	GeeArrayList* divs = NULL;
 | |
| 	GeeArrayList* _tmp2_;
 | |
| 	GeeArrayList* _tmp7_;
 | |
| 	GeeArrayList* ndivs = NULL;
 | |
| 	GeeArrayList* _tmp8_;
 | |
| 	gint last_div = 0;
 | |
| 	GeeArrayList* _tmp9_;
 | |
| 	gpointer _tmp10_;
 | |
| 	GeeList* result;
 | |
| #line 36 "../src/utils.vala"
 | |
| 	if (value == ((gfloat) 0)) {
 | |
| #line 171 "utils.c"
 | |
| 		GeeArrayList* _tmp0_;
 | |
| #line 37 "../src/utils.vala"
 | |
| 		_tmp0_ = gee_array_list_new (G_TYPE_FLOAT, (GBoxedCopyFunc) _float_dup, (GDestroyNotify) g_free, NULL, NULL, NULL);
 | |
| #line 37 "../src/utils.vala"
 | |
| 		result = (GeeList*) _tmp0_;
 | |
| #line 37 "../src/utils.vala"
 | |
| 		return result;
 | |
| #line 179 "utils.c"
 | |
| 	}
 | |
| #line 41 "../src/utils.vala"
 | |
| 	if (value < ((gfloat) 10)) {
 | |
| #line 41 "../src/utils.vala"
 | |
| 		_tmp1_ = live_chart_cap (100 / value);
 | |
| #line 185 "utils.c"
 | |
| 	} else {
 | |
| #line 41 "../src/utils.vala"
 | |
| 		_tmp1_ = 1.f;
 | |
| #line 189 "utils.c"
 | |
| 	}
 | |
| #line 41 "../src/utils.vala"
 | |
| 	factor = _tmp1_;
 | |
| #line 42 "../src/utils.vala"
 | |
| 	working_value = value * factor;
 | |
| #line 44 "../src/utils.vala"
 | |
| 	sqrt = sqrtf (working_value);
 | |
| #line 45 "../src/utils.vala"
 | |
| 	_tmp2_ = gee_array_list_new (G_TYPE_INT, NULL, NULL, NULL, NULL, NULL);
 | |
| #line 45 "../src/utils.vala"
 | |
| 	divs = _tmp2_;
 | |
| #line 201 "utils.c"
 | |
| 	{
 | |
| 		gint i = 0;
 | |
| #line 47 "../src/utils.vala"
 | |
| 		i = 1;
 | |
| #line 206 "utils.c"
 | |
| 		{
 | |
| 			gboolean _tmp3_ = FALSE;
 | |
| #line 47 "../src/utils.vala"
 | |
| 			_tmp3_ = TRUE;
 | |
| #line 47 "../src/utils.vala"
 | |
| 			while (TRUE) {
 | |
| #line 47 "../src/utils.vala"
 | |
| 				if (!_tmp3_) {
 | |
| #line 215 "utils.c"
 | |
| 					gint _tmp4_;
 | |
| #line 47 "../src/utils.vala"
 | |
| 					_tmp4_ = i;
 | |
| #line 47 "../src/utils.vala"
 | |
| 					i = _tmp4_ + 1;
 | |
| #line 221 "utils.c"
 | |
| 				}
 | |
| #line 47 "../src/utils.vala"
 | |
| 				_tmp3_ = FALSE;
 | |
| #line 47 "../src/utils.vala"
 | |
| 				if (!(((gfloat) i) <= sqrt)) {
 | |
| #line 47 "../src/utils.vala"
 | |
| 					break;
 | |
| #line 229 "utils.c"
 | |
| 				}
 | |
| #line 48 "../src/utils.vala"
 | |
| 				if (fmodf (working_value, i) == ((gfloat) 0)) {
 | |
| #line 233 "utils.c"
 | |
| 					GeeArrayList* _tmp5_;
 | |
| 					gfloat tmp = 0.0F;
 | |
| #line 49 "../src/utils.vala"
 | |
| 					_tmp5_ = divs;
 | |
| #line 49 "../src/utils.vala"
 | |
| 					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp5_, (gpointer) ((gintptr) i));
 | |
| #line 50 "../src/utils.vala"
 | |
| 					tmp = working_value / i;
 | |
| #line 51 "../src/utils.vala"
 | |
| 					if (tmp != ((gfloat) i)) {
 | |
| #line 244 "utils.c"
 | |
| 						GeeArrayList* _tmp6_;
 | |
| #line 52 "../src/utils.vala"
 | |
| 						_tmp6_ = divs;
 | |
| #line 52 "../src/utils.vala"
 | |
| 						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp6_, (gpointer) ((gintptr) tmp));
 | |
| #line 250 "utils.c"
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| #line 56 "../src/utils.vala"
 | |
| 	_tmp7_ = divs;
 | |
| #line 56 "../src/utils.vala"
 | |
| 	gee_list_sort ((GeeList*) _tmp7_, ___lambda4__gcompare_data_func, NULL, NULL);
 | |
| #line 60 "../src/utils.vala"
 | |
| 	_tmp8_ = gee_array_list_new (G_TYPE_FLOAT, (GBoxedCopyFunc) _float_dup, (GDestroyNotify) g_free, NULL, NULL, NULL);
 | |
| #line 60 "../src/utils.vala"
 | |
| 	ndivs = _tmp8_;
 | |
| #line 61 "../src/utils.vala"
 | |
| 	_tmp9_ = divs;
 | |
| #line 61 "../src/utils.vala"
 | |
| 	_tmp10_ = gee_list_last ((GeeList*) _tmp9_);
 | |
| #line 61 "../src/utils.vala"
 | |
| 	last_div = (gint) ((gintptr) _tmp10_);
 | |
| #line 270 "utils.c"
 | |
| 	{
 | |
| 		gint i = 0;
 | |
| 		GeeArrayList* _tmp11_;
 | |
| 		gint _tmp12_;
 | |
| 		gint _tmp13_;
 | |
| #line 62 "../src/utils.vala"
 | |
| 		_tmp11_ = divs;
 | |
| #line 62 "../src/utils.vala"
 | |
| 		_tmp12_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp11_);
 | |
| #line 62 "../src/utils.vala"
 | |
| 		_tmp13_ = _tmp12_;
 | |
| #line 62 "../src/utils.vala"
 | |
| 		i = _tmp13_ - 1;
 | |
| #line 284 "utils.c"
 | |
| 		{
 | |
| 			gboolean _tmp14_ = FALSE;
 | |
| #line 62 "../src/utils.vala"
 | |
| 			_tmp14_ = TRUE;
 | |
| #line 62 "../src/utils.vala"
 | |
| 			while (TRUE) {
 | |
| #line 291 "utils.c"
 | |
| 				gint current = 0;
 | |
| 				GeeArrayList* _tmp16_;
 | |
| 				gpointer _tmp17_;
 | |
| 				GeeArrayList* _tmp18_;
 | |
| 				gfloat _tmp19_;
 | |
| #line 62 "../src/utils.vala"
 | |
| 				if (!_tmp14_) {
 | |
| #line 299 "utils.c"
 | |
| 					gint _tmp15_;
 | |
| #line 62 "../src/utils.vala"
 | |
| 					_tmp15_ = i;
 | |
| #line 62 "../src/utils.vala"
 | |
| 					i = _tmp15_ - 1;
 | |
| #line 305 "utils.c"
 | |
| 				}
 | |
| #line 62 "../src/utils.vala"
 | |
| 				_tmp14_ = FALSE;
 | |
| #line 62 "../src/utils.vala"
 | |
| 				if (!(i >= 0)) {
 | |
| #line 62 "../src/utils.vala"
 | |
| 					break;
 | |
| #line 313 "utils.c"
 | |
| 				}
 | |
| #line 63 "../src/utils.vala"
 | |
| 				_tmp16_ = divs;
 | |
| #line 63 "../src/utils.vala"
 | |
| 				_tmp17_ = gee_abstract_list_get ((GeeAbstractList*) _tmp16_, i);
 | |
| #line 63 "../src/utils.vala"
 | |
| 				current = (gint) ((gintptr) _tmp17_);
 | |
| #line 64 "../src/utils.vala"
 | |
| 				if ((last_div / current) != 2) {
 | |
| #line 65 "../src/utils.vala"
 | |
| 					continue;
 | |
| #line 325 "utils.c"
 | |
| 				}
 | |
| #line 67 "../src/utils.vala"
 | |
| 				_tmp18_ = ndivs;
 | |
| #line 67 "../src/utils.vala"
 | |
| 				_tmp19_ = (gfloat) current;
 | |
| #line 67 "../src/utils.vala"
 | |
| 				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp18_, &_tmp19_);
 | |
| #line 68 "../src/utils.vala"
 | |
| 				last_div = current;
 | |
| #line 335 "utils.c"
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| #line 71 "../src/utils.vala"
 | |
| 	result = (GeeList*) ndivs;
 | |
| #line 71 "../src/utils.vala"
 | |
| 	_g_object_unref0 (divs);
 | |
| #line 71 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 345 "utils.c"
 | |
| }
 | |
| 
 | |
| gint
 | |
| live_chart_num_of_digits (gint value)
 | |
| {
 | |
| 	gint num_digits = 0;
 | |
| 	gint result;
 | |
| #line 75 "../src/utils.vala"
 | |
| 	num_digits = 0;
 | |
| #line 76 "../src/utils.vala"
 | |
| 	while (TRUE) {
 | |
| #line 357 "utils.c"
 | |
| 		gint _tmp0_;
 | |
| #line 76 "../src/utils.vala"
 | |
| 		if (!(value != 0)) {
 | |
| #line 76 "../src/utils.vala"
 | |
| 			break;
 | |
| #line 363 "utils.c"
 | |
| 		}
 | |
| #line 77 "../src/utils.vala"
 | |
| 		value = value / 10;
 | |
| #line 78 "../src/utils.vala"
 | |
| 		num_digits = num_digits + 1;
 | |
| #line 78 "../src/utils.vala"
 | |
| 		_tmp0_ = num_digits;
 | |
| #line 371 "utils.c"
 | |
| 	}
 | |
| #line 81 "../src/utils.vala"
 | |
| 	result = num_digits;
 | |
| #line 81 "../src/utils.vala"
 | |
| 	return result;
 | |
| #line 377 "utils.c"
 | |
| }
 | |
| 
 | |
| static inline gpointer
 | |
| _vala_memdup2 (gconstpointer mem,
 | |
|                gsize byte_size)
 | |
| {
 | |
| 	gpointer new_mem;
 | |
| 	if (mem && byte_size != 0) {
 | |
| 		new_mem = g_malloc (byte_size);
 | |
| 		memcpy (new_mem, mem, byte_size);
 | |
| 	} else {
 | |
| 		new_mem = NULL;
 | |
| 	}
 | |
| 	return new_mem;
 | |
| }
 | |
| 
 |