Linienbegleitende Texte

Top  Previous  Next

Mit dem Pseudoattribut $baselineID können die Zeichen eines Textelements entlang des Verlaufs eines Stringelements gezeichnet werden. Dazu muß das Pseudoattribut auf die ID des Stringelements gesetzt werden. Mit dem folgenden Befehl erhält $baselineID des geöffneten Textelements zum Beispiel die ID 0d6488912f7ded58:

 

 Attr( db_GetElement() ->$baselineID 0d6488912f7ded58)

 

Die ID des Stringelements wird dabei permanent gemacht und ändert daher ihren Wert, wenn sie nicht bereits vorher permanent war. Nach einem Redraw wird der Text dann linienbegleitend gezeichnet. Das folgende kurze Skript demonstriert eine interaktive Anwendung, bei der zuerst das Stringelement und dann das Textelement identifiziert werden und letzteres automatisch linienbegleitend gesetzt wird.

 

Begin

 Echo /save

 Echo /nostop

 ! ************************************************************************

 ! Textelement linienbegleitend zu einem Stringelement setzen.

 ! 1. Identifizieren des Stringelements

 ! 2. Identifizieren des Textelements

 ! ************************************************************************

 Declare id ptr res

 Echo Basislinie identifizieren

 IdentifyElement /nomarker

%%input

 Value( id DBquery( $id from open string /noq))

 c_if "m_lt( 1 s_strlen( Value( id)))"

 Echo Text identifizieren

 IdentifyElement /nomarker

%%input

 Value( ptr DBquery( $pointer from open text /noq))

 c_if "m_lt( 1 s_strlen( Value( ptr)))"

 Value( res Attr( Value( ptr) ->$baselineID Value( id)))

 c_if "m_ne( 0 Value( res))"

 Echo Attribut $baselineID konnte nicht gesetzt werden

 c_endIf

 c_else

 Echo kein Text

 c_endIf

 c_else

 Echo keine Basislinie

 c_endIf

 Clear

 Redraw

 Echo /restore

End