KEMBAR78
FTN 95 User Guide | PDF | Computer Engineering | Computer Architecture
0% found this document useful (0 votes)
256 views16 pages

FTN 95 User Guide

Uploaded by

ni60
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
256 views16 pages

FTN 95 User Guide

Uploaded by

ni60
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 16

Printed 28/05/2014

Copyright 2001 by BUSS Ltd. All rights resered.


Simpleplot 2-16 under Microsoft 32-bit Windows
and FTN95 ser !uide
BUSS Ltd.
!oe"ber 2001
S"nopsis
#his do$%"ent $oers the %se o& Si"pleplot ersion 2'1( %nder )i$roso&t *indo+s
,-/!#/2000/.P /nd the S/l&ord 0tn,5 $o"piler.
1el/ted do$%"ents in$l%de the S#M$%&$%'T (eference manual )*t+ edition, /nd
the do$%"ent Simpleplot 2-16 under Microsoft 32-bit Windows and Ftn9-.95
#nstallation !uide.
/ontents
10 #NT('1/T#'N00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
20 !&TT#N! ST2(T&100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2.1 *2134!5 012) A 62S B2.................................................................................................... 2
2.2 C17A#4!5 A P1287C# US4!5 PLA#2........................................................................................ 2
2.9 1U!!4!5 :2U1 APPL4CA#42!.................................................................................................. 9
30 W#N1'WS (&!#ST(3 &NT(#&S000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
9.1 1754S#1: PA#;...................................................................................................................... 4
9.2 1754S#1: 7!#147S................................................................................................................. 4
40 /'M$#%#N! S3ST&M (&ST(#/T#'NS000000000000000000000000000000000000000000000000000000000000000000000000000000000006
4.1 A15U)7!#S #2 S4)PL7PL2#.................................................................................................. (
4.2 17S71<76 LU!S.................................................................................................................... (
50 $2SS#N! 12T2 T' T5& S#M$%&$%'T-W#N1'WS #NT&(F2/&0000000000000000000000000000000000006
5.1 P176704!76 C2!S#A!#S= #:P7S= A!6 2PC267S..................................................................... >
5.2 7.A)PL7S............................................................................................................................ 10
5.2.1 Suppressing the "Printing" box...........................................................................................10
5.2.2 Filling the screen with a Simpleplot window......................................................................10
5.2.3 A stepb!step guide to inter"acing to #lear$in%.............................................................11
5.2.& #learwinSimpleplot source program................................................................................12
60 S#M$%&$%'T-W#N1'WS #NT&(F2/&00000000000000000000000000000000000000000000000000000000000000000000000000000000015
(.1 02!#S? ................................................................................................................................ 15
(.2 467!#40:4!5 )2US7 BU##2!S?............................................................................................. 15
60 S#M$%&$%'T M2$S0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016
Printed 28/05/2014
Copyright 2001 by BUSS Ltd. All rights resered.
User 5%ide ' 0tn,5
1. Introduction
S4)PL7PL2# lets yo% prod%$e gr/phi$s?
in / +indo+ +ith / #ontinue b%tton bet+een &r/"es
on / *indo+s s%pported printer
into / *indo+s 6ei$e 4ndependent Bit"/p @64BA
into / *indo+s )et/&ile
into / Port/ble !et+orB 5r/phi$s @.P!5A &ile
into / gig @.gi&A &ile
/ll &ro" / di/log bo-= /nd +itho%t the need to per&or" /ny C*indo+s progr/""ingD.
2. Getting started
2.1 Working from a DOS box
#o $o"pile= linB /nd r%n / progr/" +hi$h %ses the Si"pleplot libr/ry &ro" / 62S
bo-?
E 0#!,5 '!Program
E SL4!3
L2 '!Program.2B8
L2 F*indo+sFSyste"FSi"pleplot0tn,5.dll
04L7 '!Program.e-e
E '!Program.7.7
2.2 Creating a project using Pato
1e"e"ber to in$l%de the &ile F*indo+sFSyste"FSi"pleplot0tn,5.dll in yo%r proGe$t.
:o% /re re$o""ended to in$l%de the &tn,5 inter&/$e &ile spmodule0mod or
spmodule0f9- &ro" the Si"pleplot dire$tory.
2 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
2.! "unning #our appication
#he S4)PL7PL2# dei$e drier syste" b%ilds o%tp%t options into / "en%. #he
"en%= /nd site n/"es /nd site n%"bers +ithin it= "/y be $on&ig%red @see Appendi- 6
o& the S('P)*P)+, SupplementA. An /ppli$/tion "/y no"in/te / drier option by
$/lling @Site-ameA or @i.e/-oA
4& the progr/" h/s not spe$i&ied /n o%tp%t option= the %ser is pro"pted by / pop'%p
di/log bo-. #his di/log /lso /llo+s the %ser to sele$t +hi$h printer is %sed i& the
*4!62*SHP14!#71 option is sele$ted.
#he Simpleplot'Windows inter&/$e s%pplies the &ollo+ing options?
6ei$e I Site n/"e 6ei$e des$ription
59(0 *4!62* 6r/+ into Si"pleplot *indo+
59(1 *4!62*SHP14!#71 2%tp%t dire$tly to printer
59(2 *4!62*SH64B Si"pleplot *indo+ J 6ei$e 4ndependent Bit"/p
@.B)PA
59(9 *4!62*SH)7#A04L7 Si"pleplot *indo+ /nd *indo+s )et/&ile@.*)0A
59(4 *4!62*SH67071176 Si"pleplot *indo+ ' only %pd/te on 7nd P/ge
59(5 *4!62*SH64BH2!L: 2%tp%t to .B)P &ile
59(( *4!62*SH*)0H2!L: 2%tp%t to .*)0 &ile
59(> *4!62*SHP!5 2%tp%t to *indo+ /nd .P!5 &ile
59(8 *4!62*SHP!5H2!L: 2%tp%t to .P!5 &ile
59(, *4!62*SH540 2%tp%t to *indo+ /nd .gi& &ile
59>0 *4!62*SH540H2!L: 2%tp%t to .gi& &ile
#he W#N1'WS71#8 /nd W#N1'WS71#87'N%3 options o%tp%t the gr/phi$s to
/ 6ei$e 4ndependent Bit"/p &ile @$/lled dnn.b"p by de&/%ltA.
#he W#N1'WS7M&T2F#%&9 /nd W#N1'WS7WMF7'N%3 options o%tp%t the
gr/phi$s to / *indo+s )et/&ile @$/lled dnn.+"& by de&/%ltA.
#he W#N1'WS7$N!9 /nd W#N1'WS7$N!7'N%3 options o%tp%t / B)P
i"/ge to / Port/ble !et+orB 5r/phi$s &ile @$/lled dnn.png by de&/%ltA. #his option h/s
been deeloped /t BUSS %sing p%bli$ do"/in so&t+/re libpng ersion 1.05 &ro" the
P!5 deelop"ent gro%p.
#he W#N1'WS7!#F9 /nd W#N1'WS7!#F7'N%3 options o%tp%t /n i"/ge to /
540 &ile @$/lled dnn.gi& by de&/%ltA. To e:ercise t+is option "ou must be in
possession of a ;alid licence a<reement wit+ nis"s w+o own t+e
$atent on t+e underl"in< encodin< on w+ic+ !#F ima<es are built0
2%tp%t &ro" the 64B= )et/&ile= png= /nd gi& options $/n dire$ted to / %ser de&ined
&ilen/"e by .
@4= 9= 9= "ilename0
spe$i&ies th/t &ile'b/sed gr/phi$s o%tp%t is to be sent to "ilename +hi$h sho%ld be / &%ll
&ile spe$i&i$/tion @e.g. C:\\ADIR\\AFILE.WMFA. A di&&erent &ile sho%ld be
registered be&ore the st/rt o& e/$h p/ge i& yo% do not +/nt the &ile to be oer+ritten.
28/05/2014 9
User 5%ide ' 0tn,5
!. Windo$s "egistr# %ntries
!.1 "egistr# pat&
#he Si"pleplot'*indo+s inter&/$e %ses entries in the &ile registry syste" %nder the Bey
5=&37%'/2%7M2/5#N&>S'FTW2(&>8SS %td>
!.2 "egistr# entries
#he &ollo+ing s%b'Beys $ontrol di&&erent /spe$ts o& S4)PL7PL2# so&t+/re?
57!71AL ' syste" &iles
64A5 K&ilen/"eE spe$i&ies the destin/tion o& S4)PL7PL2# di/gnosti$s. 4&
there is no 64A5 entry= di/gnosti$s /re sent to the &ile
)7SSA57S.#.#.
;71S;7: K&ilen/"eE points to the S4)PL7PL2# ;ershey d/t/ &ile
$ont/ining so&t+/re &onts /nd "/rBers. #his is %s%/lly inst/lled in the
dire$tory
)7!U ' &/$ilities &or )7!U $on&ig%r/tion? @See Appendi- 6 o& S%pple"entA
C2!045 K&ilen/"eE points to / )7!U $on&ig%r/tion &ile.
AU.HC2!045 Kte-tE $ont/ins te-t to be re/d on the /%-ili/ry
$on&ig%r/tion $h/nnel.
0or e-/"ple= setting the AU.HC2!045 Bey to C670AUL# *4!62*D
$/%ses gr/phi$s o%tp%t to be sent to / +indo+ +itho%t displ/ying / dei$e
option "en% i& no spe$i&i$ dei$e is sele$ted by progr/".
*4!62*S #o spe$i&y det/iled $ontrol oer the rendering o& gr/phi$s
*46#; KintegerE Controls the +idth o& the S4)PL7PL2# gr/phi$s
+indo+ in pi-els. 4& there is no *46#; entry= the +idth de&/%lts to 9/4
o& the +idth o& the s$reen.
;745;# KintegerE Controls the height o& the S4)PL7PL2# gr/phi$s
+indo+ in pi-els. 4& there is no ;745;# entry= the height de&/%lts to 9/4
o& the height o& the s$reen.
!C2L1SKintegerEControls the n%"ber o& $olo%rs //il/ble to the
S4)PL7PL2# gr/phi$s +indo+ on p/lette b/sed dei$es. By de&/%lt the
entire p/lette +ill be //il/ble.
*4!62*H)4!H#7.#H*46#;KintegerE$ontrols the "ini"%" te-t
+idth @in pi-elsA %sed by the S4)PL7PL2# gr/phi$s +indo+. #he
de&/%lt o& 9 pi-els is %nre/d/ble b%t /ppro-i"/tes to s"/ll te-t on
printers.
*4!62*H)4!H#7.#H;745;#KintegerE$ontrols the "ini"%" te-t
height @in pi-elsA %sed by the S4)PL7PL2# gr/phi$s +indo+. #he
de&/%lt o& 5 pi-els is %nre/d/ble b%t /ppro-i"/tes to s"/ll te-t on
printers.
*4!62*HSUBHS:SH02!#Kboole/nE$ontrols +hether the syste" &ont is
%sed /s the de&/%lt &ont @&ont 0A by the S4)PL7PL2# gr/phi$s +indo+.
4& the /l%e is !2 the syste" &ont +ill be %sed= i& the /l%e is :7S then
&ont 1 @/ Co%rier looB'/liBeA +ill be %sed. #he de&/%lt is :7S.
4 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
*4!62*HSCAL7KstringE$ontrols +hether the physi$/l s$/ling o& the
*indo+ is tr%e to the physi$/l dei$e @P;:S4CALA or s$/led /$$ording to
Llogi$/l in$hesL @L254CALA. 4& no entry is present= the drier de&/%lts to
P;:S4CAL. 2ne o& L254CAL= P;:S4CAL @the de&/%ltA.
P14!#71H)4!H#7.#H*46#;KintegerE$ontrols the "ini"%" printer
te-t +idth in pi-els @de&/%lt 9A.
P14!#71H)4!H#7.#H;745;#KintegerE$ontrols the "ini"%" printer
te-t height in pi-els @de&/%lt 5A.
P14!#71HSUBHS:SH02!#Kboole/nE$ontrols +hether the syste" &ont is
%sed /s the de&/%lt &ont @&ont 0A &or the printer. 4& the /l%e is !2 the
syste" &ont is %sed= i& the /l%e is :7S then &ont 1 @/ Co%rier looB'/liBeA
+ill be %sed. #he de&/%lt is :7S.
P14!#71H)A154!HL70#KintegerEsets the printer le&t "/rgin. So"e
printer driers in$orre$tly st/te their print/ble /re/. #he de&/%lt is 5 %nitsM
see P14!#71H)A154!HU!4#S belo+.
P14!#71H)A154!HB2##2)KintegerEsets the printer botto" "/rgin.
So"e printer driers in$orre$tly st/te their print/ble /re/. #he de&/%lt is 5
%nitsM see P14!#71H)A154!HU!4#S belo+.
P14!#71H)A154!H145;#KintegerEsets the printer right "/rgin. So"e
printer driers in$orre$tly st/te their print/ble /re/. #he de&/%lt is 5 %nitsM
see P14!#71H)A154!HU!4#S belo+.
P14!#71H)A154!H#2PKintegerEsets the printer top "/rgin. So"e
printer driers in$orre$tly st/te their print/ble /re/. #he de&/%lt is 5 %nitsM
see P14!#71H)A154!HU!4#S belo+.
P14!#71H)A154!HU!4#SKstringEsets the %nits %sed &or spe$i&i$/tion
o& printer "/rgins. 2ne o& P24!#S= P4.7LS= )) @the de&/%ltA.
P14!#71HL4!7H7.C7SSKintegerESo"e printers render lines thi$Ber th/n
reN%ested. #his $/n be d%e to seer/l re/sons= &or e-/"ple= Posts$ript
Oro%nding errorP or inB spre/ding= /nd $/n res%lt in h/t$hed sh/ding /re/s
/ppe/ring solid. :o% $/n spe$i&y ho+ "/ny e-tr/ pi-els +ider th/n
reN%ested lines /re rendered. #he de&/%lt is 0 pi-els.
P14!#71H04LLHC2L1SKintegerEControls the n%"ber o& $olo%rs
//il/ble &or solid &ill on printers. By de&/%lt S4)PL7PL2# %ses 25(
$olo%rs @in$l%ding b/$Bgro%ndA &or solid &ill on /ll printers. #his /$tion
re&le$ts the obsered $/p/bility o& "/ny "ono$hro"e printer driers.
64SABL7HUS71HAB21#KintegerESele$tiely inhibits S4)PL7PL2#
&ro" iss%ing / QU4# "ess/ge +hile dr/+ing gr/phi$s. #he integer
/rg%"ent spe$i&ied +hi$h QU4# "ess/ge is inhibited= /nd is the s%" o&?
1. #o grey o%t the C/n$el b%tton on / S4)PL7PL2# gr/phi$s +indo+
2. #o inhibit the C/n$el option on the S4)PL7PL2# LPrintingL +indo+=
indi$/ting the $%rrent p/ge n%"ber
#his $o""/nd $/n be %sed to preent /n /ppli$/tion &ro" /borting %nder %ser $ontrol
+hile gr/phi$s /re being prod%$ed. #he de&/%lt o& 0 en/bles the C/n$el options in both
the gr/phi$s +indo+ /nd the LPrintingL +indo+.
28/05/2014 5
User 5%ide ' 0tn,5
'. Compiing s#stem restrictions
'.1 (rguments to Simpepot
#he Si"pleplot libr/ry is $o"piled %sing 4 byte integers /nd 4 byte re/ls. 4& yo% %se
di&&erent siRed /ri/bles= yo% "%st be s%re th/t /ri/bles p/ssed to Si"pleplot /re
$orre$tly spe$i&ied.
'.2 "eser)ed *+,s
Si"pleplot reseres the logi$/l %nit n%"bers @LU!sA 80 to 10,. See t/ble 1. :o%
sho%ld not %se these logi$/l %nit n%"bers bet+een opening /nd $losing Si"pleplot.
#/ble 1 0#!,5 LU!s
4#:P7 Ch/nnel Se$tion S4)PL7.4!4 entry 6e&/%lt LU!
1 6i/gnosti$s 57!71AL 64A5 )7SSA57S.#.# '
8 S$r/t$h &ile ' ' ' ,9
, ;ershey &ont &ile 57!71AL ;71S;7: ' ,4
10 S$r/t$h &ile ' ' ' ,0
' )/p d/t/ &iles 57!71AL )APH4!67.
)APHP2L4#4CAL
' ,1
Note: 0or 4#:P7 see SUB12U#4!7 42C;A!.
( S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
-. Passing data to t&e Simpepot.Windo$s interface
By de&/%lt= the Si"pleplot'*indo+s 4nter&/$e h/ndles gr/phi$s o%tp%t independently
o& the /ppli$/tion. #he Si"pleplot S%bro%tine 666A#A $o""%ni$/tes in&or"/tion
&ro" the /ppli$/tion to $ontrol the Si"pleplot *indo+s inter&/$e. 6/t/ "%st be p/ssed
be&ore the drier is opened /nd +ill re"/in e&&e$tie %ntil the drier is $losed. #he
drier is opened eery ti"e 67<!2 or 67<!A) is $/lled= /nd $losed be&ore opening
/nother dei$e or /&ter 7!6PL#..
S%bro%tine 666A#A $/n be %sed to dr/+ into / Cle/r*inS +indo+= or to $ontrol the
det/iled /ppe/r/n$e o& o%tp%t sent to / printer= 64B @.B)P &ileA= or *indo+s )et/&ile.
#he d/t/ /re held in /n /rr/y o& ite"s o& type
S4)PL7H*4!62*SH6A#AHS#1UC#H# de&ined belo+. 7/$h ite" in the /rr/y
$onsists o& /n 2pCode /nd the /ddress o& 2pCode spe$i&i$ d/t/?
#he /rr/y /nd /ll d/t/ re&eren$ed by iPtr in the /rr/y "%st be SA<7d /s st/ti$
/ri/bles= sin$e they /re not /n/lysed %ntil /n /tte"pt is ne-t "/de to open / dei$e.
#he l/st 2pCode in the /rr/y is /l+/ys S4)PL7H*4!62*SH7!6HL4S#
-.1 Predefined constants/ t#pes/ and OpCodes
sp"od%le."od is deried &ro" sp"od%le.&,0= /nd $ont/ins de&initions o& the $%rrently
//il/ble 2pCodes= /nd so"e %se&%l $onst/nt /l%es /nd types?
constants
4!#7571= PA1A)7#71 ?? J
S4)PL7H*4!62*SH*4!62* T 1= S4)PL7H*4!62*SHP14!#71 T 2= J
S4)PL7H*4!62*SH64B T 4= S4)PL7H*4!62*SH)7#A04L7 T 8
4!#7571= PA1A)7#71 ?? J
S4)PL7HP71C7!# T 0= S4)PL7HP4.7LS T 1= S4)PL7H)) T 2
T3$&s
#:P7 S4)PL7H*4!62*SH6A#AHS#1UC#H#
4!#7571 ?? i2p$ U Corresponds to CSS long int
4!#7571 ?? iPtr U Address o& 2pCode spe$i&i$ d/t/
7!6 #:P7 S4)PL7H*4!62*SH6A#AHS#1UC#H#
#:P7 S4)PL7H*4!62*SH;6CH6A#AH#
4!#7571 ?? h6C U dei$e $onte-t h/ndle
4!#7571 ?? i*idth= i;eight U plotting /re/
7!6 #:P7 S4)PL7H*4!62*SH;6CH6A#AH#
#:P7 S4)PL7H*4!62*SHS4V7H#
4!#7571 ?? iUnits U S4)PL7HP71C7!#= ...HP4.7LS= ...H))
4!#7571 ?? i*idth= i;eight= i6epth
7!6 #:P7 S4)PL7H*4!62*SHS4V7H#
#:P7 S4)PL7H*4!62*SH21454!H#
4!#7571 ?? iUnits U S4)PL7HP71C7!#= ...HP4.7LS= ...H))
4!#7571 ?? i.= i:
7!6 #:P7 S4)PL7H*4!62*SH21454!H#
28/05/2014 >
User 5%ide ' 0tn,5
'p/odes
' S#M$%&7W#N1'WS7&N17%#ST is /l+/ys the l/st entry in the list. #he iPtr
"e"ber o& the 2pCode is not re&eren$ed.
' S#M$%&7W#N1'WS7S&T7W#N1'W7N2M& spe$i&ies the n/"e o& the
gr/phi$s +indo+. #he iPtr "e"ber o& the 2pCode gies the /ddress o& / Rero
ter"in/ted string $ont/ining the reN%ired te-t. #his t/Bes e&&e$t only i& / *indo+ is
$re/ted.
' S#M$%&7W#N1'WS7S&T751/71#M #he iPtr "e"ber o& the 2pCode
points to / str%$t%re o& type S4)PL7H*4!62*SH;6CH6A#AH#. #he str%$t%re
$ont/ins the h/ndle to the dei$e $onte-t /nd its di"ensions.
S4)PL7H*4!62*SHS7#H;6CH64) is %sed to p/ss det/ils /bo%t / Cle/r*inS
*indo+ to Si"pleplotH
' S#M$%&7W#N1'WS7S&T75$2%&TT& #he iPtr "e"ber o& the 2pCode
points to the h/ndle o& the p/lette sele$ted into the 6ei$e Conte-t spe$i&ied by
S4)PL7H*4!62*SHS7#H;6CH64). #he p/lette is only reN%ired by S$reen
)odes th/t /re p/lette b/sed @typi$/lly 25( $olo%r "odesA
- S#M$%&7W#N1'WS7W#N1'W7S#?& #he iPtr "e"ber o& the 2pCode
points to / str%$t%re o& type S4)PL7H*4!62*SHS4V7H#= spe$i&ying the
di"ensions o& the gr/phi$s /re/= /nd option/lly the depth o& .B)P /nd .P!5 &iles. #he
str%$t%re de&ines the %nits in +hi$h the +indo+ siRe is gien. By de&/%lt Si"pleplot
%ses >5W o& the s$reen +idth /nd height= /nd the &%ll /re/ /ddressed by the *indo+s
printer drier. #he /re/ %sed &or / +indo+ is /lso %sed &or / 64B /nd / *indo+s
)et/&ile. #he de&/%lt /re/ "/y /lso be /ltered by the Beys widt+ /nd +ei<+t spe$i&ied
in the registry syste" in
;37:HL2CALH)AC;4!7FS20#*A17FBUSS LtdFF*4!62*S #he di"ensions
oerride /ny /l%es set in the registry syste". Units /re gien /s?
S4)PL7HP71C7!# U 6i"ensions /s W /ge o& S$reen
S4)PL7HP4.7LS U 6i"ensions in s$reen pi-els
S4)PL7H)) U 6i"ensions in ""
.B)P /nd .P!5 &iles /re stored in the depth spe$i&ied by i6epth +hi$h "%st be 0= 8= or
24.
' S#M$%&7W#N1'WS7&N28%&7$(#NT#N!7W#N1'W 7n/bles/inhibits /
Printing bo- +hen o%tp%tting to Printer= 64B or *indo+s )et/&ile. #he iPtr "e"ber
o& the 2pCode gies the /ddress o& / st/ti$ 4!#7571 /ri/ble giing the bit'+ise 21
o&?
S4)PL7H*4!62*SH*4!62*= S4)PL7H*4!62*SHP14!#71=
S4)PL7H*4!62*SH64B= S4)PL7H*4!62*SH)7#A04L7
A Printing bo- is displ/yed +hen o%tp%tting to *4!62*SHP14!#71=
*4!62*SH64BH2!L: or *4!62*SH*)0H2!L:. #he printing bo- is
inhibited by setting the /ppropri/te bit to 0.
' S#M$%&7W#N1'WS7S&T7WMF7(&S
sets the dpi &or / )et/&ile +hen *4!62*SH*)0H2!L: is sele$ted. #he iPtr
"e"ber o& the 2pCode points to /n integer giing the n%"ber o& dots per in$h. #he
de&/%lt resol%tion o& / *indo+s )et/&ile is 1440 dpi. :o% "/y /lso set the "et/&ile
di"ensions by S4)PL7H*4!62*SH*4!62*HS4V7 +hen yo% set the resol%tion.
' S#M$%&7W#N1'WS7W#N1'W7'(#!#N Spe$i&ies the origin o& /
Si"pleplot $re/ted *indo+ . #he iPtr "e"ber o& the 2pCode gies the /ddress o& /
st/ti$ d/t/ str%$t%re o& type S4)PL7H*4!62*SH21454!H#. 6e&/%lt is &or
*indo+s to position the Si"pleplot *indo+ +here it &eels liBe.
8 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
- S#M$%&7W#N1'WS7!#F7M#N#M#?&7$2%. Spe$i&ies +hether to "ini"iRe
the siRe o& the 540 p/lette on the b/sis o& only $ont/ining $olo%rs in$l%ded in the
i"/ge. #he res%lting 540 &iles /re s"/ller= b%t /t the e-pense o& slightly "ore ti"e to
gener/te. #he iPtr "e"ber o& the 2pCode points to / st/ti$ integer set /s 0 to not
"ini"iRe @de&/%ltA= 1 to "ini"iRe.
- S#M$%&7W#N1'WS7!#F7T(2NS$2(&N/37/'%( spe$i&ies / $olo%r to
be rendered /s transparent0 #he $olo%r is spe$i&ied /s / 4'byte he- n%"ber. #he iPtr
"e"ber o& the 2pCode points to / st/ti$ integer. #he top byte sho%ld be 0 i& /ny
$olo%r is to be$o"e tr/nsp/rent. #he ne-t 9 bytes gie the 15B $o"ponents o& the
tr/nsp/rent $olo%r.
- S#M$%&7W#N1'WS7!#F72N#M7M'1& spe$i&ies +hether / single 540 &ile
is to $ont/in /n /ni"/tion seN%en$e. #he iPtr "e"ber o& the 2pCode points to / st/ti$
integer set /s 0 &or no /ni"/tion= 1 &or /ni"/tion seN%en$e +ith s%$$essie &r/"es
$le/ring the b/$Bgro%nd= 2 &or /ni"/tion seN%en$e +ith s%$$essie &r/"es oerl/ying
preio%s &r/"es.
- S#M$%&7W#N1'WS7!#F72N#M7%''$ spe$i&ies +hether /n /ni"/tion &ile
sho%ld loop. #he iPtr "e"ber o& the 2pCode points to / st/ti$ integer set /s '1 &or no
loopingM 0 &or looping inde&initely= E 0 &or I iter/tions.
- S#M$%&7W#N1'WS7!#F72N#M71&%23 spe$i&ies the del/y bet+een
&r/"es in / /ni"/tion seN%en$e in 100ths o& / se$ond. #he iPtr "e"ber o& the 2pCode
points to / st/ti$ integer set /s 0 &or no del/y
28/05/2014 ,
User 5%ide ' 0tn,5
-.2 %xampes
-.2.1 Suppressing t&e 0Printing0 box
;o+ to s%ppress the Printing bo- +hi$h /ppe/rs +hen o%tp%tting to printer= 64B or
*)0
SUBROUTINE StopPrintingBox
use spmodule ! Specifies constants, TYPEs and OpCodes
TYPE(SIMPLE_WINDOWS_DATA_STRUCT_T), DIMENSION(2) :: OpCodes
INTEGER :: iPrintBox = 0 ! Supress for all options
SAVE OpCodes, iPrintBox
OpCodes(1)%iOpc = SIMPLE_WINDOWS_PRINTING_WINDOW
OpCodes(1)%iPtr = LOC(iPrintBox)
OpCodes(2)%iOpc = SIMPLE_WINDOWS_END_LIST
CALL DDDATA(LOC(OpCodes))
CALL DEVNAM('WINDOWS_WMF_ONLY') ! Nominate output device
-.2.2 1iing t&e screen $it& a Simpepot $indo$
;o+ to $re/te / +indo+ +hi$h &ills the displ/y= /nd to $h/nge the *indo+ !/"e?
SUBROUTINE SetDDData
use spmodule ! Specifies constants, TYPEs and OpCodes
TYPE(SIMPLE_WINDOWS_DATA_STRUCT_T), DIMENSION(3) :: OpCodes
CHARACTER*10 :: WindowHeader = 'My Header' ! Alternative name
TYPE(SIMPLE_WINDOWS_SIZE_T) WindowSize
SAVE OpCodes, WindowHeader, WindowSize
WindowSize%iUnits = SIMPLE_PERCENT ! Units for ...
WindowSize%iWidth = 100 ! ... %age screen width
WindowSize%iHeight = 100 ! ... & height
WindowSize%iDepth = 0 ! Set depth to be same as screen
OpCodes(1)%iOpc = SIMPLE_WINDOWS_SET_WINDOW_NAME
OpCodes(1)%iPtr = LOC(WindowHeader)
OpCodes(2)%iOpc = SIMPLE_WINDOWS_WINDOW_SIZE
OpCodes(2)%iPtr = LOC(WindowSize)
OpCodes(3)%iOpc = SIMPLE_WINDOWS_END_LIST
CALL DDDATA(LOC(OpCodes))
CALL DEVNAM('WINDOW')
END SUBROUTINE SetDDData
10 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
-.2.! ( step.b#.step guide to interfacing to CearWin2
*ithin / Cle/r*inS eniron"ent= the &ollo+ing progr/" str%$t%re "/y be %sed to
send Si"pleplot o%tp%t to / Cle/r*inS *indo+?
1. Cre/te / Bit"/p %sing the Cle/r*inS &%n$tion 57#HB4#)APH6CX.
2. P/ss the Bit"/p /nd its di"ensions to Si"pleplot %sing s%bro%tine 666A#A.
9. P/ss the s/"e Bit"/p to Cle/r*inS %sing the &or"/t spe$i&ier Wd+.
4. Use Si"pleplot ro%tines to plot yo%r d/t/.
5. Copy the $ontents o& the Bit"/p to / +indo+ %sing the Cle/r*inS s%bro%tine
*4!62*HUP6A#7X.
Step 1 Create a bitmap
A Bit"/p is di"ensioned in pi-els. #o "/Be yo%r progr/" port/ble on syste"s +ith
di&&erent resol%tion displ/ys= %se the Cle/r*inS &%n$tion 5etSyste")etri$s to &ind
o%t the resol%tion o& yo%r s$reen. #he e-/"ple belo+ sets the Bit"/p di"ensions to
(0W o& the s$reen in - /nd y= /nd then $re/tes / Bit"/p= ret%rning its 6ei$e Conte-t
@6CA.
include <windows.ins>
use spmodule ! Specifies constants, TYPEs and OpCodes
TYPE(SIMPLE_WINDOWS_DATA_STRUCT_T), DIMENSION(3) :: OpCodes
TYPE(SIMPLE_WINDOWS_HDC_DATA_T) WindowData
SAVE OpCodes, WidowData
! Find dimensions of screen in pixels & create bitmap @60%
nXPixels = GetSystemMetrics(SM_CXSCREEN) * 0.6
nYPixels = GetSystemMetrics(SM_CYSCREEN) * 0.6
iBitMapDC = GET_BITMAP_DC@(INTS(nXPixels), INTS(nYPixels))
Step 2 Pass t&e 3itmap and its dimensions to Simpepot
WindowData%hDC = iBitmapDC !
WindowData%iWidth = nXPixels ! ... %age screen width
WindowData%iHeight = nYPixels ! ... & height
OpCodes(1)%iOpc = SIMPLE_WINDOWS_SET_HDC_DIM
OpCodes(1)%iPtr = LOC(WindowData)
OpCodes(2)%iOpc = SIMPLE_WINDOWS_END_LIST
CALL DDDATA(LOC(OpCodes))
CALL DEVNAM('WINDOW') ! Windows driver
Step ! Pass t&e same 3itmap to CearWin2
iAns = WINIO@('... %dw ...', iBitMapDC)
Step ' Cop# t&e contents of t&e 3itmap to $indo$ after dra$ing
CALL OUTBUF ! Purge all Simpleplot buffers
CALL WINDOW_UPDATE@(iBitMapDC)
28/05/2014 11
User 5%ide ' 0tn,5
-.2.' Cear$in.Simpepot source program
UYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
U #4#L7? CL*4!HSP
U <71S42!?1.1
U ABS#1AC#?SBeleton S4)PL7PL2# progr/" to dr/+ into Cle/r*inS *indo+
U
U S#1UC#U17?
U iA Cre/te Cle/r*inS Bit"/p
U iiA P/ss bit"/p J di"ensions to S4)PL7PL2# J sele$t *4!62*
U iiiA Cre/te "en%s J p/ss bit"/p to Cle/r*in
U iA 0or e/$h type o& pi$t%re reN%ested= dr/+ into bit"/p
U then $opy to +indo+
U YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
)26UL7 SP*4! U Cont/ins de&inition o& /l%es to p/ss to 666A#A
#:P7 ;6CH64)H#:P7
4!#7571Y4 iBit"/p6C= i*idth= i;eight
7!6 #:P7 ;6CH64)H#:P7
#:P7 @;6CH64)H#:P7A ?? ;6CH64)
U Use&%l de&inition o& d/t/ str%$t%re to hold Bit"/p6C to p/ss to S4)PL7PL2#
7!6 )26UL7 SP*4!
P1251A) CL*4!HSP
US7 SP)26UL7
US7 SP*4!
4!CLU67 K*4!62*S.4!SE
4!#7571Y4 iAns= 6r/+ContL= 6r/+ContS= 6r/+S%r&L= 6r/+S%r&S
7.#71!AL 6r/+ContL= 6r/+ContS= 6r/+S%r&L= 6r/+S%r&S
U Cre/te Bit"/p (00 - 400 pi-els
;6CH64) W i*idth T (00
;6CH64) W i;eight T 400
;6CH64) W iBit"/p6C T 57#HBit"/pH6CX@;6CH64) W i*idth= ;6CH64) W i;eightA
CALL SPHS%pplyBit"/p U P/ss Bit"/p to S4)PL7PL2#
CALL SetAttrib%tes
iAns T *4!42X@PW$/ZS4)PL7PL2# /nd Cle/r*inS[JPA U C/ption
iAns T *4!42X@PW"nZJ6r/+P // J
PZJConto%rZJSh/ded= JLine[=P // J
PJS%r&/$eZJSh/ded= JLine[=P // J
P\= 7J-it[[JP= J U P\P &or horiR sep/r/tor
6r/+ContS= 6r/+ContL= 6r/+S%r&S= 6r/+S%r&L= P7.4#PA
iAns T *4!42X@PWd+P= ;6CH64) W iBit"/p6CA U P/ss bit"/p6C to Cle/r*in
7!6
U YYYYYYYYYYYYYYYYYYY SPHS%pplyBit"/p YYYYYYYYYYYYYYYYYYYYYYY
SUB12U#4!7 SPHS%pplyBit"/p U P/ss Bit"/p to S4)PL7PL2#
U Set %p / St/ti$ @SA<7dA /rr/y o& 2pCodes. 7/$h 2pCode $onsists o& /n
U 2pCode 46 &ollo+ed by /n option/l /ddress o& / d/t/ str%$t%re.
U #he p/r/"eter blo$B /ddress is p/ssed to S4)PL7PL2# by SUB12U#4!7 666A#A.
U
U 4n this e-/"ple?
U S4)PL7H*4!62*SHS7#H;6CH64) spe$i&ies th/t the ne-t integer is the /ddress
U o& / d/t/ str%$t%re $onsisting o& / Bit"/p 6C &ollo+ed by its di"ensions
U S4)PL7H*4!62*SH7!6HL4S# is the "/nd/tory end o& list ite" +hi$h does not
U reN%ire the /ddress o& / str%$t%re
US7 sp"od%le
US7 SP*4!
12 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
#:P7@S4)PL7H*4!62*SH6A#AHS#1UC#H#A= 64)7!S42!@2A ?? 2pCodes
SA<7 2pCodes
2pCodes@1AWi2p$ T S4)PL7H*4!62*SHS7#H;6CH64) U h6C S di"ensions
2pCodes@1AWiPtr T L2C@;6CH64)A U See de&inition o& SP*4! /boe
2pCodes@2AWi2p$ T S4)PL7H*4!62*SH7!6HL4S#U 7nd o& list
CALL 666A#A@L2C@2pCodesAAU !oti&y S4)PL7PL2#
CALL 67<!A)@P*4!62*PA U Sele$t *indo+
CALL 2*!!7*@.#1U7.A U 4nhibit PContin%eP b%tton
7!6
U YYYYYYYYYYYYYYYYYYYYY #est 0%n$tion YYYYYYYYYYYYYYYYYYYYYYY
17AL 0U!C#42! #st0%n@-= yA
U #st0%n is / si"ple &%n$tion o& 2 /ri/bles &or de"onstr/tion p%rposes
17AL -= yU 4!? /rg%"ents to &%n$tion o& 2 /ri/bles $/lled by
U 0!C!#S= 0!S;6S= 0!SU10 belo+
#st0%n T SQ1#@ABS@C2S@yA Y S4!@-AAA
7!6
U YYYYYYYYYYYYYYY C/ll'b/$B? Conto%r 'E Line YYYYYYYYYYYYYYYY
4!#7571 0U!C#42! 6r/+ContL@A
U 6r/+ / line $onto%r plot.
7.#71!AL #st0%n U 0%n$tion gien /boe
17AL #st0%n
CALL !7*PA5 U St/rt ne+ p/ge
CALL #4#L7>@P;igherP=PCentreP= PLine Conto%rs &ro" S4)PL7PL2#PA
CALL A.7S>@P.P= P:PA U St/rt ne+ pi$t%re J dr/+ /-es
CALL Upd/te*in U Copy Bit"/p so &/r to +indo+
CALL C#!U)B@.#1U7.A U 1eN%est l/belled $onto%rs
CALL 0!C!#S@#st0%nA U 6r/+ $onto%r plot
CALL C#!U)B@.0ALS7.A U C/n$el l/belled $onto%rs
CALL Upd/te*in U Copy Bit"/p to +indo+
6r/+ContL T 1 U 1et%rn d%""y /l%e
7!6
28/05/2014 19
User 5%ide ' 0tn,5
U YYYYYYYYYYYYYYY C/ll'b/$B? Conto%r 'E Sh/ded YYYYYYYYYYYYYY
4!#7571 0U!C#42! 6r/+ContS@A
U 6r/+ / &illed $onto%r plot.
7.#71!AL #st0%n
17AL #st0%n
17AL R)in= R)/- U #o re$eie &%n$tion r/nge
CALL !7*PA5 U St/rt ne+ p/ge
CALL #4#L7>@P;igherP=PCentreP= P0illed Conto%rs &ro" S4)PL7PL2#PA
CALL !7*P4C U St/rt ne+ pi$t%re
CALL L4)S0!@#st0%n= R)in= R)/-A U 0ind &%n$tion r/nge
CALL )P3>;@PLo+erP= PCentreP= R)in= R)/-= J U Add Bey
PR T SQ1#@ABS@C2S@yA Y S4!@-AAAPA
CALL Upd/te*in U Copy Bit"/p to +indo+
CALL 0!S;6S@#st0%nA U 6r/+ sh/ded $onto%r
CALL Upd/te*in U Copy Bit"/p to +indo+
6r/+ContS T 1 U 1et%rn d%""y /l%e
7!6
U YYYYYYYYYYYYYYY C/ll'b/$B? S%r&/$e 'E Line YYYYYYYYYYYYYYYY
4!#7571 0U!C#42! 6r/+S%r&L@A
U 6r/+ / line s%r&/$e plot.
7.#71!AL #st0%n
17AL #st0%n
CALL !7*PA5 U St/rt ne+ p/ge
CALL #4#L7>@P;igherP=PCentreP= PLine S%r&/$e &ro" S4)PL7PL2#PA
CALL 0!SU10@#st0%nA U St/rt pi$t%re J dr/+ s%r&/$e
CALL Upd/te*in U Copy Bit"/p to +indo+
6r/+S%r&L T 1 U 1et%rn d%""y /l%e
7!6
U YYYYYYYYYYYYYYY C/ll'b/$B? S%r&/$e'E Sh/ded YYYYYYYYYYYYYY
4!#7571 0U!C#42! 6r/+S%r&S@A
U 6r/+ / solid s%r&/$e plot.
7.#71!AL #st0%n
17AL #st0%n
17AL R)in= R)/-
CALL !7*PA5 U St/rt ne+ p/ge
CALL #4#L7>@P;igherP=PCentreP= P0illed S%r&/$e &ro" S4)PL7PL2#PA
CALL L4)S0!@#st0%n= R)in= R)/-A U 0ind &%n$tion r/nge
CALL )P3>;@PLo+erP= PCentreP= R)in= R)/-= J U Add Bey
PR T SQ1#@ABS@C2S@yA Y S4!@-AAAPA
CALL Upd/te*in U Copy Bit"/p to +indo+
CALL 4SS;A6@4A U Spe$i&y sh/ding
CALL 0!SU10@#st0%nA U St/rt pi$t%re J dr/+ s%r&/$e
CALL 4SS;A6@0A U C/n$el sh/ding
CALL Upd/te*in U Copy Bit"/p to +indo+
6r/+S%r&S T 1 U 1et%rn d%""y /l%e
7!6
U YYYYYYYYYYYYYYYYYYYYY Upd/te *indo+ YYYYYYYYYYYYYYYYYYYYYY
U #his s%bro%tine is $/lled +heneer the bit"/p is to be $opied to the s$reen.
U Until this is $/lled= none o& the gr/phi$s prod%$ed by S4)PL7PL2# is isible
SUB12U#4!7 Upd/te*in
US7 SP*4!
CALL 2U#BU0 U 0l%sh b%&&ers
CALL *4!62*HUP6A#7X@;6CH64) W iBit"/p6CA U Copy Bit"/p to +indo+
7!6
U YYYYYYYYYYYYYYYYYYYY 6e&ine $h/r/$teristi$s o& pi$t%re YYYYYYYYYYYYYYY
SUB12U#4!7 SetAttrib%tes
CALL S7#P!S@1= 1= 9= 4A U )%lti'$olo%red
14 S4)PL7PL2# 2'1(
User 5%ide ' &tn,5
CALL C;S7#@',AU Sele$t &ont
CALL 0!A17A@0.0= 5.0= 0.0= 5.0A U 6e&ine &%n$tion r/nge
CALL SCAL7S@0.0= 5.0= 1= 0.0= 5.0= 1A U Set s$/les &or $onto%r
CALL 4S#:P7@9AU 1eN%est $ross'h/t$hed iso"etri$s
CALL 4S0ULL@.#1U7.A U 0ill pi$t%re +ith iso"etri$
CALL 4SA.7S@.#1U7.A U 1eN%est /-es on iso"etri$s
CALL S0)7S;@21= 21A U 7/l%/te &%n$tion oer 21-21 grid
7!6
4. Simpepot.Windo$s interface
4.1 1onts5
#he Si"pleplot'*indo+s inter&/$e s%pports the &ollo+ing &onts sele$ted by
SUB12U#4!7 C;S7#?
Ch/r/$teristi$s prede&ined /re? @nor"/lly #r%e#ypeA
Selected b! 1old Fixed
$idth
(talic Famil! *xample
$hset@0A r a r )odern Courier
1
$hset@'1A r a r )odern Courier
$hset@'2A r a a )odern Courier-Oblique
$hset@'9A a a r )odern Courier-Bold
$hset@'4A a a a )odern Courier-BoldOblique
$hset@'5A r r r 1o"/n #i"es'1o"/n
$hset@'(A r r a 1o"/n ,imes(talic
$hset@'>A a r r 1o"/n Times-8old
$hset@'8A a r a 1o"/n Times-BoldItalic
$hset@',A r r r S+iss Helvetica
$hset@'10A r r a S+iss Helvetica-Oblique
$hset@'11A a r r S+iss Helvetica-Bold
$hset@'12A a r a S+iss Helvetica-BoldOblique
1
#he &ont sele$ted by C;S7#@0A $/n be $on&ig%red to be the S:S#7)H02!# ' see spe$i&i$/tion o&
1egistry options
4.2 Identif#ing mouse buttons5
#he /l%e ret%rned by S%bro%tine SUB12U#4!7 57#.: /s 4;4# is /s &ollo+s?
5r/phi$s 4np%t? )o%se @p%$B= penA s%pport?
B%tto
n
</l%e
1 '1
2 '2
9 '4
4 '8
28/05/2014 15
User 5%ide ' 0tn,5
6. SI7P*%P*O8 7aps
#he S4)PL7PL2# "/pping "od%le is s%pplied +ith t+o independent sets o& $o/stline
d/t/ both o& +hi$h h/e been en$oded &or r%n'ti"e e&&i$ien$y?
#he shoreline &ile is b/sed on ;ershey shoreline d/t/= /nd $onsists o& G%st oer
20000 d/t/ points. 4t "/y be %se&%l in / deelop"ent eniron"ent +here speed o&
o%t p%t is "ore i"port/nt th/n N%/lity. #his is the de&/%lt d/t/ &ile.
#he geological s%rey &ile is b/sed on the US 5eologi$/l S%rey d/t/= /nd $onsists
o& G%st oer (0000 d/t/ points.
#hese d/t/ &iles /re /$$essed i/ /n inde- &ile +hi$h is de&ined by the 1egistry syste"
%nder the Bey
5=&37%'/2%7M2/5#N&>S'FTW2(&>8SS %td>>!&N&(2%
)APH641 points to the dire$tory in +hi$h /ll the S4)PL7PL2# )/ps
d/t/ &iles /re stored.
)APH4!67. spe$i&ies +hi$h inde- &ile is to be /$$essed.
)APHP2L4#4CAL spe$i&ies the d/t/ &ile &or politi$/l bo%nd/ries
#o sele$t the ;ershey shoreline d/t/= set the &ollo+ing entries %nder the 57!71AL
Bey?
)APH4!67. SL4!67..6A#
)APHP2L4#4CAL SLP2L#CL.6A#
#o sele$t the US 5eologi$/l S%rey d/t/?
)APH4!67. 5S4!67..6A#
)APHP2L4#4CAL 5SP2L#CL.6A#
1( S4)PL7PL2# 2'1(

You might also like