void testDrawableImages() { const unsigned int colors[] = { 0xff000000, 0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000, 0xffff00ff, 0xffffff00, 0xffffffff, }; const unsigned int NUMCOLORS = sizeof(colors)/sizeof(int); unsigned int colors2[NUMCOLORS]; MAHandle testImg = maCreatePlaceholder(); printf("testing resources\n"); int res = maCreateDrawableImage(testImg, NUMCOLORS, 1); assert("maCreateImageRaw", res == RES_OK); MAExtent e1 = maGetImageSize(testImg); assert("maGetImageSize", e1 == EXTENT(NUMCOLORS,1)); maSetDrawTarget(testImg); for(unsigned int i = 0; i < NUMCOLORS; i++) { maSetColor(colors[i]); maPlot(i, 0); } MARect rect = {0, 0, NUMCOLORS, 1}; maSetDrawTarget(0); maGetImageData(testImg, colors2, &rect, NUMCOLORS); assert( "testing drawable image res", (memcmp(colors, colors2, sizeof(colors)) == 0) ); }
void testGetImageData() { printf("testing maGetImageData\n"); const unsigned int NUMCOLORS = sizeof(sColors)/sizeof(int); unsigned int colors2[NUMCOLORS]; MAExtent e1 = maGetImageSize(ARGB_PNG); assert("maGetImageSize", e1 == EXTENT(NUMCOLORS,1)); MARect rect = {0, 0, NUMCOLORS, 1}; maGetImageData(ARGB_PNG, colors2, &rect, NUMCOLORS); assert("image: getData from PNG", (memcmp(sColors, colors2, sizeof(sColors)) == 0) ); maDrawImage(ARGB_PNG, 0, 0); maUpdateScreen(); //FREEZE; }
void testImageRawData() { const unsigned int NUMCOLORS = sizeof(sColors)/sizeof(int); unsigned int colors2[NUMCOLORS]; MAHandle testImg = maCreatePlaceholder(); printf("imageRawData\n"); int res = maCreateImageRaw(testImg, sColors, EXTENT(NUMCOLORS,1), 1); assert("maCreateImageRaw", res == RES_OK); MAExtent e1 = maGetImageSize(testImg); assert("maGetImageSize", e1 == EXTENT(NUMCOLORS,1)); MARect rect = {0, 0, NUMCOLORS, 1}; maGetImageData(testImg, colors2, &rect, NUMCOLORS); assert("image: createRaw then getData", (memcmp(sColors, colors2, sizeof(sColors)) == 0) ); }
bool BarcodeScanner::uploadHandle(MAHandle image) { if(mImageScanner == NULL) maPanic(0, "No Image Scanner"); if(mImgData != NULL) maPanic(0, "Image already uploaded!"); int imgSize = maGetImageSize(image); int imgW = EXTENT_X(imgSize); int imgH = EXTENT_Y(imgSize); int imgDataSize = imgW * imgH; int* imgData = (int*) malloc(imgDataSize * 4); MARect imgRect = {0, 0, imgW, imgH}; maGetImageData(image, imgData, &imgRect, imgW); mImgData = (unsigned char*) malloc(imgDataSize); return upload(imgData, imgW, imgH); }
/** * Entry point of the program. The MAMain function * needs to be declared as extern "C". */ extern "C" int MAMain() { MAEvent event; int imgSize = maGetImageSize(RES_BARCODE_IMAGE); int imgW = EXTENT_X(imgSize); int imgH = EXTENT_Y(imgSize); int imgDataSize = imgW * imgH; int* imgData = (int*) malloc(imgDataSize * 4); MARect imgRect; imgRect.left = 0; imgRect.top = 0; imgRect.width = imgW; imgRect.height = imgH; maGetImageData(RES_BARCODE_IMAGE, imgData, &imgRect, imgW); unsigned char* fixedImg = (unsigned char*) malloc(imgDataSize); printf("Converting image\n"); createLuminosity(imgData, fixedImg, imgDataSize); printf("Scanning for barcodes\n"); // create a reader zbar::ImageScanner scanner = zbar::zbar_image_scanner_create(); // configure the reader zbar::zbar_image_scanner_set_config(scanner, zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1); // wrap image data zbar::zbar_image_t *image = zbar::zbar_image_create(); zbar::zbar_image_set_format(image, 0x30303859);// "Y800" = 0x30303859 zbar::zbar_image_set_size(image, imgW, imgH); zbar::zbar_image_set_data(image, fixedImg, imgW * imgH, NULL);//zbar_image_free_data); // scan the image for barcodes zbar_scan_image(scanner, image); // extract results bool result = false; const zbar::zbar_symbol_t *symbol = zbar_image_first_symbol(image); for(; symbol; symbol = zbar_symbol_next(symbol)) { // do something useful with results zbar::zbar_symbol_type_t typ = zbar_symbol_get_type(symbol); const char *data = zbar_symbol_get_data(symbol); printf("decoded %s symbol \"%s\"\n", zbar_get_symbol_name(typ), data); result = true; } // clean up zbar_image_destroy(image); if(!result) printf("No symbols found.\n"); printf("Press zero, back or touch screen to exit\n"); while (TRUE) { maWait(0); maGetEvent(&event); if (EVENT_TYPE_CLOSE == event.type) { // Exit while loop. break; } else if (EVENT_TYPE_KEY_PRESSED == event.type) { if (MAK_BACK == event.key || MAK_0 == event.key) { // Exit while loop. break; } } else if (EVENT_TYPE_POINTER_PRESSED == event.type) { break; } } return 0; }
void WidgetSkin::drawRegion(MAHandle image, int* data, int scanLength, const MARect* srcRect, const MAPoint2d *dstPoint) { maGetImageData(image, &data[dstPoint->x+dstPoint->y*scanLength], srcRect, scanLength); }