It looks like wheel is working well in map test :)

Btw, can you check a warning?
>> elm_map.c: In function ‘elm_map_zoom_set’:
>> elm_map.c:3205: warning: ‘z’ may be used uninitialized in this function

Thanks.
Daniel Juyung Seo (SeoZ)

On Sat, May 7, 2011 at 3:32 PM, Enlightenment SVN
<[email protected]> wrote:
> Log:
> Elementary map:
>    > fix ZOOM_AUTO_FILL, FIT bug
>    > fix wheel bug  when paused is set
>
>
> Author:       gouache
> Date:         2011-05-06 23:32:34 -0700 (Fri, 06 May 2011)
> New Revision: 59257
> Trac:         http://trac.enlightenment.org/e/changeset/59257
>
> Modified:
>  trunk/elementary/src/bin/test_map.c trunk/elementary/src/lib/elm_map.c
>
> Modified: trunk/elementary/src/bin/test_map.c
> ===================================================================
> --- trunk/elementary/src/bin/test_map.c 2011-05-07 00:31:17 UTC (rev 59256)
> +++ trunk/elementary/src/bin/test_map.c 2011-05-07 06:32:34 UTC (rev 59257)
> @@ -261,6 +261,35 @@
>  }
>
>  static void
> +map_show_seoul(void *data, Evas_Object *obj __UNUSED__, void *event_info 
> __UNUSED__)
> +{
> +   Eina_Bool b = elm_map_paused_get(data);
> +   elm_map_paused_set(data, EINA_TRUE);
> +   elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
> +   elm_map_geo_region_show(data, 126.977969, 37.566535);
> +   elm_map_zoom_set(data, 18);
> +   elm_map_paused_set(data, b);
> +}
> +
> +static void
> +map_bring_seoul(void *data, Evas_Object *obj __UNUSED__, void *event_info 
> __UNUSED__)
> +{
> +   elm_map_geo_region_bring_in(data, 126.977969, 37.566535);
> +}
> +
> +static void
> +map_paused_set(void *data, Evas_Object *obj __UNUSED__, void *event_info 
> __UNUSED__)
> +{
> +   elm_map_paused_set(data, EINA_TRUE);
> +}
> +
> +static void
> +map_paused_unset(void *data, Evas_Object *obj __UNUSED__, void *event_info 
> __UNUSED__)
> +{
> +   elm_map_paused_set(data, EINA_FALSE);
> +}
> +
> +static void
>  map_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *event_info 
> __UNUSED__)
>  {
>    int zoom;
> @@ -520,6 +549,10 @@
>         menu = elm_menu_add(obj);
>         item = elm_menu_item_add(menu, NULL, NULL, "Source", NULL, NULL);
>         _populate(data, item);
> +        elm_menu_item_add(menu, NULL, NULL, "Show Seoul", map_show_seoul, 
> data);
> +        elm_menu_item_add(menu, NULL, NULL, "Bring Seoul", map_bring_seoul, 
> data);
> +        elm_menu_item_add(menu, NULL, NULL, "Paused Set", map_paused_set, 
> data);
> +        elm_menu_item_add(menu, NULL, NULL, "Paused Unset", 
> map_paused_unset, data);
>         elm_menu_item_add(menu, NULL, NULL, "Zoom +", map_zoom_in, data);
>         elm_menu_item_add(menu, NULL, NULL, "Zoom -", map_zoom_out, data);
>         elm_menu_item_add(menu, NULL, NULL, "Zoom Fit", map_zoom_fit, data);
>
> Modified: trunk/elementary/src/lib/elm_map.c
> ===================================================================
> --- trunk/elementary/src/lib/elm_map.c  2011-05-07 00:31:17 UTC (rev 59256)
> +++ trunk/elementary/src/lib/elm_map.c  2011-05-07 06:32:34 UTC (rev 59257)
> @@ -401,6 +401,7 @@
>    Eina_List *map_sources_tab;
>    const char *source_name;
>    const char **source_names;
> +   Evas_Map *map;
>  };
>
>  struct _Pan
> @@ -745,15 +746,11 @@
>         wd->pinch.cy = wd->rotate.cy;
>      }
>
> -   Evas_Map *map = evas_map_new(4);
> -   if (!map) return;
> -
> -   evas_map_util_points_populate_from_object_full(map, obj, 0);
> -   evas_map_util_zoom(map, wd->pinch.level, wd->pinch.level, wd->pinch.cx, 
> wd->pinch.cy);
> -   evas_map_util_rotate(map, wd->rotate.d, wd->rotate.cx, wd->rotate.cy);
> +   evas_map_util_points_populate_from_object_full(wd->map, obj, 0);
> +   evas_map_util_zoom(wd->map, wd->pinch.level, wd->pinch.level, 
> wd->pinch.cx, wd->pinch.cy);
> +   evas_map_util_rotate(wd->map, wd->rotate.d, wd->rotate.cx, wd->rotate.cy);
>    evas_object_map_enable_set(obj, EINA_TRUE);
> -   evas_object_map_set(obj, map);
> -   evas_map_free(map);
> +   evas_object_map_set(obj, wd->map);
>  }
>
>  static void
> @@ -1477,24 +1474,6 @@
>      }
>  }
>
> -static void
> -_grid_raise(Grid *g)
> -{
> -   Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
> -   Eina_Matrixsparse_Cell *cell;
> -
> -   g->wd->size.w = g->w;
> -   g->wd->size.h = g->h;
> -
> -   EINA_ITERATOR_FOREACH(it, cell)
> -     {
> -        Grid_Item *gi = eina_matrixsparse_cell_data_get(cell);
> -        evas_object_raise(gi->img);
> -        //evas_object_raise(gi->txt);
> -     }
> -   eina_iterator_free(it);
> -}
> -
>  static Eina_Bool
>  _scr_timeout(void *data)
>  {
> @@ -1574,9 +1553,10 @@
>
>    if (!wd) return ECORE_CALLBACK_CANCEL;
>    if (wd->zoom_method == ZOOM_METHOD_IN) wd->t += 0.1 ;
> -   else if (wd->zoom_method == ZOOM_METHOD_OUT) wd->t -= 0.1;
> +   else if (wd->zoom_method == ZOOM_METHOD_OUT) wd->t -= 0.05;
>    else
>      {
> +        wd->zoom_animator = NULL;
>         zoom_do(obj);
>         return ECORE_CALLBACK_CANCEL;
>      }
> @@ -1880,6 +1860,8 @@
>    Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
>    Evas_Coord x, y, w, h;
>    float half_w, half_h;
> +
> +   if (!wd) return;
>    evas_object_geometry_get(data, &x, &y, &w, &h);
>    half_w = (float)w * 0.5;
>    half_h = (float)h * 0.5;
> @@ -1898,11 +1880,14 @@
>         if (wd->wheel_zoom >= PINCH_ZOOM_MAX) wd->wheel_zoom = PINCH_ZOOM_MAX;
>      }
>
> +   if (!wd->paused)
> +     {
>    wd->pinch.level = wd->wheel_zoom;
>    wd->pinch.cx = x + half_w;
>    wd->pinch.cy = y + half_h;
>    if (wd->calc_job) ecore_job_del(wd->calc_job);
>    wd->calc_job = ecore_job_add(_calc_job, wd);
> +     }
>
>    if (wd->wheel_timer) ecore_timer_del(wd->wheel_timer);
>    wd->wheel_timer = ecore_timer_add(0.35, _wheel_timer_cb, data);
> @@ -1927,13 +1912,22 @@
>    Widget_Data *wd = elm_widget_data_get(data);
>    int zoom;
>
> -   wd->wheel_timer = NULL;
> +   if (!wd)
> +     {
> +        wd->wheel_timer = NULL;
> +        return ECORE_CALLBACK_CANCEL;
> +     }
>    if (wd->zoom_method == ZOOM_METHOD_IN) zoom = (int)ceil(wd->wheel_zoom - 
> 1.0);
>    else if (wd->zoom_method == ZOOM_METHOD_OUT) zoom = (int)floor((-1.0 / 
> wd->wheel_zoom) + 1.0);
> -   else return ECORE_CALLBACK_CANCEL;
> +   else
> +     {
> +        wd->wheel_timer = NULL;
> +        return ECORE_CALLBACK_CANCEL;
> +     }
>    wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
>    elm_map_zoom_set(data, wd->zoom + zoom);
>    wd->wheel_zoom = 0.0;
> +   wd->wheel_timer = NULL;
>    return ECORE_CALLBACK_CANCEL;
>  }
>
> @@ -2027,6 +2021,7 @@
>           }
>      }
>
> +   if (wd->map) evas_map_free(wd->map);
>    if (wd->source_names) free(wd->source_names);
>    if (wd->calc_job) ecore_job_del(wd->calc_job);
>    if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
> @@ -2136,7 +2131,7 @@
>    minh = wd->size.h;
>    if (wd->resized)
>      {
> -        wd->resized = 0;
> +        wd->resized = EINA_FALSE;
>         if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
>           {
>              double tz = wd->zoom;
> @@ -2237,7 +2232,7 @@
>    if (!sd) return;
>    evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
>    if ((ow == w) && (oh == h)) return;
> -   sd->wd->resized = 1;
> +   sd->wd->resized = EINA_TRUE;
>    if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
>    sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
>  }
> @@ -2763,7 +2758,7 @@
>            attrs = eina_simple_xml_tag_attributes_find(value, length);
>            if (attrs)
>              {
> -                if (!strncmp(value, NOMINATIM_RESULT, 
> sizeof(NOMINATIM_RESULT)-1)) dump->id = NAME_XML_NAME;
> +                if (!strncmp(value, NOMINATIM_RESULT, 
> sizeof(NOMINATIM_RESULT) - 1)) dump->id = NAME_XML_NAME;
>                 else dump->id = NAME_XML_NONE;
>
>                 eina_simple_xml_attributes_parse
> @@ -3097,6 +3092,8 @@
>    source_init(obj);
>
>    wd->obj = obj;
> +   wd->map = evas_map_new(4);
> +   if (!wd->map) return NULL;
>
>    wd->markers_max_num = 30;
>    wd->source_name = eina_stringshare_add("Mapnik");
> @@ -3156,7 +3153,6 @@
>    evas_object_show(wd->rect);
>    evas_object_color_set(wd->rect, 0, 0, 0, 0);
>
> -   wd->zoom = -1;
>    wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
>    wd->id = ((int)getpid() << 16) | idnum;
>    idnum++;
> @@ -3167,14 +3163,6 @@
>                              &minw, &minh);
>    evas_object_size_hint_min_set(obj, minw, minh);
>
> -   wd->paused = EINA_TRUE;
> -   elm_map_zoom_set(obj, 0);
> -   wd->paused = EINA_FALSE;
> -
> -   _sizing_eval(obj);
> -
> -   wd->calc_job = ecore_job_add(_calc_job, wd);
> -
>    wd->sep_maps_markers = 
> evas_object_rectangle_add(evas_object_evas_get(obj));
>    evas_object_smart_member_add(wd->sep_maps_markers, wd->pan_smart);
>
> @@ -3186,6 +3174,10 @@
>      {
>         ERR("Ecore must be built with curl support for the map widget!");
>      }
> +
> +   elm_map_zoom_set(obj, 0);
> +   _sizing_eval(obj);
> +
>    return obj;
>  }
>
> @@ -3231,6 +3223,7 @@
>    if ((wd->zoom - zoom) > 0) wd->zoom_method = ZOOM_METHOD_OUT;
>    else if ((wd->zoom - zoom) < 0) wd->zoom_method = ZOOM_METHOD_IN;
>    else wd->zoom_method = ZOOM_METHOD_NONE;
> +   if (wd->zoom != zoom ) zoom_changed = 1;
>    wd->zoom = zoom;
>    wd->size.ow = wd->size.w;
>    wd->size.oh = wd->size.h;
> @@ -3248,7 +3241,7 @@
>           }
>      }
>
> -   if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FIT)
> +   if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
>      {
>         int p2w, p2h;
>         int cumulw, cumulh;
> @@ -3271,54 +3264,21 @@
>           }
>         p2h--;
>
> -        if (p2w < p2h)
> -          z = p2w;
> -        else
> -          z = p2h;
> -
> -        wd->zoom = z;
> -     }
> -   else if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FILL)
> -     {
> -        int p2w, p2h;
> -        int cumulw, cumulh;
> -
> -        cumulw = wd->tsize;
> -        p2w = 0;
> -        while (cumulw <= rw)
> +        if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FIT)
>           {
> -             p2w++;
> -             cumulw *= 2;
> +             if (p2w < p2h) z = p2w;
> +             else z = p2h;
>           }
> -        p2w--;
> -
> -        cumulh = wd->tsize;
> -        p2h = 0;
> -        while (cumulh <= rh)
> +        else if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FILL)
>           {
> -             p2h++;
> -             cumulh *= 2;
> +             if (p2w > p2h) z = p2w;
> +             else z = p2h;
>           }
> -        p2h--;
> -
> -        if (p2w > p2h)
> -          z = p2w;
> -        else
> -          z = p2h;
> -
>         wd->zoom = z;
>      }
>    wd->size.nw = pow(2.0, wd->zoom) * wd->tsize;
>    wd->size.nh = pow(2.0, wd->zoom) * wd->tsize;
>
> -   EINA_LIST_FOREACH(wd->grids, l, g)
> -     {
> -        if (g->zoom == wd->zoom)
> -          {
> -             _grid_raise(g);
> -             goto done;
> -          }
> -     }
>    g = grid_create(obj);
>    if (g)
>      {
> @@ -3339,7 +3299,6 @@
>              free(g);
>           }
>      }
> -done:
>
>    wd->t = 1.0;
>    if ((wd->size.w > 0) && (wd->size.h > 0))
> @@ -3352,6 +3311,7 @@
>         wd->size.spos.x = 0.5;
>         wd->size.spos.y = 0.5;
>      }
> +
>    if (rw > wd->size.ow) wd->size.spos.x = 0.5;
>    if (rh > wd->size.oh) wd->size.spos.y = 0.5;
>    if (wd->size.spos.x > 1.0) wd->size.spos.x = 1.0;
> @@ -3360,6 +3320,8 @@
>    if (wd->paused)
>      {
>         zoom_do(obj);
> +        if (wd->calc_job) ecore_job_del(wd->calc_job);
> +        wd->calc_job = ecore_job_add(_calc_job, wd);
>      }
>    else
>      {
> @@ -3371,26 +3333,14 @@
>              started = 1;
>           }
>      }
> -   if (wd->zoom_animator)
> -     {
> -        if (!_zoom_anim(obj))
> -          {
> -             ecore_animator_del(wd->zoom_animator);
> -             wd->zoom_animator = NULL;
> -          }
> -     }
> -   if (wd->calc_job) ecore_job_del(wd->calc_job);
> -   wd->calc_job = ecore_job_add(_calc_job, wd);
> +
>    if (!wd->paused)
>      {
> -        if (started)
> -          evas_object_smart_callback_call(obj, SIG_ZOOM_START, NULL);
> -        if (!wd->zoom_animator)
> -          evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
> +        if (started) evas_object_smart_callback_call(obj, SIG_ZOOM_START, 
> NULL);
> +        if (!wd->zoom_animator) evas_object_smart_callback_call(obj, 
> SIG_ZOOM_STOP, NULL);
>      }
>
> -   if (zoom_changed)
> -     evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, NULL);
> +   if (zoom_changed) evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, 
> NULL);
>  }
>
>  /**
> @@ -3443,9 +3393,11 @@
>    if (!wd) return;
>    if (wd->mode == mode) return;
>    wd->mode = mode;
> +
> +   if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
>      {
> -        double tz = wd->zoom;
> -        wd->zoom = 0.0;
> +        int tz = wd->zoom;
> +        wd->zoom = 0;
>         elm_map_zoom_set(wd->obj, tz);
>      }
>  }
> @@ -3601,7 +3553,7 @@
>      {
>         if (wd->zoom_animator)
>           {
> -             ecore_animator_del(wd->zoom_animator);
> +             if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
>              wd->zoom_animator = NULL;
>              zoom_do(obj);
>              evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
>
>
> ------------------------------------------------------------------------------
> WhatsUp Gold - Download Free Network Management Software
> The most intuitive, comprehensive, and cost-effective network
> management toolset available today.  Delivers lowest initial
> acquisition cost and overall TCO of any competing solution.
> http://p.sf.net/sfu/whatsupgold-sd
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to