drawing
TCL/TK UseCase1
Abstract : Used by both the Tcl code and the PP Group's C++ code to
create objects and display them.
Comments : The names of the calls in here are the exact ones called in the
C++. First the object structure is created, then it is displayed.
proc tclCEdge {SourceX SourceY DestX DestY} {
set midx [expr ((($DestX - $SourceX) / 2 ) + $SourceX)]
set midy [expr ((($DestY - $SourceY) / 2 ) + $SourceY)]
puts "$SourceX $SourceY $DestX $DestY $midx $midy"
set first [.area create line $SourceX $SourceY $midx $midy \
-arrow last -tags {arrow edge cedge} ]
set second [.area create line $midx $midy $DestX $DestY \
-tags {finish edge cedge} ]
}
proc tclAEdge {SourceX SourceY DestX DestY} {
set space 3
set midx [expr ((($DestX - $SourceX) / 2 ) + $SourceX)]
set midy [expr ((($DestY - $SourceY) / 2 ) + $SourceY)]
if {[expr ($DestX - $SourceX)] != 0} {
set slope [expr abs((($DestY - $SourceY) * 100) / ($DestX - $SourceX))]
puts "$slope"
if {[expr $slope] >= 100} {
set xspace $space
set yspace 0
} else {
set xspace 0
set yspace $space
}
} else {
set xspace 0
set yspace $space
}
#puts "$SourceX $SourceY $DestX $DestY $midx $midy"
set first [.area create line [expr $SourceX - $xspace] \
[expr $SourceY - $yspace] [expr $midx - $xspace] \
[expr $midy - $yspace] \
-arrow last -tags {arrow edge aedge} ]
set second [.area create line [expr $midx - $xspace] \
[expr $midy - $yspace] [expr $DestX - $xspace] \
[expr $DestY - $yspace] \
-tags {finish edge aedge} ]
set first [.area create line [expr $SourceX + $xspace] \
[expr $SourceY + $yspace] [expr $midx + $xspace] \
[expr $midy + $yspace] \
-arrow last -tags {arrow edge aedge} ]
set second [.area create line [expr $midx + $xspace] \
[expr $midy + $yspace] [expr $DestX + $xspace] \
[expr $DestY + $yspace] \
-tags {finish edge aedge} ]
}
proc tclCVert {labelName labelX labelY ShapeX ShapeY} {
global INCLUDE
set new [.area create bitmap [expr $ShapeX] [expr $ShapeY] \
-bitmap "@$INCLUDE/constr.xbm" -tags {node connode}]
set newlabel [.area create text [expr $labelX] [expr $labelY] \
-text $labelName -tags {label conlabel}]
}
proc tclAVert {labelName labelX labelY ShapeX ShapeY} {
global INCLUDE
set new [.area create bitmap [expr $ShapeX] [expr $ShapeY] \
-bitmap "@$INCLUDE/alter.xbm" -tags {node altnode}]
set newlabel [.area create text [expr $labelX] [expr $labelY] \
-text $labelName -tags {label altlabel}]
}