62 lines
1.5 KiB
62 lines
1.5 KiB
## -*- tcl -*- |
|
## (C) 2010 Andreas Kupries <andreas_kupries@users.sourceforge.net> |
|
## BSD Licensed |
|
# # ## ### ##### ######## ############# ###################### |
|
|
|
# |
|
# diagram drawing package. |
|
# |
|
|
|
## |
|
# # ## ### ##### ######## ############# ###################### |
|
## Requisites |
|
|
|
package require Tcl 8.5- ; # Want the nice things it brings |
|
# (dicts, {*}, etc.) |
|
package require diagram::core ; # Core drawing management |
|
package require diagram::basic ; # Basic shapes. |
|
package require snit ; # Object framework. |
|
|
|
# # ## ### ##### ######## ############# ###################### |
|
## Implementation |
|
|
|
snit::type ::diagram { |
|
|
|
# # ## ### ##### ######## ############# ###################### |
|
## Public API :: Instance construction, and method routing |
|
|
|
constructor {canvas args} { |
|
install core using diagram::core ${selfns}::CORE $canvas |
|
install basic using diagram::basic ${selfns}::BASIC $core |
|
|
|
set mybaseline [$core snap] |
|
|
|
if {![llength $args]} return |
|
$core draw {*}$args |
|
return |
|
} |
|
|
|
method reset {} { |
|
$core drop |
|
$core restore $mybaseline |
|
return |
|
} |
|
|
|
delegate method * to core |
|
|
|
# # ## ### ##### ######## ############# ###################### |
|
## Instance data, just two components, |
|
|
|
component core ; # Fundamental drawing engine and management |
|
component basic ; # Fundamental shapes we can draw |
|
|
|
variable mybaseline |
|
|
|
## |
|
# # ## ### ##### ######## ############# ###################### |
|
} |
|
|
|
# # ## ### ##### ######## ############# ###################### |
|
## Ready |
|
|
|
package provide diagram 1
|
|
|