Domanda
Ho notato che la matrice di trasformazione OpenVG viene ignorata dalla routine di rendering del testo e non riesco a controllare la posizione del testo con essa manualmente con VG_Glyph_origin parameter
.
Sto implementazione di un grafico a scena.Ho scoperto che posso usare vgGetMatrix
, leggi i componenti 6 e 7 della matrice di trasformazione 3x3 corrente e impostare VG_GLYPH_ORIGIN
su tali valori prima di disegnare un blocco di testo.Ciò consente all'origine del testo di essere posizionato nel luogo corretto, ma il testo è ancora visualizzato sempre da sinistra a destra.
Tuttavia, questo stesso non mi consente di fare altre trasformazioni, come la rotazione.Sono sorpreso perché il testo è composto da VGPath
s e sono effettivamente trasformati
C'è un modo per rendere il testo ruotato con OpenVG 1.1?O dovrei ignorare la funzionalità del testo da OpenVG 1.1 e disegnare manualmente le lettere come singoli percorsi o immagini?
Soluzione
All the draw functions use a different user->surface matrix:
vgDrawPath
usesVG_MATRIX_PATH_USER_TO_SURFACE
vgDrawImage
usesVG_MATRIX_IMAGE_USER_TO_SURFACE
vgDrawGlyph
/vgDrawGlyphs
useVG_MATRIX_GLYPH_USER_TO_SURFACE
By default, all of the matrix functions (vgTranslate
, vgRotate
, vgLoadMatrix
, etc) operate on VG_MATRIX_PATH_USER_TO_SURFACE
. To change the active matrix, call vgSeti
with VG_MATRIX_MODE
as the first argument:
vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */