Module: Demos Branch: master Commit: 083558f5afcb675bf27901c7e706f7361cd5fc9d URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=083558f5afcb675bf27901c7e706f7361cd5fc9d
Author: Chia-I Wu <[email protected]> Date: Sun Nov 28 22:47:37 2010 +0800 egl/openvg: Add a demo for VGImage functions. --- src/egl/openvg/trivial/Makefile.am | 2 + src/egl/openvg/trivial/image.c | 81 ++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 0 deletions(-) diff --git a/src/egl/openvg/trivial/Makefile.am b/src/egl/openvg/trivial/Makefile.am index f85c70d..d694b67 100644 --- a/src/egl/openvg/trivial/Makefile.am +++ b/src/egl/openvg/trivial/Makefile.am @@ -52,6 +52,7 @@ noinst_PROGRAMS = \ ellipse \ filter \ gradorigin \ + image \ lineto \ lingrad \ lookup \ @@ -77,6 +78,7 @@ dash_LDADD = libcommon.la ellipse_LDADD = libcommon.la filter_LDADD = libcommon.la gradorigin_LDADD = libcommon.la +image_LDADD = libcommon.la lineto_LDADD = libcommon.la lingrad_LDADD = libcommon.la lookup_LDADD = libcommon.la diff --git a/src/egl/openvg/trivial/image.c b/src/egl/openvg/trivial/image.c new file mode 100644 index 0000000..7733213 --- /dev/null +++ b/src/egl/openvg/trivial/image.c @@ -0,0 +1,81 @@ +#include "eglcommon.h" + +#include <VG/openvg.h> + +#include <math.h> +#include <stdlib.h> +#include <stdio.h> + +static void +init(void) +{ +} + +/* new window size or exposure */ +static void +reshape(int w, int h) +{ +} + +static const VGfloat red[4] = { 1.0f, 0.0f, 0.0f, 1.0f }; +static const VGfloat black[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; +static const VGfloat white[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + +static void +draw(void) +{ + const VGint w = 48; + VGImage img1, img2; + VGint x, y; + + vgSetfv(VG_CLEAR_COLOR, 4, white); + vgClear(0, 0, window_width(), window_height()); + + img1 = vgCreateImage(VG_sRGBA_8888, w, w, + VG_IMAGE_QUALITY_NONANTIALIASED); + img2 = vgCreateImage(VG_sRGBA_8888, w, w, + VG_IMAGE_QUALITY_NONANTIALIASED); + + x = 5; + y = (window_height() - w) / 2; + + /* test vgSetPixels */ + vgSetfv(VG_CLEAR_COLOR, 4, red); + vgClearImage(img1, 0, 0, w, w / 2); + vgSetfv(VG_CLEAR_COLOR, 4, black); + vgClearImage(img1, 0, w / 2, w, w / 2); + vgSetPixels(x, y, img1, 0, 0, w, w); + + x += w + 5; + + /* test vgDrawImage */ + vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); + vgLoadIdentity(); + vgTranslate(x, y); + vgDrawImage(img1); + + /* test vgGetPixels */ + vgGetPixels(img1, 0, 0, x, y, w, w); + x += w + 5; + vgSetPixels(x, y, img1, 0, 0, w, w); + + x += w + 5; + + /* test vgCopyImage */ + vgCopyImage(img2, 0, 0, img1, 0, 0, w, w, VG_FALSE); + vgSetPixels(x, y, img2, 0, 0, w, w); + + /* vgCopyPixels */ + vgCopyPixels(x + w + 5, y, x, y, w, w); + + vgDestroyImage(img1); + vgDestroyImage(img2); +} + + +int main(int argc, char **argv) +{ + set_window_size(300, 300); + return run(argc, argv, init, reshape, + draw, 0); +} _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
