Und nun zur "Funktionserstellung":
So könnte der Aufbau einer solchen Funktion (nach end) und deren Aufruf aussehen (vor end):
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> !!!!Funktion Text in Boundingbox - Heimo Mooslechner 7/2002
pen Stiftlinie
line2 0, 0, 0, b !!!!!Bounding-Box
line2 0, 0, a, 0
line2 a, b, 0, b
line2 a, 0, a, b
hotspot2 0,0
hotspot2 a, b
m=1/1000*GLOB_SCALE !!!!Zeichnungsmaßstabs-Abfrage
aatxt=a !!nötige Parameter-Übergabe-Definition
bbtxt=b
Textstil=Textstil
WoTextPunktt=WoTextPunkt
Stringtext=Stringtext
gosub 1234: !!holt sich von 1234: den passenden Textsatil
pen stift
text2 a/2, b/2, Stringtext
end !!!!!!!!!!!!!!!!!PROGRAMM ENDE!!!!!!!!!!!!!!!!
1234:
!!!!!Funktion: Testeschriftgröße A+B und gib mir einen Stil retour, der in die Box paßt
define Style "Dummy" Textstil, aatxt*m, WoTextPunkt, 0 !!! Dummystil definieren
style Dummy
TextbreiteA=STW(Stringtext) !!Textbreite mit Dummystil ermitteln
VerhaeltnisA = aatxt/TextbreiteA !!Verhältnis von Dummy-Textbreite zu aa-Länge
define Style "DummyA" Textstil, aatxt*VerhaeltnisA, WoTextPunkt, 0 !!!Dummystil für aa-Breite definieren
style DummyA
REQUEST ("Height_of_style", "DummyA", Texthoch) !!Texthöhe für diesen neuen aa-Stil ermitteln
Texthoch=Texthoch*m !!Zeichnungsmaßstab für Texthoch ausschalten
if texthoch < bbtxt then !!Falls Texthoch < b dann Breiten-Stil verwenden
else !!sonst: Höhenstil verwenden
hochverhalt=texthoch/bbtxt
define Style "DummyB" Textstil, aatxt*VerhaeltnisA/hochverhalt, WoTextPunkt, 0 !!!Dummystil für aa-Breite definieren
style DummyB
endif
return !!Gib mir den richtigen Stil für die Box retour Man übergibt an die in der Funktion genannten Parameternamen vor dem Aufruf die nötigen Werte.
Somit ist die Funktion im GDL beliebig wiederwertbar.
NOCHMALS:
Was macht die Funktion:
Du wirst es nicht schaffen, aus der mit A und B angegebenen Bounding-Box rauszuschreiben.
Sollte die Höhe B überschreiten, wird einfach der Text so klein, daß er in B wieder reinpaßt
Gleiches gilt für A
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia