#if defined(OPENVG_VERSION_1_1) vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_BETTER); vgSeti(VG_IMAGE_QUALITY, VG_IMAGE_QUALITY_BETTER); vgSeti(VG_SCISSORING, VG_FALSE); vgSeti(VG_MASKING, VG_FALSE); col[0] = 0.0f; col[1] = 0.0f; col[2] = 0.0f; col[3] = 0.0f; vgSetfv(VG_CLEAR_COLOR, 4, col); vgClear(0, 0, 256, 256); // Times New Roman font times_font = vgCreateFont(times_glyphs_count); for (i = 0; i < (VGint)times_glyphs_count; ++i) { VGPath tmpPath = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, times_glyphs[i].commandsCount, 0, VG_PATH_CAPABILITY_ALL); vgAppendPathData(tmpPath, times_glyphs[i].commandsCount, times_glyphs[i].commands, times_glyphs[i].coordinates); vgSetGlyphToPath(times_font, times_glyphs[i].glyphIndex, tmpPath, VG_FALSE, times_glyphs[i].origin, times_glyphs[i].escapement); vgDestroyPath(tmpPath); } times.font = times_font; times.kernings = times_kernings; times.kernings_count = times_kernings_count; // Bitmap font bitmap_font = vgCreateFont(256); fontBitmapRootImage = vgCreateImage(imgFontBitmapFormat, imgFontBitmapWidth, imgFontBitmapHeight, VG_IMAGE_QUALITY_FASTER); vgImageSubData(fontBitmapRootImage, (const void *)&imgFontBitmapData[imgFontBitmapWidth * (imgFontBitmapHeight - 1)], -imgFontBitmapDataStride, imgFontBitmapFormat, 0, 0, imgFontBitmapWidth, imgFontBitmapHeight); for (i = 0; i < 16; ++i) { for (j = 0; j < 16; ++j) { VGfloat glyphOrigin[2] = { 0.0f, 0.0f }; VGfloat escapement[2] = { 32.0f, 0.0f }; VGImage tmpImage = vgChildImage(fontBitmapRootImage, j * 32, (15 - i) * 32, 32, 32); vgSetGlyphToImage(bitmap_font, i * 16 + j, tmpImage, glyphOrigin, escapement); vgDestroyImage(tmpImage); } } bmpFnt.font = bitmap_font; bmpFnt.kernings = NULL; bmpFnt.kernings_count = 0; // create and set a paint for fill fillPaint = vgCreatePaint(); vgSetParameteri(fillPaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); vgSetColor(fillPaint, 0xFF); vgSetPaint(fillPaint, VG_FILL_PATH); col[0] = 1.0f; col[1] = 1.0f; col[2] = 1.0f; col[3] = 1.0f; vgSetfv(VG_CLEAR_COLOR, 4, col); vgSeti(VG_BLEND_MODE, VG_BLEND_SRC_OVER); vgClear(0, 0, 256, 256); k = 0; for (i = 1; i < 14; ++i) { printLine(×, 0.0f, 256.0f - (k + 6.0f), i * 2 + 4.0f, 0.0f, fillPaint, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ut libero. Mauris aliquet cursus quam."); k += i * 2 + 4 + 3; } saveDrawingSurface(f, "font_00.png", "Test vector font (Times New Roman), black on white.", 0, 0, 256, 256); eglSwapBuffers(display, surface); col[0] = 0.0f; col[1] = 0.0f; col[2] = 0.0f; col[3] = 1.0f; vgSetfv(VG_CLEAR_COLOR, 4, col); vgClear(0, 0, 256, 256); vgSetColor(fillPaint, 0xFFFFFFFF); k = 0; for (i = 1; i < 14; ++i) { printLine(×, 0.0f, 256.0f - (k + 6.0f), i * 2 + 4.0f, 0.0f, fillPaint, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ut libero. Mauris aliquet cursus quam."); k += i * 2 + 4 + 3; } saveDrawingSurface(f, "font_01.png", "Test vector font (Times New Roman), white on black.", 0, 0, 256, 256); eglSwapBuffers(display, surface); col[0] = 1.0f; col[1] = 1.0f; col[2] = 1.0f; col[3] = 1.0f; vgSetfv(VG_CLEAR_COLOR, 4, col); vgSetColor(fillPaint, 0xFF); vgClear(0, 0, 256, 256); printLine(×, 12.0f, 52.0f, 220.0f, 0.0f, fillPaint, "Va"); saveDrawingSurface(f, "font_02.png", "Test kerning, case 1.", 0, 0, 256, 256); eglSwapBuffers(display, surface); vgClear(0, 0, 256, 256); printLine(×, 0.0f, 72.0f, 48.0f, 0.0f, fillPaint, "VaVeViVoVu"); printLine(×, 0.0f, 147.0f, 48.0f, 0.0f, fillPaint, "TaTeTiToTu"); saveDrawingSurface(f, "font_03.png", "Test kerning, case 2.", 0, 0, 256, 256); eglSwapBuffers(display, surface); vgClear(0, 0, 256, 256); printLine(×, 40.0f, 8.0f, 48.0f, 45.0f, fillPaint, "VaVeViVoVu"); printLine(×, 40.0f, 83.0f, 48.0f, 45.0f, fillPaint, "TaTeTiToTu"); saveDrawingSurface(f, "font_04.png", "Test kerning coupled with rotation.", 0, 0, 256, 256); eglSwapBuffers(display, surface); vgClear(0, 0, 256, 256); vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_NORMAL); printLine(&bmpFnt, 0.0f, 243.0f, 0.4f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 214.0f, 0.5f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 178.0f, 0.6f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 139.0f, 0.7f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 96.0f, 0.8f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 49.0f, 0.9f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); printLine(&bmpFnt, 0.0f, 0.0f, 1.0f, 0.0f, fillPaint, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"); saveDrawingSurface(f, "font_05.png", "Test bitmap font.", 0, 0, 256, 256); eglSwapBuffers(display, surface); vgDestroyPaint(fillPaint); vgDestroyImage(fontBitmapRootImage); vgDestroyFont(times_font); vgDestroyFont(bitmap_font); #endif