1#include "eglcommon.h" 2 3#include <VG/openvg.h> 4 5#include <stdio.h> 6#include <stdlib.h> 7#include <string.h> 8#include <assert.h> 9 10float red_color[4] = {1.0, 0.0, 0.0, 1.0}; 11float blue_color[4] = {0.0, 0.0, 1.0, 1.0}; 12VGint *data; 13 14static void 15init(void) 16{ 17 data = malloc(sizeof(VGint)*2048*2048); 18} 19 20/* new window size or exposure */ 21static void 22reshape(int w, int h) 23{ 24 vgLoadIdentity(); 25} 26 27static void 28draw(void) 29{ 30 static const VGint red_pixel = 255 << 24 | 255 << 16 | 0 << 8 | 0; 31 static const VGint blue_pixel = 255 << 24 | 0 << 16 | 0 << 8 | 255; 32 VGint i; 33 34 vgSetfv(VG_CLEAR_COLOR, 4, red_color); 35 vgClear(0, 0, window_width(), window_height()); 36 vgFlush(); 37 38 memset(data, 0, window_width() * window_height() * sizeof(VGint)); 39 40 vgReadPixels(data, window_width() * sizeof(VGint), 41 VG_lARGB_8888, 42 0, 0, window_width(), window_height()); 43 44 fprintf(stderr, "Red 0 = 0x%x and at 600 = 0x%x\n", 45 data[0], data[600]); 46 for (i = 0; i < window_width() * window_height(); ++i) { 47 assert(data[i] == red_pixel); 48 } 49 50 vgSetfv(VG_CLEAR_COLOR, 4, blue_color); 51 vgClear(50, 50, 50, 50); 52 vgFlush(); 53 54 memset(data, 0, window_width() * window_height() * sizeof(VGint)); 55 56 vgReadPixels(data, 50 * sizeof(VGint), 57 VG_lARGB_8888, 58 50, 50, 50, 50); 59 60 fprintf(stderr, "Blue 0 = 0x%x and at 100 = 0x%x\n", 61 data[0], data[100]); 62 for (i = 0; i < 50 * 50; ++i) { 63 assert(data[i] == blue_pixel); 64 } 65} 66 67 68int main(int argc, char **argv) 69{ 70 int ret = run(argc, argv, init, reshape, 71 draw, 0); 72 73 free(data); 74 return ret; 75} 76