File: diagram.tcl

package info (click to toggle)
tklib 0.6%2B20190108-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 15,008 kB
  • sloc: tcl: 75,757; sh: 5,789; ansic: 792; pascal: 359; makefile: 70; sed: 53; exp: 21
file content (62 lines) | stat: -rw-r--r-- 1,557 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
## -*- 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