Question
J'ai remarqué que les OpenVG matrice de transformation est ignoré par le rendu du texte de routine à tous et je ne peux pas contrôler la position du texte avec manuellement avec VG_GLYPH_ORIGIN parameter
.
Je me suis mise en œuvre d'un graphe de scène.J'ai découvert que je peux utiliser vgGetMatrix
, lire des composantes 6 et 7 de la présente 3x3 matrice de transformation et de définir VG_GLYPH_ORIGIN
à ces valeurs avant de dessiner un bloc de texte.Cela permet au texte d'origine, être placé dans le bon endroit, mais le texte est toujours affiche toujours de gauche à droite.
Toutefois, cela ne doit pas me permettre de faire toutes les autres transformations, comme la rotation.Je suis surpris, parce que le texte est composé de VGPath
s et ils sont en effet transformés
Est-il un moyen de rendre le texte pivoté avec OpenVG 1.1?Ou dois-je ignorer le texte de la fonctionnalité de OpenVG 1.1 et dessiner les lettres que les parcours individuels ou des images manuellement?
La solution
Toutes les fonctions de dessin utiliser un autre utilisateur->surface de la matrice:
vgDrawPath
utiliseVG_MATRIX_PATH_USER_TO_SURFACE
vgDrawImage
utiliseVG_MATRIX_IMAGE_USER_TO_SURFACE
vgDrawGlyph
/vgDrawGlyphs
utilisationVG_MATRIX_GLYPH_USER_TO_SURFACE
Par défaut, toutes les fonctions de la matrice (vgTranslate
, vgRotate
, vgLoadMatrix
,...) fonctionnent sur VG_MATRIX_PATH_USER_TO_SURFACE
.Pour modifier la matrice active, appel vgSeti
avec VG_MATRIX_MODE
en tant que 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 */