On Thu, Apr 18, 2013 at 9:36 AM, Carsten Haitzler <ras...@rasterman.com>wrote:
> On Thu, 18 Apr 2013 02:11:58 +0900 Daniel Juyung Seo <seojuyu...@gmail.com > > > said: > > > It looks like the default "thumbscroll_acceleration_threshold" is too > big. > > Please refer the inline comments. > > are they actually? 500pix/sec isnt that much its a whole SECOND.. to move > 500pixels... > > You are right. The reason why I had the acceleration problem was my acceleration weight was 0.5! 0.5! 0.5! That was why I had hard time on doing acceleration :) The minimum weight value was 0 so I could change that to 0.5. Now I set the minimum acceleration value to 1.0 from elementary_config. http://git.enlightenment.org/core/elementary.git/commit/?id=2fb434574cde0c65ddee6d7e66d82423999dad7e So it's fine to me and to anyone else. Thanks. Daniel Juyung Seo (SeoZ) > > > > On Wed, Apr 17, 2013 at 9:58 PM, Hosang Kim - Enlightenment Git < > > no-re...@enlightenment.org> wrote: > > > > > jaehwan pushed a commit to branch master. > > > > > > commit 81aa9a3fabdd7938326973e93031ba35ed28d283 > > > Author: Hosang Kim <hosang12....@samsung.com> > > > Date: Wed Apr 17 21:46:21 2013 +0900 > > > > > > [Scroller] changed acceleration constant values > > > --- > > > config/default/base.src | 3 + > > > config/mobile/base.src | 3 + > > > config/standard/base.src | 3 + > > > src/bin/config.c | 147 > > > ++++++++++++++++++++++++++++++++++++- > > > src/lib/elm_config.c | 48 ++++++++++++ > > > src/lib/elm_config.h | 61 +++++++++++++++ > > > src/lib/elm_interface_scrollable.c | 14 ++-- > > > src/lib/elm_priv.h | 3 + > > > 8 files changed, 274 insertions(+), 8 deletions(-) > > > > > > diff --git a/config/default/base.src b/config/default/base.src > > > index c928779..8177b3c 100644 > > > --- a/config/default/base.src > > > +++ b/config/default/base.src > > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > > value "thumbscroll_friction" double: 1.0; > > > value "thumbscroll_bounce_friction" double: 0.5; > > > value "thumbscroll_bounce_enable" uchar: 1; > > > + value "thumbscroll_acceleration_threshold" double: 500.0; > > > > > > > 500 pixels per second is too big. > > > > > > > + value "thumbscroll_acceleration_time_limit" double: 0.7; > > > + value "thumbscroll_acceleration_weight" double: 1.5; > > > value "page_scroll_friction" double: 0.5; > > > value "bring_in_scroll_friction" double: 0.5; > > > value "zoom_friction" double: 0.5; > > > diff --git a/config/mobile/base.src b/config/mobile/base.src > > > index 604154e..9037022 100644 > > > --- a/config/mobile/base.src > > > +++ b/config/mobile/base.src > > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > > value "thumbscroll_friction" double: 1.0; > > > value "thumbscroll_bounce_friction" double: 0.5; > > > value "thumbscroll_bounce_enable" uchar: 1; > > > + value "thumbscroll_acceleration_threshold" double: 2000.0; > > > > > > > 2000 pixels per second is way too big. > > > > > > > + value "thumbscroll_acceleration_time_limit" double: 0.5; > > > + value "thumbscroll_acceleration_weight" double: 1.5; > > > value "page_scroll_friction" double: 0.5; > > > value "bring_in_scroll_friction" double: 0.5; > > > value "zoom_friction" double: 0.5; > > > diff --git a/config/standard/base.src b/config/standard/base.src > > > index 4870f39..8bd1a18 100644 > > > --- a/config/standard/base.src > > > +++ b/config/standard/base.src > > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > > value "thumbscroll_friction" double: 1.0; > > > value "thumbscroll_bounce_friction" double: 0.5; > > > value "thumbscroll_bounce_enable" uchar: 0; > > > + value "thumbscroll_acceleration_threshold" double: 500.0; > > > > > > > 500 pixels per second is too big. > > > > > > > + value "thumbscroll_acceleration_time_limit" double: 0.7; > > > + value "thumbscroll_acceleration_weight" double: 1.5; > > > value "page_scroll_friction" double: 0.5; > > > value "bring_in_scroll_friction" double: 0.5; > > > value "zoom_friction" double: 0.5; > > > diff --git a/src/bin/config.c b/src/bin/config.c > > > index 3d4b960..7138493 100644 > > > --- a/src/bin/config.c > > > +++ b/src/bin/config.c > > > @@ -422,6 +422,81 @@ tssf_change(void *data __UNUSED__, > > > } > > > > > > static void > > > +tsat_round(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double val = elm_slider_value_get(obj); > > > + double v; > > > + > > > + v = ((double)((int)(val * 10.0))) / 10.0; > > > + if (v != val) elm_slider_value_set(obj, v); > > > +} > > > + > > > +static void > > > +tsat_change(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double tsat = > > > elm_config_scroll_thumbscroll_acceleration_threshold_get(); > > > + double val = elm_slider_value_get(obj); > > > + > > > + if (tsat == val) return; > > > + elm_config_scroll_thumbscroll_acceleration_threshold_set(val); > > > + elm_config_all_flush(); > > > +} > > > + > > > +static void > > > +tsatl_round(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double val = elm_slider_value_get(obj); > > > + double v; > > > + > > > + v = ((double)((int)(val * 10.0))) / 10.0; > > > + if (v != val) elm_slider_value_set(obj, v); > > > +} > > > + > > > +static void > > > +tsatl_change(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double tsatl = > > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(); > > > + double val = elm_slider_value_get(obj); > > > + > > > + if (tsatl == val) return; > > > + elm_config_scroll_thumbscroll_acceleration_time_limit_set(val); > > > + elm_config_all_flush(); > > > +} > > > + > > > +static void > > > +tsaw_round(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double val = elm_slider_value_get(obj); > > > + double v; > > > + > > > + v = ((double)((int)(val * 10.0))) / 10.0; > > > + if (v != val) elm_slider_value_set(obj, v); > > > +} > > > + > > > +static void > > > +tsaw_change(void *data __UNUSED__, > > > + Evas_Object *obj, > > > + void *event_info __UNUSED__) > > > +{ > > > + double tsaw = > elm_config_scroll_thumbscroll_acceleration_weight_get(); > > > + double val = elm_slider_value_get(obj); > > > + > > > + if (tsaw == val) return; > > > + elm_config_scroll_thumbscroll_acceleration_weight_set(val); > > > + elm_config_all_flush(); > > > +} > > > + > > > +static void > > > cf_enable(void *data, > > > Evas_Object *obj, > > > void *event_info __UNUSED__) > > > @@ -974,8 +1049,9 @@ static void > > > _config_display_update(Evas_Object *win) > > > { > > > int flush_interval, font_c, image_c, edje_file_c, edje_col_c, > > > ts_threshould, ts_hold_threshold; > > > - double scale, s_bounce_friction, ts_momentum_threshold, > ts_friction, > > > - ts_border_friction, ts_sensitivity_friction, page_friction, > > > bring_in_friction, zoom_friction; > > > + double scale, s_bounce_friction, ts_momentum_threshold, > ts_friction, > > > ts_border_friction, > > > + ts_sensitivity_friction, ts_acceleration_threshold, > > > ts_acceleration_time_limit, > > > + ts_acceleration_weight, page_friction, bring_in_friction, > > > zoom_friction; > > > const char *curr_theme, *curr_engine; > > > const Eina_List *l_items, *l; > > > Eina_Bool s_bounce, ts; > > > @@ -1000,6 +1076,9 @@ _config_display_update(Evas_Object *win) > > > ts_friction = elm_config_scroll_thumbscroll_friction_get(); > > > ts_border_friction = > > > elm_config_scroll_thumbscroll_border_friction_get(); > > > ts_sensitivity_friction = > > > elm_config_scroll_thumbscroll_sensitivity_friction_get(); > > > + ts_acceleration_threshold = > > > elm_config_scroll_thumbscroll_acceleration_threshold_get(); > > > + ts_acceleration_time_limit = > > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(); > > > + ts_acceleration_weight = > > > elm_config_scroll_thumbscroll_acceleration_weight_get(); > > > page_friction = elm_config_scroll_page_scroll_friction_get(); > > > bring_in_friction = > elm_config_scroll_bring_in_scroll_friction_get(); > > > zoom_friction = elm_config_scroll_zoom_friction_get(); > > > @@ -1042,6 +1121,12 @@ _config_display_update(Evas_Object *win) > > > ts_border_friction); > > > elm_slider_value_set(evas_object_data_get(win, > > > "ts_sensitivity_friction_slider"), > > > ts_sensitivity_friction); > > > + elm_slider_value_set(evas_object_data_get(win, > > > "ts_acceleration_threshold_slider"), > > > + ts_acceleration_threshold); > > > + elm_slider_value_set(evas_object_data_get(win, > > > "ts_acceleration_time_limit_slider"), > > > + ts_acceleration_time_limit); > > > + elm_slider_value_set(evas_object_data_get(win, > > > "ts_acceleration_weight_slider"), > > > + ts_acceleration_weight); > > > elm_slider_value_set(evas_object_data_get(win, > > > > > > "page_scroll_friction_slider"), > > > page_friction); > > > @@ -2751,6 +2836,64 @@ _status_config_scrolling(Evas_Object *win, > > > evas_object_smart_callback_add(sl, "changed", tssf_round, NULL); > > > evas_object_smart_callback_add(sl, "delay,changed", tssf_change, > NULL); > > > > > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration threshold</>"); > > > + > > > + sl = elm_slider_add(win); > > > + elm_object_tooltip_text_set(sl, "This is the minimum speed of mouse > > > <br/>" > > > + "cursor movement which will > > > accelerate<br/>" > > > + "scrolling velocity after a<br/>" > > > + "mouse up event (pixels/second)"); > > > + evas_object_data_set(win, "ts_acceleration_threshold_slider", sl); > > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > > + elm_slider_span_size_set(sl, 120); > > > + elm_slider_unit_format_set(sl, "%1.0f pixels/s"); > > > + elm_slider_indicator_format_set(sl, "%1.0f"); > > > + elm_slider_min_max_set(sl, 10.0, 5000.0); > > > > > > > Well.. We can limit the maximum to less than 500. > > > > > > > + elm_slider_value_set(sl, > > > elm_config_scroll_thumbscroll_acceleration_threshold_get()); > > > + elm_box_pack_end(bx, sl); > > > + evas_object_show(sl); > > > + > > > + evas_object_smart_callback_add(sl, "changed", tsat_round, NULL); > > > + evas_object_smart_callback_add(sl, "delay,changed", tsat_change, > NULL); > > > + > > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration time > limit</>"); > > > + > > > + sl = elm_slider_add(win); > > > + elm_object_tooltip_text_set(sl, "This is the time limit for<br/>" > > > + "accelerating velocity<br/>"); > > > + evas_object_data_set(win, "ts_acceleration_time_limit_slider", sl); > > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > > + elm_slider_span_size_set(sl, 120); > > > + elm_slider_unit_format_set(sl, "%1.1f"); > > > + elm_slider_indicator_format_set(sl, "%1.1f"); > > > + elm_slider_min_max_set(sl, 0.0, 15.0); > > > + elm_slider_value_set(sl, > > > elm_config_scroll_thumbscroll_acceleration_time_limit_get()); > > > + elm_box_pack_end(bx, sl); > > > + evas_object_show(sl); > > > + > > > + evas_object_smart_callback_add(sl, "changed", tsatl_round, NULL); > > > + evas_object_smart_callback_add(sl, "delay,changed", tsatl_change, > > > NULL); > > > + > > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration weight</>"); > > > + > > > + sl = elm_slider_add(win); > > > + elm_object_tooltip_text_set(sl, "This is the weight for > acceleration"); > > > + evas_object_data_set(win, "ts_acceleration_weight_slider", sl); > > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > > + elm_slider_span_size_set(sl, 120); > > > + elm_slider_unit_format_set(sl, "%1.1f"); > > > + elm_slider_indicator_format_set(sl, "%1.1f"); > > > + elm_slider_min_max_set(sl, 0.0, 10.0); > > > + elm_slider_value_set(sl, > > > elm_config_scroll_thumbscroll_acceleration_weight_get()); > > > + elm_box_pack_end(bx, sl); > > > + evas_object_show(sl); > > > + > > > + evas_object_smart_callback_add(sl, "changed", tsaw_round, NULL); > > > + evas_object_smart_callback_add(sl, "delay,changed", tsaw_change, > NULL); > > > + > > > sp = elm_separator_add(win); > > > elm_separator_horizontal_set(sp, EINA_TRUE); > > > evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0); > > > diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c > > > index a6024d2..51ea0ee 100644 > > > --- a/src/lib/elm_config.c > > > +++ b/src/lib/elm_config.c > > > @@ -357,6 +357,9 @@ _desc_init(void) > > > ELM_CONFIG_VAL(D, T, thumbscroll_bounce_friction, T_DOUBLE); > > > ELM_CONFIG_VAL(D, T, thumbscroll_border_friction, T_DOUBLE); > > > ELM_CONFIG_VAL(D, T, thumbscroll_sensitivity_friction, T_DOUBLE); > > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_threshold, T_DOUBLE); > > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_time_limit, > T_DOUBLE); > > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_weight, T_DOUBLE); > > > ELM_CONFIG_VAL(D, T, page_scroll_friction, T_DOUBLE); > > > ELM_CONFIG_VAL(D, T, bring_in_scroll_friction, T_DOUBLE); > > > ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE); > > > @@ -1062,6 +1065,9 @@ _config_load(void) > > > _elm_config->thumbscroll_friction = 1.0; > > > _elm_config->thumbscroll_bounce_friction = 0.5; > > > _elm_config->thumbscroll_bounce_enable = EINA_TRUE; > > > + _elm_config->thumbscroll_acceleration_threshold = 500.0; > > > + _elm_config->thumbscroll_acceleration_time_limit = 0.7; > > > + _elm_config->thumbscroll_acceleration_weight = 1.5; > > > _elm_config->page_scroll_friction = 0.5; > > > _elm_config->bring_in_scroll_friction = 0.5; > > > _elm_config->zoom_friction = 0.5; > > > @@ -1479,6 +1485,12 @@ _env_get(void) > > > if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s); > > > s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION"); > > > if (s) _elm_config->thumbscroll_bounce_friction = _elm_atof(s); > > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_THRESHOLD"); > > > + if (s) _elm_config->thumbscroll_acceleration_threshold = > _elm_atof(s); > > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_TIME_LIMIT"); > > > + if (s) _elm_config->thumbscroll_acceleration_time_limit = > _elm_atof(s); > > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_WEIGHT"); > > > + if (s) _elm_config->thumbscroll_acceleration_weight = _elm_atof(s); > > > s = getenv("ELM_PAGE_SCROLL_FRICTION"); > > > if (s) _elm_config->page_scroll_friction = _elm_atof(s); > > > s = getenv("ELM_BRING_IN_SCROLL_FRICTION"); > > > @@ -2169,6 +2181,42 @@ > > > elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction) > > > _elm_config->thumbscroll_sensitivity_friction = friction; > > > } > > > > > > +EAPI double > > > +elm_config_scroll_thumbscroll_acceleration_threshold_get(void) > > > +{ > > > + return _elm_config->thumbscroll_acceleration_threshold; > > > +} > > > + > > > +EAPI void > > > +elm_config_scroll_thumbscroll_acceleration_threshold_set(double > threshold) > > > +{ > > > + _elm_config->thumbscroll_acceleration_threshold = threshold; > > > +} > > > + > > > +EAPI double > > > +elm_config_scroll_thumbscroll_acceleration_time_limit_get(void) > > > +{ > > > + return _elm_config->thumbscroll_acceleration_time_limit; > > > +} > > > + > > > +EAPI void > > > +elm_config_scroll_thumbscroll_acceleration_time_limit_set(double > > > time_limit) > > > +{ > > > + _elm_config->thumbscroll_acceleration_time_limit = time_limit; > > > +} > > > + > > > +EAPI double > > > +elm_config_scroll_thumbscroll_acceleration_weight_get(void) > > > +{ > > > + return _elm_config->thumbscroll_acceleration_weight; > > > +} > > > + > > > +EAPI void > > > +elm_config_scroll_thumbscroll_acceleration_weight_set(double weight) > > > +{ > > > + _elm_config->thumbscroll_acceleration_weight = weight; > > > +} > > > + > > > EAPI void > > > elm_config_longpress_timeout_set(double longpress_timeout) > > > { > > > diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h > > > index 4b3b6a6..8f72281 100644 > > > --- a/src/lib/elm_config.h > > > +++ b/src/lib/elm_config.h > > > @@ -423,6 +423,67 @@ EAPI double > > > elm_config_scroll_thumbscroll_sensitivity_friction_get(void); > > > EAPI void > > > elm_config_scroll_thumbscroll_sensitivity_friction_set(double > friction); > > > > > > /** > > > + * Get the minimum speed of mouse cursor movement which will > accelerate > > > + * scrolling velocity after a mouse up event > > > + * (pixels/second). > > > + * > > > + * @return the thumb scroll acceleration threshold > > > + * > > > + * @ingroup Scrolling > > > + */ > > > +EAPI double > > > elm_config_scroll_thumbscroll_acceleration_threshold_get(void); > > > + > > > +/** > > > + * Set the minimum speed of mouse cursor movement which will > accelerate > > > + * scrolling velocity after a mouse up event > > > + * (pixels/second). > > > + * > > > + * @param threshold the thumb scroll acceleration threshold > > > + * > > > + * @see elm_config_thumbscroll_acceleration_threshold_get() > > > + * @ingroup Scrolling > > > + */ > > > +EAPI void > > > elm_config_scroll_thumbscroll_acceleration_threshold_set(double > threshold); > > > + > > > +/** > > > + * Get the time limit for accelerating velocity. > > > + * > > > + * @return the thumb scroll acceleration time limit > > > + * > > > + * @ingroup Scrolling > > > + */ > > > +EAPI double > > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(void); > > > + > > > +/** > > > + * Set the time limit for accelerating velocity. > > > + * > > > + * @param threshold the thumb scroll acceleration time limit > > > + * > > > + * @see elm_config_thumbscroll_acceleration_time_limit_get() > > > + * @ingroup Scrolling > > > + */ > > > +EAPI void > > > elm_config_scroll_thumbscroll_acceleration_time_limit_set(double > > > time_limit); > > > + > > > +/** > > > + * Get the weight for the acceleration. > > > + * > > > + * @return the thumb scroll acceleration weight > > > + * > > > + * @ingroup Scrolling > > > + */ > > > +EAPI double > > > elm_config_scroll_thumbscroll_acceleration_weight_get(void); > > > + > > > +/** > > > + * Set the weight for the acceleration. > > > + * > > > + * @param threshold the thumb scroll acceleration weight > > > + * > > > + * @see elm_config_thumbscroll_acceleration_weight_get() > > > + * @ingroup Scrolling > > > + */ > > > +EAPI void > > > elm_config_scroll_thumbscroll_acceleration_weight_set(double weight); > > > + > > > +/** > > > * @} > > > */ > > > > > > diff --git a/src/lib/elm_interface_scrollable.c > > > b/src/lib/elm_interface_scrollable.c > > > index 40c2028..7883027 100644 > > > --- a/src/lib/elm_interface_scrollable.c > > > +++ b/src/lib/elm_interface_scrollable.c > > > @@ -2390,18 +2390,20 @@ _elm_scroll_mouse_up_event_cb(void *data, > > > else > > > sid->down.extra_time = 0.0; > > > > > > - if (abs(sid->down.dx) > 500 && (dtt < > 0.7) && > > > + if (abs(sid->down.dx) > > > > _elm_config->thumbscroll_acceleration_threshold && > > > + (dtt < > > > _elm_config->thumbscroll_acceleration_time_limit) && > > > (((sid->down.dx > 0) && > (sid->down.pdx > > > > 0)) || > > > ((sid->down.dx < 0) && (sid->down.pdx > < > > > 0)))) > > > if (px > minx && px < mx) > > > - sid->down.dx += (double)sid->down.pdx > * > > > 1.5; > > > - // FIXME: > 500, < 0.7, * 1.5 - probably > > > should be config > > > - if (abs(sid->down.dy) > 500 && (dtt < > 0.7) && > > > + sid->down.dx += (double)sid->down.pdx > * > > > _elm_config->thumbscroll_acceleration_weight; > > > + if (abs(sid->down.dy) > > > > _elm_config->thumbscroll_acceleration_threshold && > > > + (dtt < > > > _elm_config->thumbscroll_acceleration_time_limit) && > > > (((sid->down.dy > 0) && > (sid->down.pdy > > > > 0)) || > > > ((sid->down.dy < 0) && (sid->down.pdy > < > > > 0)))) > > > if (py > miny && py < my) > > > - sid->down.dy += (double)sid->down.pdy > * > > > 1.5; > > > - // FIXME: > 500, < 0.7, * 1.5 - probably > > > should be config > > > + { > > > + sid->down.dy += (double)sid->down.pdy > * > > > _elm_config->thumbscroll_acceleration_weight; > > > + } > > > sid->down.pdx = sid->down.dx; > > > sid->down.pdy = sid->down.dy; > > > ox = -sid->down.dx; > > > diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h > > > index 73d9ca0..dd4481a 100644 > > > --- a/src/lib/elm_priv.h > > > +++ b/src/lib/elm_priv.h > > > @@ -163,6 +163,9 @@ struct _Elm_Config > > > double thumbscroll_momentum_threshold; > > > double thumbscroll_friction; > > > double thumbscroll_bounce_friction; > > > + double thumbscroll_acceleration_threshold; > > > + double thumbscroll_acceleration_time_limit; > > > + double thumbscroll_acceleration_weight; > > > double page_scroll_friction; > > > double bring_in_scroll_friction; > > > double zoom_friction; > > > > > > -- > > > > > > > Thanks. > > > > Daniel Juyung Seo (SeoZ) > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > Precog is a next-generation analytics platform capable of advanced > > > analytics on semi-structured data. The platform includes APIs for > building > > > apps and a phenomenal toolset for data science. Developers can use > > > our toolset for easy data analysis & visualization. Get a free account! > > > http://www2.precog.com/precogplatform/slashdotnewsletter > > > > > > ------------------------------------------------------------------------------ > > Precog is a next-generation analytics platform capable of advanced > > analytics on semi-structured data. The platform includes APIs for > building > > apps and a phenomenal toolset for data science. Developers can use > > our toolset for easy data analysis & visualization. Get a free account! > > http://www2.precog.com/precogplatform/slashdotnewsletter > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > -- > ------------- Codito, ergo sum - "I code, therefore I am" -------------- > The Rasterman (Carsten Haitzler) ras...@rasterman.com > > ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel