Photocam
PUBLISHED
This feature is supported in mobile applications only.
The photocam component displays high resolution photos taken from digital cameras. It provides a way to zoom the photo, load it quickly, and fit it nicely on the screen. It is optimized for the .jpeg
image format and has a low memory footprint.
The photocam component implements the scroller interface, which means that scroller functions can be used with the photocam component.
For more information, see the Photocam [1] API.
Figure: Photocam hierarchy
Adding a Photocam Component
To create a photocam component, use the elm_photocam_add()
function. You can set the image file with the elm_photocam_file_set()
function.
Evas_Object *photocam; photocam = elm_photocam_add(win); elm_photocam_file_set(photocam, "/tmp/photo.jpeg");
Using the Photocam Zoom
To use the photocam zoom:
-
Set the zoom mode. You can select between 2 automatic and 1 manual zoom mode.
To set the zoom mode to manual with a double zoom:
elm_photocam_zoom_mode_set(photocam, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); elm_photocam_zoom_set(photocam, 2.0);
If you use the
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT
mode, the photo fits exactly inside the scroll frame with no pixels outside the region. In theELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL
mode, all the pixels of the photocam component are filled. -
Activate the multi-touch zoom by enabling gestures:
elm_photocam_gesture_enabled_set(photocam, EINA_TRUE);
-
Zoom in on a specific region.
To zoom in on a region starting at the coordinates (200 x 200) with a width of 400 px and a height of 300 px:
elm_photocam_image_region_bring_in(photocam, 200, 200, 400, 300);
Using the Photocam Callbacks
To receive notifications about the photocam events, listen for the following signals:
clicked
: The photo is clicked without dragging.press
: The photo is pressed.longpressed
: The photo is pressed down for a long time without dragging.clicked,double
: The photo is double-clicked.load
: The photo load begins.loaded
: The image file load is complete for the first view (a low resolution blurry version).load,detail
: A photo detailed data load begins.loaded,detail
: The image file load is complete for the detailed image data (a full resolution version).zoom,start
: The zoom animation starts.zoom,stop
: The zoom animation stops.zoom,change
: The zoom is changed when using an auto zoom mode.scroll
: The content is scrolled.scroll,anim,start
: The scrolling animation starts.scroll,anim,stop
: The scrolling animation stops.scroll,drag,start
: Dragging the content starts.scroll,drag,stop
: Dragging the content stops.
In all cases, the event_info
callback parameter is NULL
.
To register and define a callback for the loaded
signal:
void message_port_cb(int local_port_id, const char *remote_app_id, bundle *message) { evas_object_smart_callback_add(photocam, "loaded", loaded_cb, data); } /* Callback for the "loaded" signal */ /* Called when the photo file has been loaded in a low resolution */ void loaded_cb(void *data, Evas_Object *obj, void *event_info) { dlog_print(DLOG_INFO, LOG_TAG, "The photo has been loaded\n"); }