On Fri, 16 Jul 2010 13:20:18 +0900 Hyun Park <hyuny...@gmail.com> said:

> Thank you so much for your kind explanation. : )
> 
> > that only works in the 16bpp software enigne. unfortunately you will have
> to
> > live with argb8888 :) (it's better quality anyway!)

doesn't matter. evas will still have its images in argb8888. only the
software_16 engine will rendering in 16bpp. it's very limited in what it does.
i personally want to see it die. i do not suggest using it. evas will render
internally in 32bpp anyway unless you use the software_16 based engine and then
on copy to screen convert to 16bpp and dither, rotate etc. if the target screen
is 16bpp.

so keep your app using 24/32bpp. it will work no matter what the target uses
(even 32/24bpp, 18bpp, 16bpp, 15bpp, 12bpp, 8bpp, opengl etc. etc.).

> I'm now working on x86 host system and i have no problem now,
> but i'll port my application onto embedded system later. it supports 16bpp
> or 24bpp mode now... : (
> it means my application is able to output only 16bpp or 24bpp data to draw
> on evas image object.
> 
> What is the meaning of '16bpp software enigne' ?
> Does it mean that ELF libs need to be built kind of 16 bit mode or something
> to use this option?

it is a specific software engine that has its internally rendering code work in
16bpp, not 32bpp. you get a speedup as a result, but you lose quality
significantly. scaling doesn't support smooth scaling. the engine doesn't
implement lots of new engine features like evas_map etc. - the engine is
unmaintained and likely will cause bugs. i suggest not using it. this all
depends on the target SoC. i suggest 32bpp for any decent soc - in fact ANY
SoC. if your SoC does 24bpp it is a relatively new one - armv6 (arm11) or
better i guess. s3c6410? s5pc110? omap3xxx+? ... any of these or this class of
SoC will be find in 32bpp.

> What should i do to use this "EVAS_COLORSPACE_RGB565_A5P" colorspace option?

"don't" :)

> 2010/7/16 Carsten Haitzler <ras...@rasterman.com>
> 
> > On Thu, 15 Jul 2010 18:25:37 +0900 Hyun Park <hyuny...@gmail.com> said:
> >
> > > This sample code is perfect one that i was finding and I checked it works
> > > very well !  : )
> > >
> > > but I have one more question.
> > >      :
> > >    img = evas_object_image_filled_add(evas_object_evas_get(win));
> > >    elm_win_resize_object_add(win, img);
> > >    // tell evas that this image will have its content modified
> > dynamically
> > >    evas_object_image_content_hint_set(img,
> > EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
> > >    // tell evas that we want argb8888 (32bit color) colorspace per pixel
> > >    // i tried to chaned this to 16 bit rgb color space
> > >    evas_object_image_colorspace_set(img, EVAS_COLORSPACE_RGB565_A5P
> > > /*EVAS_COLORSPACE_ARGB8888*/);
> > >
> > >    // do this if you want the alpha channel to work (or fill it with 0xff
> > >    // if you don't. this helps optimise rendering)
> > >    evas_object_image_alpha_set(img, 1);
> > >    // tell evas the size in pixels of the image data
> > >    evas_object_image_size_set (img, 480, 640);   <<< i got "Aborted"
> > stdout
> > > around here!!!
> > >    evas_object_show(img);
> > >      :
> > >
> > > actually, i want to use 16bit coloer spaced evas object,
> > > but i got some abort error around "evas_object_image_size_set()" after
> > > changing. (EVAS_COLORSPACE_RGB565_A5P)
> > > sorry for that i could't find exact reason because i just traced some
> > logs
> > > using printf() now...
> >
> > that only works in the 16bpp software enigne. unfortunately you will have
> > to
> > live with argb8888 :) (it's better quality anyway!)
> >
> > > do you have any idea for this?
> > >
> > >
> > > 2010/7/15 Carsten Haitzler <ras...@rasterman.com>
> > >
> > > > On Thu, 15 Jul 2010 15:38:07 +0900 Hyun Park <hyuny...@gmail.com>
> > said:
> > > >
> > > > in efl, evas offers some basic object types. rectangle, image, text,
> > > > textblock,
> > > > polygon, line and smart object. all of these are basic rendering
> > > > primitives..
> > > > except smart objects. smart objects are "collectors" of other basic
> > object
> > > > types. they can collect images, text, or other smart objects together
> > in a
> > > > tree-like structure. smart objects are parents of children. children
> > can be
> > > > any
> > > > object type. edje objects are simply pre-made smart objects that
> > libedje
> > > > creates and fills with data from files etc. elementary objects are the
> > > > same.
> > > > each elm object is a smart object that contains more objects. what it
> > > > contains
> > > > and how they behave is determined by elementary, thus setting up
> > "policy".
> > > >
> > > > what you want is a very low-level feature. you want to get the image
> > buffer
> > > > of
> > > > an image object, play with its contents, then have that content updated
> > on
> > > > the
> > > > screen.
> > > >
> > > > going by your example below, you want a bg anyway. a background. leave
> > > > that,
> > > > BUT add an image object. like this:
> > > >
> > > >    win = elm_win_add(NULL, "my application", ELM_WIN_BASIC);
> > > >    elm_win_title_set(win, "my application");
> > > >    evas_object_smart_callback_add(win, "delete,request", win_del,
> > NULL);
> > > >
> > > >    bg = elm_bg_add(win);
> > > >    elm_bg_file_set(bg, "sky_03.jpg", NULL);
> > > >    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
> > > > EVAS_HINT_EXPAND);
> > > >    elm_win_resize_object_add(win, bg);
> > > >
> > > >     img = evas_object_image_filled_add(evas_object_evas_get(win));
> > > >    elm_win_resize_object_add(win, img);
> > > >    // tell evas that this image will have its content modified
> > dynamically
> > > >    evas_object_image_content_hint_set(img,
> > > > EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
> > > >    // tell evas that we want argb8888 (32bit color) colorspace per
> > pixel
> > > >    evas_object_image_colorspace_set(img, EVAS_COLORSPACE_ARGB8888);
> > > >    // do this if you want the alpha channel to work (or fill it with
> > 0xff
> > > >    // if you don't. this helps optimise rendering)
> > > >    evas_object_image_alpha_set(img, 1);
> > > >    // tell evas the size in pixels of the image data
> > > >    evas_object_image_size_set (img, 480, 640);
> > > >    evas_object_show(img);
> > > >
> > > >    // to modify/fill pixels do this:
> > > >    unsigned int *pixels, *p;
> > > >    int stirde, x, y;
> > > >    // get data - yes, we want to write to it
> > > >    pixels = evas_object_image_data_get(img, 1);
> > > >    // get stride. this is in pixel units. so 4 bytes (1 int)
> > > >    stride = evas_object_image_stride_get(img);
> > > >    // set all the pixels in the image. just fill pixel based on x & y
> > coord
> > > >    // with color values. notice we set alpha to 0xff (0xff000000). i
> > assume
> > > >    // you understand argb colorspace and pixel values here.
> > > >    for (y = 0; y < 640; y++) {
> > > >      // get p as the start of the pixel row - stride is the line length
> > > >      p = pixels + (y * stride);
> > > >      for (x = 0; x < 480; x++) {
> > > >        // set each pixel
> > > >        *p++ = 0xff000000 | ((y & 0xff) << 16) | (x & 0xff);
> > > >      }
> > > >    }
> > > >    // put the data back as we are now done with it
> > > >    evas_object_image_data_set(img, pixels);
> > > >    // tell evas which area was changed in the pixels. here we tell it
> > all
> > > > of
> > > >    // the pixels were changed
> > > >    evas_object_image_data_update_add(img, 0, 0, 640, 480);
> > > >
> > > > repeat as needed filling/modifying any pixel in the image. you can
> > modify
> > > > 1, or
> > > > small rects or the entire thing. if it has an alpha channel it will be
> > > > blended
> > > > per-pixel with the alpha value of that pixel. the above image will also
> > get
> > > > scaled as the image object is resized with standard smooth scaling.
> > > > evas_object_image_smooth_scale_set() can enable or disable smooth
> > scaling.
> > > > you
> > > > can change the image pixel size (this is the source image data - not
> > the
> > > > output
> > > > size as evas will handle scaling for you you need to realize this).
> > scaling
> > > > in
> > > > the software engine will come at a cost. smooth scaling is more costly
> > than
> > > > non-smooth. the gl engine will pretty much scale for free, but image
> > > > updates
> > > > come at a cost (texture upload). there is currently no zero-copy
> > texture
> > > > infrastructure in opengl that can avoid this.
> > > >
> > > > the above is the kind of mechanism things like emotion use to play
> > video.
> > > > it
> > > > uses a yuv colorspace feature in evas to do video with planar setup.
> > > >
> > > > > Sorry for my unsufficient explanation, i'll explain more precisely
> > below.
> > > > >
> > > > > My application will have some interfaces that are based on elementary
> > > > widjet
> > > > > and it has a core engine too, that processes something itself . If I
> > > > could
> > > > > give this core engine some methods, it'll draw its processing results
> > on
> > > > > that screen directly at any time it wants to update.
> > > > >
> > > > > > There are at least 2 solutions for your problem:
> > > > > > 1) Use an evas image object as widget in elementary, and you set
> > > > correctly
> > > > > its bgra data
> > > > > > 2) add API for elm_bg which gets and sets its bgra data
> > > > >
> > > > > I think 1) is the appropreate option for me.
> > > > >
> > > > > i'm confusing a little about what you said, "The Elementary widgets
> > are
> > > > evas
> > > > > smart objects..." but you're saying
> > > > > "1) Use an evas image object as widget in elementary..." also.  "Evas
> > > > image"
> > > > > is 'basic object', right?
> > > > > How can I this basic object(image) as a widjet in Elementary?
> > > > >
> > > > > besides, I found a "elm_image_add()" api, but i'm not sure it's
> > useful or
> > > > > not...
> > > > >
> > > > >
> > > > > - hyun
> > > > >
> > > > > 2010/7/15 Vincent Torri <vto...@univ-evry.fr>
> > > > >
> > > > > >
> > > > > > Hey,
> > > > > >
> > > > > >
> > > > > >  I tried to find some APIs from evas_image_* api in Evas.h and
> > refered
> > > > to
> > > > > >> some sample codes concering this.
> > > > > >> Finally, I wrote below test code, but it didn't work well that I
> > > > intended.
> > > > > >> It displays just only "sky_03.jpg" image on its entire window.
> > > > > >>
> > > > > >> Below source code seems looks weird, but I just wanted to test the
> > > > > >> function
> > > > > >> what I mentioned before.
> > > > > >> (draw some rgb data directly on my elementry widget.)
> > > > > >> Do you have any idea?
> > > > > >>
> > > > > >
> > > > > > In Evas (the canvas used by elementary), you have basic objects
> > (line,
> > > > > > rectangle, image, etc...), and smart objects (consider them as a
> > set of
> > > > > > basic objects or smart objects, which behave correctly when you
> > resize
> > > > them,
> > > > > > show them, etc...)
> > > > > >
> > > > > > The Elementary widgets are evas smart objects. You can't use the
> > > > > > evas_object_image_* functions on them. These functions can only be
> > used
> > > > on
> > > > > > the evas basic object 'image'. But you can use en evas object
> > (basic or
> > > > > > smart) as an elementary widget.
> > > > > >
> > > > > > There are at least 2 solutions for your problem:
> > > > > >
> > > > > > 1) Use an evas image object as widget in elementary, and you set
> > > > correctly
> > > > > > its bgra data
> > > > > >
> > > > > > 2) add API for elm_bg which gets and sets its bgra data
> > > > > >
> > > > > > Maybe it would be also useful for us if you explain precisely what
> > you
> > > > want
> > > > > > to do before going further.
> > > > > >
> > > > > > Vincent
> > > > > >
> > > > > >
> > > > > >>
> > //==================================================================
> > > > > >> #define MY_WIDTH  480
> > > > > >> #define MY_HEIGHT 640
> > > > > >>
> > > > > >> static int buffer[MY_WIDTH * MY_HEIGHT] = {0,};
> > > > > >>
> > > > > >> EAPI int elm_main(int argc, char **argv)
> > > > > >> {
> > > > > >>   Evas_Object *win, *bg;
> > > > > >>
> > > > > >>   int w, h, *p;
> > > > > >>   p = buffer;
> > > > > >>   memset(buffer, sizeof(buffer), 0);
> > > > > >>   for (w = 0; w < MY_HEIGHT / 2; w++) {
> > > > > >>       for (h = 0; h < MY_WIDTH; h++) {
> > > > > >>           // just some color to draw again on 'bg' object
> > > > > >>           *p++ = (int) 0x00ff00ff;
> > > > > >>       }
> > > > > >>       printf("w=%d, h=%d\n",w, h);
> > > > > >>   }
> > > > > >>
> > > > > >>   win = elm_win_add(NULL, "my application", ELM_WIN_BASIC);
> > > > > >>   elm_win_title_set(win, "my application");
> > > > > >>   evas_object_smart_callback_add(win, "delete,request", win_del,
> > > > NULL);
> > > > > >>
> > > > > >>   bg = elm_bg_add(win);
> > > > > >>   elm_bg_file_set(bg, "sky_03.jpg", NULL);
> > > > > >>   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
> > > > > >> EVAS_HINT_EXPAND);
> > > > > >>   elm_win_resize_object_add(win, bg);
> > > > > >>
> > > > > >>   evas_object_image_fill_set(bg, 0, 0, MY_WIDTH, MY_HEIGHT);
> > > > > >>   evas_object_image_size_set(bg, MY_WIDTH, MY_HEIGHT);
> > > > > >>   evas_object_image_data_copy_set(bg, buffer);
> > > > > >>   evas_object_image_alpha_set(bg, 1);
> > > > > >>   evas_object_show(bg);
> > > > > >>
> > > > > >>   evas_object_size_hint_min_set(bg, 100, 100);
> > > > > >>   evas_object_size_hint_max_set(bg, MY_WIDTH, MY_HEIGHT);
> > > > > >>   evas_object_resize(win, MY_WIDTH, MY_HEIGHT);
> > > > > >>   evas_object_show(win);
> > > > > >>
> > > > > >>   elm_run();
> > > > > >>   elm_shutdown();
> > > > > >>   return 0;
> > > > > >> }
> > > > > >> ELM_MAIN()
> > > > > >>
> > //==================================================================
> > > > > >>
> > > > > >>
> > > > > >>
> > > > > >> 2010/7/14 Carsten Haitzler <ras...@rasterman.com>
> > > > > >>
> > > > > >>  On Wed, 14 Jul 2010 16:00:11 +0900 Hyun Park <hyuny...@gmail.com
> > >
> > > > said:
> > > > > >>>
> > > > > >>>  Hi,
> > > > > >>>>
> > > > > >>>> Firstly, English is not my native language, please understand
> > this :
> > > > )
> > > > > >>>>
> > > > > >>>> I'm now trying to re-write my GTK application by using
> > "Elementary"
> > > > > >>>>
> > > > > >>> widget
> > > > > >>>
> > > > > >>>> library.
> > > > > >>>> I already checked test application, 'elementary_test' but I
> > couldn't
> > > > > >>>> find
> > > > > >>>> some appropriate APIs
> > > > > >>>> like "gdk_draw_rgb_image()" in Evas or something.
> > > > > >>>>
> > > > > >>>> I just want to draw some rgb data directly on my window widget.
> > > > > >>>> Where can i find this kind of API or some example?
> > > > > >>>>
> > > > > >>>
> > > > > >>> plain evas images. you can access the RGBA pixels directly via
> > > > pointer.
> > > > > >>> expedite (benchmark suite) has tests for this (RGBA and ARGBA
> > Alpha
> > > > > >>> data).
> > > > > >>> you
> > > > > >>> can just stick an evas image into elementary and have fun.
> > remember
> > > > to
> > > > > >>> set
> > > > > >>> the
> > > > > >>> data back when done and to add update rects. also use stride
> > value
> > > > > >>> return.
> > > > > >>> see
> > > > > >>> the evas_image_* api in Evas.h
> > > > > >>>
> > > > > >>> --
> > > > > >>> ------------- Codito, ergo sum - "I code, therefore I am"
> > > > --------------
> > > > > >>> The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> > > > > >>>
> > > > > >>>
> > > > > >>>
> > > >
> > ------------------------------------------------------------------------------
> > > > > >> This SF.net email is sponsored by Sprint
> > > > > >> What will you do first with EVO, the first 4G phone?
> > > > > >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> > > > > >> _______________________________________________
> > > > > >> enlightenment-devel mailing list
> > > > > >> enlightenment-devel@lists.sourceforge.net
> > > > > >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > > >>
> > > > > >>
> > > > > >>
> > > > >
> > > >
> > ------------------------------------------------------------------------------
> > > > > This SF.net email is sponsored by Sprint
> > > > > What will you do first with EVO, the first 4G phone?
> > > > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> > > > > _______________________________________________
> > > > > enlightenment-devel mailing list
> > > > > enlightenment-devel@lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > >
> > > >
> > > >
> > > > --
> > > > ------------- Codito, ergo sum - "I code, therefore I am"
> > --------------
> > > > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> > > >
> > > >
> > >
> > ------------------------------------------------------------------------------
> > > This SF.net email is sponsored by Sprint
> > > What will you do first with EVO, the first 4G phone?
> > > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to