2011-02-16 2 views
0

J'ai remarqué que la matrice de transformation OpenVG est ignorée par la routine de rendu du texte et que je ne peux pas la contrôler manuellement avec VG_GLYPH_ORIGIN parameter.Rotation du texte avec OpenVG

J'implémente un graphe de scène. J'ai découvert que je peux utiliser vgGetMatrix, lire les composants 6 et 7 de la matrice de transformation 3x3 actuelle et définir VG_GLYPH_ORIGIN à ces valeurs avant de dessiner un bloc de texte. Cela permet de placer l'origine du texte à la bonne place, mais le texte est toujours affiché de gauche à droite.

Cependant, cela ne me permet pas de faire d'autres transformations, comme la rotation. Je suis surpris parce que le texte est composé de VGPath s et ils sont en effet transformés

Y at-il un moyen de faire tourner le texte avec OpenVG 1.1? Ou devrais-je ignorer la fonctionnalité de texte d'OpenVG 1.1 et dessiner les lettres comme des chemins individuels ou des images manuellement?

Répondre

1

Toutes les fonctions de dessin utilisent une matrice de surface user-> autre:

  • vgDrawPath utilise VG_MATRIX_PATH_USER_TO_SURFACE
  • vgDrawImage utilise VG_MATRIX_IMAGE_USER_TO_SURFACE
  • vgDrawGlyph/vgDrawGlyphs utilisation VG_MATRIX_GLYPH_USER_TO_SURFACE

Par défaut, tous les des fonctions de la matrice (vgTranslate, vgRotate, vgLoadMatrix, etc.) fonctionnent sur VG_MATRIX_PATH_USER_TO_SURFACE. Pour modifier la matrice active, appelez le vgSeti avec VG_MATRIX_MODE comme premier argument:

vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE); 
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */