

In this example, we add two images to a canvas, each one having a quarter of the canvas' size, positioned on the top left and bottom right corners, respectively\+: 
\begin{DoxyCodeInclude}
   d.img1 = \hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.img1, valid\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img1);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s'. error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                valid\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        fprintf(stdout,
                \textcolor{stringliteral}{"loaded image '%s' with succes! error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                valid\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));

        evas\_object\_move(d.img1, 3, 3);
        evas\_object\_image\_fill\_set(d.img1, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img1, WIDTH / 2, HEIGHT / 2);
        \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.img1);

        evas\_object\_focus\_set(d.bg, \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
        \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}(
          d.bg, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa336b86bad4f145f84c155e4922335584}{EVAS\_CALLBACK\_KEY\_DOWN}, \_on\_keydown, NULL);
     \}

   \textcolor{comment}{/* this is a border around the image above, here just to emphasize}
\textcolor{comment}{    * its geometry */}
   d.border = \hyperlink{group__Evas__Object__Image_ga0e8cb83d31d02bf583c75925b7cd14d7}{evas\_object\_image\_filled\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.border, border\_img\_path, NULL);
   evas\_object\_image\_border\_set(d.border, 3, 3, 3, 3);
   evas\_object\_image\_border\_center\_fill\_set(d.border, \hyperlink{Evas__Common_8h_a4a05f0fd82f51c6b330e349457cdc7e2a2ad856ac6aab5e2659c3a584a37aec70}{EVAS\_BORDER\_FILL\_NONE});

   evas\_object\_move(d.border, 0, 0);
   evas\_object\_resize(d.border, (WIDTH / 2) + 6, (HEIGHT / 2) + 6);
   \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.border);

   \textcolor{comment}{/* image loading will fail for this one -- unless one cheats and}
\textcolor{comment}{    * puts a valid image on that path */}
   d.img2 = \hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.img2, bogus\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img2);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s': error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                bogus\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        evas\_object\_move(d.img2, WIDTH / 2, HEIGHT / 2);
        evas\_object\_image\_fill\_set(d.img2, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img2, WIDTH / 2, HEIGHT / 2);
        \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.img2);
     \}

   fprintf(stdout, commands);
   \hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}();

\end{DoxyCodeInclude}
 See there is a border image around the top left one, {\bfseries which is the one that should be displayed}. The other one will (on purpose) fail to load, because we set a wrong file path as image source on it\+:  
\begin{DoxyCodeInclude}
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *valid\_path = PACKAGE\_EXAMPLES\_DIR \textcolor{stringliteral}{"/enlightenment.png"};
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *bogus\_path = \textcolor{stringliteral}{"/tmp/non-existent-220986.png"};

\end{DoxyCodeInclude}
 This is how one is supposed to test for success when binding source images to image objects\+: evas\+\_\+object\+\_\+image\+\_\+load\+\_\+error\+\_\+get(), followed by \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\+\_\+load\+\_\+error\+\_\+str()}, if one wants to pretty print/log the error. We'll talk about the border image further.

To interact with the program, there's a command line interface. A help string can be asked for with the 'h' key\+:  
\begin{DoxyCodeInclude}
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *commands = \(\backslash\)
  \textcolor{stringliteral}{"commands are:\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tx - change image's x fill coordinate\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ty - change image's y fill coordinate\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tw - change image's w fill size\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)te - change image's h fill size\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tf - toggle image filled property (overrides fill)\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ta - toggle image's alpha channel usage\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tm - toggle border's smooth scaling\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tt - change border's thickness\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tb - change border's center region aspect\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tc - change border's scaling factor\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ts - print image's fill property status\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)th - print help\(\backslash\)n"};

\end{DoxyCodeInclude}
 The first four commands will change the top left images's {\bfseries fill} property values, which dictate how the source image (Enlightenment's logo) is to be displayed through the image object's area. Experiment with those switches until you get the idea of evas\+\_\+object\+\_\+fill\+\_\+set().

The 'f' command will toggle that image's \char`\"{}filled\char`\"{} property, which is whether it should track its size and set the fill one to fit the object's boundaries perfectly (stretching). Note that this command and the four above it will conflict\+: in real usage one would use one or other ways of setting an image object's viewport with regard to its image source.

There are four commands which deal with the border image. This red frame is there to illustrate {\bfseries image borders}. The image source for the border is a solid red rectangle, with a transparent {\bfseries rectangular} area in its middle. See how we use it to get a 3 pixel wide frame with {\ttfamily evas\+\_\+object\+\_\+image\+\_\+border\+\_\+set(d.\+border, 3, 3, 3, 3)}. To finish the effect of showing it as a border, we issue {\ttfamily evas\+\_\+object\+\_\+image\+\_\+border\+\_\+center\+\_\+fill\+\_\+set(d.\+border, E\+V\+A\+S\+\_\+\+B\+O\+R\+D\+E\+R\+\_\+\+F\+I\+L\+L\+\_\+\+N\+O\+N\+E)}.

Use 't' to change the border's thickness. 'b' will change the border image's center region rendering schema\+: either a hole (no rendering), blending (see the original transparent area, in this case) or solid (the transparent area gets filled). Finally, 'c' will change the border's scaling factor.

While you have the border in 'blending mode', test the command 'm'\+: it will set whether to use or not smooth scaling on the border's source image. Since the image is small originally (30 x 30), we're obviously up-\/scaling it (except the border pixels, do you remember?). With this last switch, you'll either see the transparent shape in the middle flat (no smoothing) or blurry (smoothed).

The full example follows.


\begin{DoxyCodeInclude}

\textcolor{preprocessor}{#ifdef HAVE\_CONFIG\_H}
\textcolor{preprocessor}{#include "config.h"}
\textcolor{preprocessor}{#else}
\textcolor{preprocessor}{#define PACKAGE\_EXAMPLES\_DIR "."}
\textcolor{preprocessor}{#endif}

\textcolor{preprocessor}{#include <Ecore.h>}
\textcolor{preprocessor}{#include <\hyperlink{Ecore__Evas_8h}{Ecore\_Evas.h}>}
\textcolor{preprocessor}{#include <stdio.h>}
\textcolor{preprocessor}{#include <errno.h>}

\textcolor{preprocessor}{#define WIDTH  (320)}
\textcolor{preprocessor}{#define HEIGHT (240)}

\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *border\_img\_path = PACKAGE\_EXAMPLES\_DIR \textcolor{stringliteral}{"/red.png"};
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *valid\_path = PACKAGE\_EXAMPLES\_DIR \textcolor{stringliteral}{"/enlightenment.png"};
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *bogus\_path = \textcolor{stringliteral}{"/tmp/non-existent-220986.png"};
\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *commands = \(\backslash\)
  \textcolor{stringliteral}{"commands are:\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tx - change image's x fill coordinate\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ty - change image's y fill coordinate\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tw - change image's w fill size\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)te - change image's h fill size\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tf - toggle image filled property (overrides fill)\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ta - toggle image's alpha channel usage\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tm - toggle border's smooth scaling\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tt - change border's thickness\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tb - change border's center region aspect\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)tc - change border's scaling factor\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)ts - print image's fill property status\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)th - print help\(\backslash\)n"};

\textcolor{keyword}{struct }test\_data
\{
   Ecore\_Evas  *ee;
   \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas;
   \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *img1, *img2, *bg, *border;
\};

\textcolor{keyword}{static} \textcolor{keyword}{struct }test\_data d = \{0\};

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_destroy(Ecore\_Evas *ee EINA\_UNUSED)
\{
   \hyperlink{group__Ecore__Main__Loop__Group_ga95cf8e97dff0716433c2c5474d606a98}{ecore\_main\_loop\_quit}();
\}

\textcolor{comment}{/* here just to keep our example's window size and background image's}
\textcolor{comment}{ * size in synchrony */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_canvas\_resize\_cb(Ecore\_Evas *ee)
\{
   \textcolor{keywordtype}{int} w, h;

   \hyperlink{group__Ecore__Evas__Group_ga931aadf4603731e73e8a84e4b14f1493}{ecore\_evas\_geometry\_get}(ee, NULL, NULL, &w, &h);
   evas\_object\_resize(d.bg, w, h);
\}

\textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *
\_border\_fill\_mode\_to\_str(\hyperlink{Evas__Common_8h_ac50ecec5a0da68d3931f59006d1e4533}{Evas\_Border\_Fill\_Mode} mode)
\{
   \textcolor{keywordflow}{switch} (mode)
     \{
      \textcolor{keywordflow}{case} \hyperlink{Evas__Common_8h_a4a05f0fd82f51c6b330e349457cdc7e2a2ad856ac6aab5e2659c3a584a37aec70}{EVAS\_BORDER\_FILL\_NONE}:
        \textcolor{keywordflow}{return} \textcolor{stringliteral}{"none"};

      \textcolor{keywordflow}{case} \hyperlink{Evas__Common_8h_a4a05f0fd82f51c6b330e349457cdc7e2a712fa943763dc39ab49c66b9d0182a73}{EVAS\_BORDER\_FILL\_DEFAULT}:
        \textcolor{keywordflow}{return} \textcolor{stringliteral}{"default"};

      \textcolor{keywordflow}{case} \hyperlink{Evas__Common_8h_a4a05f0fd82f51c6b330e349457cdc7e2ab85dc4cffd8ce11305df0d3857f0799a}{EVAS\_BORDER\_FILL\_SOLID}:
        \textcolor{keywordflow}{return} \textcolor{stringliteral}{"solid"};

      \textcolor{keywordflow}{default}:
        \textcolor{keywordflow}{return} \textcolor{stringliteral}{"invalid"};
     \}
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_keydown(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
            \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas EINA\_UNUSED,
            \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
            \textcolor{keywordtype}{void}        *einfo)
\{
   \hyperlink{struct__Evas__Event__Key__Down}{Evas\_Event\_Key\_Down} *ev = einfo;

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"h"}) == 0) \textcolor{comment}{/* print help */}
     \{
        fprintf(stdout, commands);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"m"}) == 0) \textcolor{comment}{/* toggle border image's smooth scaling */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} smooth\_scale = \hyperlink{group__Evas__Object__Image_gac0177597371f246ac377782fcc59c5be}{evas\_object\_image\_smooth\_scale\_get}
      (d.border);

        \hyperlink{group__Evas__Object__Image_gaf79e692448eb80c39da1fd60f8db5dda}{evas\_object\_image\_smooth\_scale\_set}(d.border, !smooth\_scale);

        fprintf(stdout, \textcolor{stringliteral}{"Image's border is now %s smooth scaling\(\backslash\)n"},
                smooth\_scale ? \textcolor{stringliteral}{"without"} : \textcolor{stringliteral}{"with"});

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"t"}) == 0) \textcolor{comment}{/* change border's thickness */}
     \{
        \textcolor{keywordtype}{int} l, r, t, b;

        evas\_object\_image\_border\_get(d.border, &l, &r, &t, &b);

        l = (l + 3) % 9;
        r = (r + 3) % 9;
        t = (t + 3) % 9;
        b = (b + 3) % 9;

        evas\_object\_image\_border\_set(d.border, l, r, t, b);

        fprintf(stdout, \textcolor{stringliteral}{"Image's border thickness is now %d\(\backslash\)n"}, l);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"c"}) == 0) \textcolor{comment}{/* change border's scaling factor */}
     \{
        \textcolor{keywordtype}{double} scale = evas\_object\_image\_border\_scale\_get(d.border);

        scale *= 2;
        \textcolor{keywordflow}{if} (scale > 4.0) scale = 1.0;

        evas\_object\_image\_border\_scale\_set(d.border, scale);

        fprintf(stdout, \textcolor{stringliteral}{"Image's border scaling factor is now %f\(\backslash\)n"}, scale);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"b"}) == 0) \textcolor{comment}{/* change border's center}
\textcolor{comment}{                                       * region's aspect */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} fill = \(\backslash\)
          evas\_object\_image\_border\_center\_fill\_get(d.border);

        fill = (fill + 1) % 3;

        evas\_object\_image\_border\_center\_fill\_set(d.border, fill);

        fprintf(stdout, \textcolor{stringliteral}{"Image's border center region aspect is now \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                \_border\_fill\_mode\_to\_str(fill));

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"a"}) == 0) \textcolor{comment}{/* toggle alpha channel usage */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} alpha = evas\_object\_image\_alpha\_get(d.img1);

        evas\_object\_image\_alpha\_set(d.img1, !alpha);

        fprintf(stdout, \textcolor{stringliteral}{"Image's alpha channel is now %s\(\backslash\)n"},
                alpha ? \textcolor{stringliteral}{"off"} : \textcolor{stringliteral}{"on"});

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"f"}) == 0) \textcolor{comment}{/* toggle filled property */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} filled = evas\_object\_image\_filled\_get(d.img1);

        evas\_object\_image\_filled\_set(d.img1, !filled);

        fprintf(stdout, \textcolor{stringliteral}{"Image's x filled property is now %s\(\backslash\)n"},
                filled ? \textcolor{stringliteral}{"off"} : \textcolor{stringliteral}{"on"});

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"x"}) == 0) \textcolor{comment}{/* change x fill coordinate */}
     \{
        \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord} x, y, w, h;

        evas\_object\_image\_fill\_get(d.img1, &x, &y, &w, &h);
        x = (x + 20) % (WIDTH / 2);
        evas\_object\_image\_fill\_set(d.img1, x, y, w, h);

        fprintf(stdout, \textcolor{stringliteral}{"Image's x fill coordinate changed to %d\(\backslash\)n"}, x);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"y"}) == 0) \textcolor{comment}{/* change y fill coordinate */}
     \{
        \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord} x, y, w, h;

        evas\_object\_image\_fill\_get(d.img1, &x, &y, &w, &h);
        y = (y + 20) % (HEIGHT / 2);
        evas\_object\_image\_fill\_set(d.img1, x, y, w, h);

        fprintf(stdout, \textcolor{stringliteral}{"Image's y fill coordinate changed to %d\(\backslash\)n"}, y);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"w"}) == 0) \textcolor{comment}{/* change w fill size */}
     \{
        \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord} x, y, w, h;

        evas\_object\_image\_fill\_get(d.img1, &x, &y, &w, &h);
        \textcolor{keywordflow}{if} (w == (WIDTH / 4)) w = (WIDTH / 2);
        \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (w == WIDTH / 2) w = WIDTH;
        \textcolor{keywordflow}{else} w = (WIDTH / 4);
        evas\_object\_image\_fill\_set(d.img1, x, y, w, h);

        fprintf(stdout, \textcolor{stringliteral}{"Image's w fill size changed to %d\(\backslash\)n"}, w);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"e"}) == 0) \textcolor{comment}{/* change h fill size */}
     \{
        \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord} x, y, w, h;

        evas\_object\_image\_fill\_get(d.img1, &x, &y, &w, &h);
        \textcolor{keywordflow}{if} (h == (HEIGHT / 4)) h = (HEIGHT / 2);
        \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (h == HEIGHT / 2) h = HEIGHT;
        \textcolor{keywordflow}{else} h = (HEIGHT / 4);
        evas\_object\_image\_fill\_set(d.img1, x, y, w, h);

        fprintf(stdout, \textcolor{stringliteral}{"Image's h fill size changed to %d\(\backslash\)n"}, h);

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"s"}) == 0) \textcolor{comment}{/* status */}
     \{
        \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\_Coord} x, y, w, h;

        evas\_object\_image\_fill\_get(d.img1, &x, &y, &w, &h);

        fprintf(stdout, \textcolor{stringliteral}{"Image has fill properties set to: %d, %d, %d, %d\(\backslash\)n"},
                x, y, w, h);

        \textcolor{keywordflow}{return};
     \}
\}

\textcolor{keywordtype}{int}
main(\textcolor{keywordtype}{void})
\{
   \textcolor{keywordtype}{int} err;

   \textcolor{keywordflow}{if} (!\hyperlink{group__Ecore__Evas__Group_ga32ddbb6457033ad435a177eb0c4fe235}{ecore\_evas\_init}())
     \textcolor{keywordflow}{return} EXIT\_FAILURE;

   \textcolor{comment}{/* this will give you a window with an Evas canvas under the first}
\textcolor{comment}{    * engine available */}
   d.ee = \hyperlink{group__Ecore__Evas__Group_gac7f2cdbcb79635c34317c1183dd04cb0}{ecore\_evas\_new}(NULL, 10, 10, WIDTH, HEIGHT, NULL);
   \textcolor{keywordflow}{if} (!d.ee)
     \textcolor{keywordflow}{goto} error;

   \hyperlink{group__Ecore__Evas__Group_ga3680b5c89157167318192157a5d24ec4}{ecore\_evas\_callback\_destroy\_set}(d.ee, \_on\_destroy);
   \hyperlink{group__Ecore__Evas__Group_gaac67f679c9027059a34519fbdea360df}{ecore\_evas\_callback\_resize\_set}(d.ee, \_canvas\_resize\_cb);
   \hyperlink{group__Ecore__Evas__Group_ga4953047ff97d4f1b0d75a7d513d4f317}{ecore\_evas\_show}(d.ee);

   \textcolor{comment}{/* the canvas pointer, de facto */}
   d.evas = \hyperlink{group__Ecore__Evas__Group_ga75a7cc694b6069e78df47dab0b0f2d20}{ecore\_evas\_get}(d.ee);

   d.bg = \hyperlink{group__Evas__Object__Rectangle_ga4d80fc32ad1cac28428cebd65d746751}{evas\_object\_rectangle\_add}(d.evas);
   \hyperlink{group__Evas__Object__Group__Basic_gae34bdcfd7f5100151f6ea8ef4a392949}{evas\_object\_color\_set}(d.bg, 255, 255, 255, 255); \textcolor{comment}{/* white bg */}
   evas\_object\_move(d.bg, 0, 0); \textcolor{comment}{/* at canvas' origin */}
   evas\_object\_resize(d.bg, WIDTH, HEIGHT); \textcolor{comment}{/* covers full canvas */}
   \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.bg);

   d.img1 = \hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.img1, valid\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img1);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s'. error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                valid\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        fprintf(stdout,
                \textcolor{stringliteral}{"loaded image '%s' with succes! error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                valid\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));

        evas\_object\_move(d.img1, 3, 3);
        evas\_object\_image\_fill\_set(d.img1, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img1, WIDTH / 2, HEIGHT / 2);
        \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.img1);

        evas\_object\_focus\_set(d.bg, \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
        \hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}(
          d.bg, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa336b86bad4f145f84c155e4922335584}{EVAS\_CALLBACK\_KEY\_DOWN}, \_on\_keydown, NULL);
     \}

   \textcolor{comment}{/* this is a border around the image above, here just to emphasize}
\textcolor{comment}{    * its geometry */}
   d.border = \hyperlink{group__Evas__Object__Image_ga0e8cb83d31d02bf583c75925b7cd14d7}{evas\_object\_image\_filled\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.border, border\_img\_path, NULL);
   evas\_object\_image\_border\_set(d.border, 3, 3, 3, 3);
   evas\_object\_image\_border\_center\_fill\_set(d.border, \hyperlink{Evas__Common_8h_a4a05f0fd82f51c6b330e349457cdc7e2a2ad856ac6aab5e2659c3a584a37aec70}{EVAS\_BORDER\_FILL\_NONE});

   evas\_object\_move(d.border, 0, 0);
   evas\_object\_resize(d.border, (WIDTH / 2) + 6, (HEIGHT / 2) + 6);
   \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.border);

   \textcolor{comment}{/* image loading will fail for this one -- unless one cheats and}
\textcolor{comment}{    * puts a valid image on that path */}
   d.img2 = \hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}(d.evas);
   \hyperlink{group__Evas__Object__Image_gac27fd0ceabe5f56607b7a86d71577df1}{evas\_object\_image\_file\_set}(d.img2, bogus\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img2);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s': error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                bogus\_path, \hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        evas\_object\_move(d.img2, WIDTH / 2, HEIGHT / 2);
        evas\_object\_image\_fill\_set(d.img2, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img2, WIDTH / 2, HEIGHT / 2);
        \hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}(d.img2);
     \}

   fprintf(stdout, commands);
   \hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}();

   \hyperlink{group__Ecore__Evas__Group_gad3ec61f2aa03df4d3dbfd0d311e0c8dc}{ecore\_evas\_free}(d.ee);
   \hyperlink{group__Ecore__Evas__Group_gab8fa311077f749190c9b622f672b2214}{ecore\_evas\_shutdown}();
   \textcolor{keywordflow}{return} 0;

error:
   fprintf(stderr, \textcolor{stringliteral}{"you got to have at least one evas engine built and linked"}
                   \textcolor{stringliteral}{" up to ecore-evas for this example to run properly.\(\backslash\)n"});
   \hyperlink{group__Ecore__Evas__Group_gab8fa311077f749190c9b622f672b2214}{ecore\_evas\_shutdown}();
   \textcolor{keywordflow}{return} -1;
\}
\end{DoxyCodeInclude}
 