Eina_Bool longpressed : 1;
Eina_Bool on_hold : 1;
Eina_Bool paused : 1;
+ Eina_Bool do_region : 1;
};
struct _Pan
free(g);
return NULL;
}
- g->gw = (g->w + g->tsize - 1) / g->tsize;
- g->gh = (g->h + g->tsize - 1) / g->tsize;
+ if (wd->do_region)
+ {
+ g->gw = (g->w + g->tsize - 1) / g->tsize;
+ g->gh = (g->h + g->tsize - 1) / g->tsize;
+ }
+ else
+ {
+ g->gw = 1;
+ g->gh = 1;
+ }
g->grid = calloc(1, sizeof(Grid_Item) * g->gw * g->gh);
if (!g->grid)
{
}
*/
+static Eina_Bool
+_zoom_set(Evas_Object *obj, int w, int h)
+{
+ int z;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (wd->size.imw > wd->size.imh)
+ z = wd->size.imw / w;
+ else
+ z = wd->size.imh / h;
+ if (z >= 8) z = 8;
+ else if (z >= 4) z = 4;
+ else if (z >= 2) z = 2;
+ else z = 1;
+ wd->zoom = z;
+ wd->size.nw = w;
+ wd->size.nh = h;
+ return (z != wd->zoom);
+}
+
static void
_sizing_eval(Evas_Object *obj)
{
evas_object_image_load_scale_down_set(wd->img, 0);
evas_object_image_file_set(wd->img, wd->file, NULL);
evas_object_image_size_get(wd->img, &w, &h);
+ wd->do_region = evas_object_image_region_support_get(wd->img);
wd->size.imw = w;
wd->size.imh = h;
wd->size.w = wd->size.imw / wd->zoom;
Eina_List *l;
Grid *g, *g_zoom = NULL;
Evas_Coord pw, ph, rx, ry, rw, rh;
- int z;
int zoom_changed = 0, started = 0;
Ecore_Animator *an;
if (!wd) return;
{
pw = rw;
}
- if (wd->size.imw > wd->size.imh)
- z = wd->size.imw / pw;
- else
- z = wd->size.imh / ph;
- if (z >= 8) z = 8;
- else if (z >= 4) z = 4;
- else if (z >= 2) z = 2;
- else z = 1;
- if (z != wd->zoom) zoom_changed = 1;
- wd->zoom = z;
- wd->size.nw = pw;
- wd->size.nh = ph;
+ if (_zoom_set(obj, pw, ph))
+ zoom_changed = 1;
}
}
else if (wd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL)
{
pw = rw;
}
- if (wd->size.imw > wd->size.imh)
- z = wd->size.imw / pw;
- else
- z = wd->size.imh / ph;
- if (z >= 8) z = 8;
- else if (z >= 4) z = 4;
- else if (z >= 2) z = 2;
- else z = 1;
- if (z != wd->zoom) zoom_changed = 1;
- wd->zoom = z;
- wd->size.nw = pw;
- wd->size.nh = ph;
+ if (_zoom_set(obj, pw, ph))
+ zoom_changed = 1;
}
}
else if (wd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN)
}
else
pw = rw;
- if (wd->size.imw > wd->size.imh)
- z = wd->size.imw / pw;
- else
- z = wd->size.imh / ph;
- if (z != wd->zoom) zoom_changed = 1;
- wd->zoom = z;
- wd->size.nw = pw;
- wd->size.nh = ph;
+ if (_zoom_set(obj, pw, ph))
+ zoom_changed = 1;
}
}
if (wd->main_load_pending)