home *** CD-ROM | disk | FTP | other *** search
- /* Personal Paint Amiga Rexx script - Copyright © 1996 Cloanto Italia srl */
-
- /* $VER: VectorText.pprx 1.0 */
-
- /** ENG
- This script renders a vector text in the current environment.
- A requester allows the user to select several parameters, such as
- font, text string, angle, shear angle, bold level, antialiasing, etc.
- The text is drawn using the current foreground color.
- */
-
- /** DEU
- Mit diesem Skript läßt sich ein Vektortext in der aktuellen
- Umgebung erzeugen. Das dazugehörige Dialogfenster enthält
- Einstellmöglichkeiten für verschiedene Parameter, wie Font,
- Textstring, Winkel, Neigungsgrad, Stärke, Kantenglättung,
- usw. Die Textdarstellung erfolgt in der aktuellen Vordergrundfarbe.
- */
-
- IF ARG(1, EXISTS) THEN
- PARSE ARG PPPORT x0 y0 rwidth rheight .
- ELSE
- EXIT 0 /* macro execution only */
-
- ADDRESS VALUE PPPORT
- OPTIONS RESULTS
- OPTIONS FAILAT 10000
-
-
- Get 'LANG'
- IF RESULT = 1 THEN DO /* Deutsch */
- txt_title_req = "Texteinstellungen"
- txt_gad_font = "_Font:"
- txt_gad_text = "_Text:"
- txt_string_text = "Text"
- txt_gad_angle = "Wink_el:"
- txt_gad_shear = "_Neigung:"
- txt_gad_boldx = "Stärke _X:"
- txt_gad_boldy = "Stärke _Y:"
- txt_gad_aalias = "_Kantenglättung:"
- txt_gad_aalias0 = "Keine"
- txt_gad_aalias1 = "Schwach"
- txt_gad_aalias2 = "Mittel"
- txt_gad_aalias3 = "Stark"
- txt_gad_kratio = "_Verhältnis erhalten:"
- txt_gad_kbline = "_Grundlinie erhalten:"
- txt_err_oldclient = "Für dieses Skript_ist eine neuere Version_von Personal Paint erforderlich"
- txt_err_nofonts = "Vektorfonts nicht auffindbar"
- txt_err_vtext = "VektorText-Fehler: "
- END
- ELSE IF RESULT = 2 THEN DO /* Italiano */
- txt_title_req = "Parametri testo"
- txt_gad_font = "_Font:"
- txt_gad_text = "_Testo:"
- txt_string_text = "Testo"
- txt_gad_angle = "Ang_olo:"
- txt_gad_shear = "In_clinazione:"
- txt_gad_boldx = "Grassetto _X:"
- txt_gad_boldy = "Grassetto _Y:"
- txt_gad_aalias = "Antialia_s:"
- txt_gad_aalias0 = "Nessuno"
- txt_gad_aalias1 = "Basso"
- txt_gad_aalias2 = "Medio"
- txt_gad_aalias3 = "Alto"
- txt_gad_kratio = "Asp_etto:"
- txt_gad_kbline = "Linea di _base:"
- txt_err_oldclient = "Questa procedura richiede_una versione più recente_di Personal Paint"
- txt_err_nofonts = "Non vi sono font vettoriali"
- txt_err_vtext = "Errore comando VectorText: "
- END
- ELSE DO /* English */
- txt_title_req = "Text Settings"
- txt_gad_font = "_Font:"
- txt_gad_text = "_Text:"
- txt_string_text = "Text"
- txt_gad_angle = "_Angle:"
- txt_gad_shear = "_Shear:"
- txt_gad_boldx = "Bold _X:"
- txt_gad_boldy = "Bold _Y:"
- txt_gad_aalias = "A_ntialias:"
- txt_gad_aalias0 = "None"
- txt_gad_aalias1 = "Low"
- txt_gad_aalias2 = "Medium"
- txt_gad_aalias3 = "High"
- txt_gad_kratio = "Keep _Ratio:"
- txt_gad_kbline = "Keep _Baseline:"
- txt_err_oldclient = "This script requires a newer_version of Personal Paint"
- txt_err_nofonts = "Vector fonts not found"
- txt_err_vtext = "VectorText error: "
- END
-
- Version 'REXX'
- IF RESULT < 7 THEN DO
- RequestNotify 'PROMPT "'txt_err_oldclient'"'
- EXIT 10
- END
-
-
- def_font_path = "FONTS:"
- max_text_size = 8000
-
- font_path = LoadSet('PP_VectorPath', def_font_path, 1, 0)
-
-
- ftot = 0
- vftfname = 'ENV:PP_VectorFonts'
- IF ~OPEN(fexists, vftfname) THEN DO
- ADDRESS COMMAND 'List >'vftfname' 'font_path' PAT=#?.otag NOHEAD LFORMAT="%s"'
- ADDRESS COMMAND 'Sort 'vftfname vftfname'.s'
- IF RC = 0 THEN DO
- ADDRESS COMMAND 'Delete >NIL: 'vftfname
- ADDRESS COMMAND 'Rename >NIL: 'vftfname'.s' vftfname
- END
- END
- ELSE CALL CLOSE(fexists)
-
- IF OPEN('listfile', vftfname) THEN DO
- DO FOREVER
- fline = READLN('listfile')
- IF EOF('listfile') THEN BREAK
- ftot = ftot + 1
- fontname.ftot = LEFT(fline, LENGTH(fline) - 5)
- END
- CALL CLOSE('listfile')
- END
-
- IF ftot = 0 THEN DO
- RequestNotify 'PROMPT "'txt_err_nofonts'"'
- EXIT 10
- END
-
-
- fntnum = LoadSet('Font', 0)
- text = LoadSet('Text', txt_string_text)
- angle = LoadSet('Angle', 0)
- shear = LoadSet('Shear', 0)
- boldx = LoadSet('BoldX', 0)
- boldy = LoadSet('BoldY', 0)
- aalias = LoadSet('Antialias', 0)
- kratio = LoadSet('KeepRatio', 0)
- kbline = LoadSet('KeepBaseline', 0)
-
- req = '"LIST = ""'txt_gad_font'"", 'ftot', 'fntnum', 20, 5'
- DO f = 1 TO ftot
- req = req || ', ""' || fontname.f || '""'
- END
- req = req ||,
- ' VSPACE = 2 ' ||,
- 'STRING = ""'txt_gad_text'"", 'max_text_size', ""'text'"" ' ||,
- 'VSPACE = 2 ' ||,
- 'SLIDE = ""'txt_gad_angle'"", -360, 360, 'angle' ' ||,
- 'SLIDE = ""'txt_gad_shear'"", -45, 45, 'shear' ' ||,
- 'SLIDE = ""'txt_gad_boldx'"", -8, 8, 'boldx' ' ||,
- 'SLIDE = ""'txt_gad_boldy'"", -8, 8, 'boldy' ' ||,
- 'VSPACE = 2 ' ||,
- 'CYCLE = ""'txt_gad_aalias'"", 4, 'aalias', ""'txt_gad_aalias0'"", ""'txt_gad_aalias1'"", ""'txt_gad_aalias2'"", ""'txt_gad_aalias3'"" ' ||,
- 'CHECK = ""'txt_gad_kratio'"", 'kratio' ' ||,
- 'CHECK = ""'txt_gad_kbline'"", 'kbline' ' ||,
- 'VSPACE = 2 "'
-
- LockGUI
- Request 'RESIZE COMPACT "'txt_title_req'" 'req
- IF RC = 0 THEN DO
- fntnum = RESULT.1 + 1
- text = RESULT.2
- angle = RESULT.3
- shear = RESULT.4
- boldx = RESULT.5
- boldy = RESULT.6
- aalias = RESULT.7
- kratio = RESULT.8
- kbline = RESULT.9
-
- CALL SaveSet('Font', fntnum - 1) /* setting persistence */
- CALL SaveSet('Text', text)
- CALL SaveSet('Angle', angle)
- CALL SaveSet('Shear', shear)
- CALL SaveSet('BoldX', boldx)
- CALL SaveSet('BoldY', boldy)
- CALL SaveSet('Antialias', aalias)
- CALL SaveSet('KeepRatio', kratio)
- CALL SaveSet('KeepBaseline', kbline)
-
- options = 'DYNAMIC'
- IF kratio THEN
- options = options 'KEEPRATIO'
- IF kbline THEN
- options = options 'KEEPBASELINE'
-
- /* encode quotes */
- pos = 1
- DO FOREVER
- pos = INDEX(text, '"', pos)
- IF pos = 0 THEN
- BREAK
- text = INSERT('"', text, pos)
- pos = pos + 2
- END
-
- VectorText 'TEXT "'text'" FONTPATH "'font_path'" FONTNAME "'fontname.fntnum'" X0 'x0' Y0 'y0' X1 'x0 + rwidth - 1' Y1 'y0 + rheight - 1' ANGLE 'angle * 1000' SHEAR 'shear * 1000' BOLDX 'boldx * 1000' BOLDY 'boldy * 1000' ANTIALIAS 'aalias options
- IF RC > 5 THEN
- RequestNotify 'PROMPT "'txt_err_vtext || RC'"'
- END
- UnlockGUI
-
- EXIT 0
-
-
-
-
- SaveSet:
- sname = ARG(1)
- val = ARG(2)
-
- IF OPEN('settingfile', 'ENV:PP_VectorText_'sname, 'W') THEN DO
- CALL WRITECH('settingfile', val)
- CALL CLOSE('settingfile')
- END
-
- RETURN
-
-
-
-
- LoadSet:
- sname = ARG(1)
- def_val = ARG(2)
- IF ARG() > 2 THEN
- global_set = ARG(3)
- ELSE
- global_set = 0
- IF ARG() > 3 THEN
- request_quote = ARG(4)
- ELSE
- request_quote = 1
-
- val = def_val
- IF global_set THEN
- set_fname = 'ENV:'sname
- ELSE
- set_fname = 'ENV:PP_VectorText_'sname
-
- IF OPEN('settingfile', set_fname, 'R') THEN DO
- val = READCH('settingfile', 65535)
- CALL CLOSE('settingfile')
- END
-
- IF request_quote THEN DO
- /* encode quotes for the Request command ('"' -> '\""') */
- qpos_start = 1
- DO FOREVER
- qpos = INDEX(val, '"', qpos_start)
- IF qpos = 0 THEN BREAK
- val = INSERT('\"', val, qpos-1)
- qpos_start = qpos + 3
- END
- END
-
- RETURN val
-