You are on page 1of 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(