Tizen Native API
6.5
|
This example is as simple as possible. An image object will be added to the window over a white background, and set to be resizable together with the window. All the options set through the example will affect the behavior of this image.
We start with the code for creating a window and its background, and also add the code to write the path to the image that will be loaded:
int elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { Evas_Object *win, *image; char buf[PATH_MAX]; elm_app_info_set(elm_main, "elementary", "images/plant_01.jpg"); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_util_standard_add("image", "Image"); elm_win_autodel_set(win, EINA_TRUE); snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
Now we create the image object, and set that file to be loaded:
image = elm_image_add(win); if (!elm_image_file_set(image, buf, NULL)) { printf("error: could not load image \"%s\"\n", buf); return -1; }
We can now go setting our options.
elm_image_no_scale_set() is used just to set this value to true (we don't want to scale our image anyway, just resize it).
elm_image_resizable_set() is used to allow the image to be resized to a size smaller than the original one, but not to a size bigger than it.
elm_image_smooth_set() will disable the smooth scaling, so the scale algorithm used to scale the image to the new object size is going to be faster, but with a lower quality.
elm_image_orient_set() is used to flip the image around the (1, 0) (0, 1) diagonal.
elm_image_aspect_fixed_set() is used to keep the original aspect ratio of the image, even when the window is resized to another aspect ratio.
elm_image_fill_outside_set() is used to ensure that the image will fill the entire area available to it, even if keeping the aspect ratio. The image will overflow its width or height (any of them that is necessary) to the object area, instead of resizing the image down until it can fit entirely in this area.
elm_image_editable_set() is used just to cover the API, but won't affect this example since we are not using any copy & paste property.
This is the code for setting these options:
elm_image_no_scale_set(image, EINA_TRUE); elm_image_resizable_set(image, EINA_FALSE, EINA_TRUE); elm_image_smooth_set(image, EINA_FALSE); elm_image_orient_set(image, ELM_IMAGE_FLIP_HORIZONTAL); elm_image_aspect_fixed_set(image, EINA_TRUE); elm_image_fill_outside_set(image, EINA_TRUE); elm_image_editable_set(image, EINA_TRUE);
Now some last touches in our object size hints, window and background, to display this image properly:
evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, image); evas_object_show(image); evas_object_resize(win, 320, 320); evas_object_show(win); elm_run(); return 0; } ELM_MAIN()