! EDTEXT - Text generator for EDWIN !############################################################################ !# # !# This is a module from the EDWIN Graphics Package, which was developed # !# in the Department of Computer Science, at Edinburgh University, from # !# 1978 to the present day, release 5 of EDWIN in October 1984. # !# # !# The principal author of the EDWIN Graphics Package was J Gordon Hughes, # !# while working for the Edinburgh University Computer Sceince Department. # !# Parts of EDWIN have been produced by many different people, too many # !# too mention, working for different departments of Edinburgh and Leeds # !# Universities. # !# # !# This module is regarded as being in the public domain, and the authors # !# and accept no responsibility regarding the uses to which the software # !# will be put. # !# # !############################################################################ from Edwin include Specs from Edwin include Iprocs from Edwin include Icodes own integer TEXT FONT ESC CHAR = DISABLED own integer TEXT COLOUR ESC CHAR = DISABLED external routine TEXT alias "EDWIN_TEXT" (string(255) ST) integer I, OC, OF, C { OC = Original Colour & Font, C is Char } OC = DISABLED; OF = DISABLED for I = 1, 1, LENGTH(ST) cycle C = CHARNO(ST,I) if C=TEXT COLOUR ESC CHAR start if LENGTH(ST)-I>1 and '0'<=CHARNO(ST,I+1)<='9' start C = CHARNO(ST,I+1) - '0'; I = I + 1 if LENGTH(ST)-I>1 and '0'<=CHARNO(ST,I+1)<='9' start C = C * 10 + CHARNO (ST, I+1) - '0'; I = I + 1 finish GET ATTRIBUTE (ATT COLOUR, OC) if OC=DISABLED { Remember original } SET COLOUR (C) { Set New colour } continue finish finish else if C=TEXT FONT ESC CHAR start if LENGTH(ST)-I>1 and '0'<=CHARNO(ST,I+1)<='9' start C = CHARNO(ST,I+1) - '0'; I = I + 1 if LENGTH(ST)-I>1 and '0'<=CHARNO(ST,I+1)<='9' start C = C * 10 + CHARNO (ST, I+1) - '0'; I = I + 1 finish GET ATTRIBUTE (ATT CHAR FONT, OF) if OF=DISABLED { Remember original } SET CHAR FONT (C) { Set New font } continue finish finish CHARACTER (C) repeat SET COLOUR (OC) if OC#DISABLED { Restore original colour } SET CHAR FONT (OF) if OF#DISABLED { Restore original font } end external routine TEXT COLOUR ESCAPE alias "EDWIN_TEXT_COL_ESC" (integer CH) TEXT COLOUR ESC CHAR = CH end external routine TEXT FONT ESCAPE alias "EDWIN_TEXT_FONT_ESC" (integer CH) TEXT FONT ESC CHAR = CH end external routine INQUIRE TEXT SIZE alias "EDWIN_INQ_TEXT_SIZE" (string (255) T, integer name X, Y) integer OX, OY, NX, NY, Device Inquire Position (OX, OY) Device = Device Data_Dev No Device Data_Dev No = -1 Text (t) Inquire Position (NX, NY) X = NX - OX Y = NY - OY Move Abs (OX, OY) Device Data_Dev No = Device end end of file