Reza Salehi
|
How to blit insttead of overwite using gf_draw_blit2?
|
Reza Salehi
06/01/2011 4:51 PM
post86355
|
How to blit insttead of overwite using gf_draw_blit2?
Hi All,
I am trying to blit two .png files. I have attached the .png files to two seperate surfaces and am using the following
code(only the important calls):
rc = gf_surface_attach(&img_surf1, gdev, image1.w, image1.h, image1.access.direct.stride, img_fmt_to_gf(image1.
format),
&palette, image1.access.direct.data, 0);
rc = gf_surface_attach(&img_surf2, gdev, image2.w, image2.h, image2.access.direct.stride, img_fmt_to_gf(image2.format)
,
&palette2, image2.access.direct.data, 0);
gf_context_create(&context);
gf_context_set_surface(context, img_surf1);
gf_draw_begin(context);
gf_draw_blit2( context, img_surf2, NULL, 107, 4, 334, 222, 0, 0);
gf_draw_end(context);
rc = img_write_file(ilib, "/tmp/reza.png", NULL, &image1);
The two images are getting combined. However, the target image is overwriting (covering) the target image.
Can someone please tell me what I need to do (probably to the context) to have the source image blited into the target
image, instead of overwriting it?
Thanks in advance,
Reza.
|
|
|
Joel Pilon(deleted)
|
Re: How to blit insttead of overwite using gf_draw_blit2?
|
Joel Pilon(deleted)
06/01/2011 4:56 PM
post86356
|
Re: How to blit insttead of overwite using gf_draw_blit2?
You'll probably want to enable blending and use a source over blending mode.
-Joel
----- Original Message -----
From: Reza Salehi [mailto:community-noreply@qnx.com]
Sent: Wednesday, June 01, 2011 04:51 PM
To: advanced-graphics <post86355@community.qnx.com>
Subject: How to blit insttead of overwite using gf_draw_blit2?
Hi All,
I am trying to blit two .png files. I have attached the .png files to two seperate surfaces and am using the following
code(only the important calls):
rc = gf_surface_attach(&img_surf1, gdev, image1.w, image1.h, image1.access.direct.stride, img_fmt_to_gf(image1.
format),
&palette, image1.access.direct.data, 0);
rc = gf_surface_attach(&img_surf2, gdev, image2.w, image2.h, image2.access.direct.stride, img_fmt_to_gf(image2.format)
,
&palette2, image2.access.direct.data, 0);
gf_context_create(&context);
gf_context_set_surface(context, img_surf1);
gf_draw_begin(context);
gf_draw_blit2( context, img_surf2, NULL, 107, 4, 334, 222, 0, 0);
gf_draw_end(context);
rc = img_write_file(ilib, "/tmp/reza.png", NULL, &image1);
The two images are getting combined. However, the target image is overwriting (covering) the target image.
Can someone please tell me what I need to do (probably to the context) to have the source image blited into the target
image, instead of overwriting it?
Thanks in advance,
Reza.
_______________________________________________
Advanced Graphics
http://community.qnx.com/sf/go/post86355
|
|
|
Reza Salehi
|
Re: How to blit insttead of overwite using gf_draw_blit2?
|
Reza Salehi
06/01/2011 5:17 PM
post86357
|
Re: How to blit insttead of overwite using gf_draw_blit2?
Thanks for the quick reply Joel. However, I guess my problem is that I can not figure out how to enable blending! I
have looked at the document and I found the gf_context_set_alpha. However, my images are RGB888 and not ARGB888.
Should I read the original image as ARGB8888 (by setting the img_t format field).
I would appreciate it if you can point me to small code snipet or site, as I have been trying to figure this out for
past two days.
Regards,
Reza.
|
|
|
Joel Pilon(deleted)
|
Re: How to blit insttead of overwite using gf_draw_blit2?
|
Joel Pilon(deleted)
06/01/2011 5:27 PM
post86358
|
Re: How to blit insttead of overwite using gf_draw_blit2?
Correct, you'll need an alpha channel for source alpha blending.
----- Original Message -----
From: Reza Salehi [mailto:community-noreply@qnx.com]
Sent: Wednesday, June 01, 2011 05:17 PM
To: advanced-graphics <post86357@community.qnx.com>
Subject: Re: How to blit insttead of overwite using gf_draw_blit2?
Thanks for the quick reply Joel. However, I guess my problem is that I can not figure out how to enable blending! I
have looked at the document and I found the gf_context_set_alpha. However, my images are RGB888 and not ARGB888.
Should I read the original image as ARGB8888 (by setting the img_t format field).
I would appreciate it if you can point me to small code snipet or site, as I have been trying to figure this out for
past two days.
Regards,
Reza.
_______________________________________________
Advanced Graphics
http://community.qnx.com/sf/go/post86357
|
|
|
Reza Salehi
|
Re: How to blit insttead of overwite using gf_draw_blit2?
|
Reza Salehi
06/01/2011 5:36 PM
post86359
|
Re: How to blit insttead of overwite using gf_draw_blit2?
For some reason, when I do:
image2.flags |= IMG_FORMAT;
image2.format = GF_FORMAT_ARGB8888;
rc = img_load_file(ilib, "/tmp/Day_24hr.png", NULL, &image1);
rc = gf_surface_attach(&img_surf1, gdev, image1.w, image1.h, image1.access.direct.stride, img_fmt_to_gf(image1.
format),
&palette, image1.access.direct.data, 0);
gf_context_create(&context);
Then my call to rc = gf_context_set_surface(context, img_surf1); hangs and never returns!!!
I am running out of ideas to try!!!
Thanks,
Reza.
|
|
|
|