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