Ephoto: If image is smaller than viewer, zoom 1:1 instead of fit.
This commit is contained in:
parent
ede263f65a
commit
9e204bd63b
|
@ -32,6 +32,7 @@ struct _Ephoto_Viewer
|
||||||
double zoom;
|
double zoom;
|
||||||
Eina_Bool fit:1;
|
Eina_Bool fit:1;
|
||||||
Eina_Bool cropping:1;
|
Eina_Bool cropping:1;
|
||||||
|
Eina_Bool zoom_first:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _zoom_set(Ephoto_Single_Browser *sb, double zoom);
|
static void _zoom_set(Ephoto_Single_Browser *sb, double zoom);
|
||||||
|
@ -112,6 +113,7 @@ _viewer_add(Evas_Object *parent, const char *path)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(v, NULL);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(v, NULL);
|
||||||
|
v->zoom_first = EINA_TRUE;
|
||||||
|
|
||||||
Evas_Coord w, h;
|
Evas_Coord w, h;
|
||||||
const char *group = NULL;
|
const char *group = NULL;
|
||||||
|
@ -222,7 +224,29 @@ _viewer_zoom_fit_apply(Ephoto_Viewer *v)
|
||||||
static void
|
static void
|
||||||
_viewer_resized(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_viewer_resized(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
_viewer_zoom_fit_apply(data);
|
Ephoto_Viewer *v = data;
|
||||||
|
if (v->zoom_first)
|
||||||
|
{
|
||||||
|
Evas_Coord cw, ch, iw, ih;
|
||||||
|
Evas_Object *image;
|
||||||
|
|
||||||
|
if (v->cropping)
|
||||||
|
image = evas_object_data_get(v->image, "image");
|
||||||
|
else
|
||||||
|
image = v->image;
|
||||||
|
evas_object_geometry_get(v->scroller, NULL, NULL, &cw, &ch);
|
||||||
|
evas_object_image_size_get(elm_image_object_get(image), &iw, &ih);
|
||||||
|
|
||||||
|
if ((cw <= 0) || (ch <= 0)) return; /* object still not resized */
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN(iw <= 0);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN(ih <= 0);
|
||||||
|
if (iw < cw && ih < ch)
|
||||||
|
_viewer_zoom_apply(v, 1);
|
||||||
|
else
|
||||||
|
_viewer_zoom_fit_apply(v);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_viewer_zoom_fit_apply(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -657,6 +681,8 @@ static void
|
||||||
_zoom_in_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_zoom_in_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Single_Browser *sb = data;
|
Ephoto_Single_Browser *sb = data;
|
||||||
|
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
|
||||||
|
v->zoom_first = EINA_FALSE;
|
||||||
_zoom_in(sb);
|
_zoom_in(sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -664,6 +690,8 @@ static void
|
||||||
_zoom_out_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_zoom_out_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Single_Browser *sb = data;
|
Ephoto_Single_Browser *sb = data;
|
||||||
|
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
|
||||||
|
v->zoom_first = EINA_FALSE;
|
||||||
_zoom_out(sb);
|
_zoom_out(sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,6 +699,8 @@ static void
|
||||||
_zoom_1_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_zoom_1_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Single_Browser *sb = data;
|
Ephoto_Single_Browser *sb = data;
|
||||||
|
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
|
||||||
|
v->zoom_first = EINA_FALSE;
|
||||||
_zoom_set(sb, 1.0);
|
_zoom_set(sb, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,6 +708,15 @@ static void
|
||||||
_zoom_fit_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_zoom_fit_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Single_Browser *sb = data;
|
Ephoto_Single_Browser *sb = data;
|
||||||
|
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
|
||||||
|
Eina_Bool first_click;
|
||||||
|
if (v->zoom_first)
|
||||||
|
first_click = EINA_TRUE;
|
||||||
|
else
|
||||||
|
first_click = EINA_FALSE;
|
||||||
|
v->zoom_first = EINA_FALSE;
|
||||||
|
if (first_click)
|
||||||
|
v->fit = EINA_FALSE;
|
||||||
_zoom_fit(sb);
|
_zoom_fit(sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue