~ubuntu-branches/ubuntu/lucid/graphviz/lucid-security

« back to all changes in this revision

Viewing changes to pathplan/path.lefty

  • Committer: Bazaar Package Importer
  • Author(s): Stephen M Moraco
  • Date: 2002-02-05 18:52:12 UTC
  • Revision ID: james.westby@ubuntu.com-20020205185212-8i04c70te00rc40y
Tags: upstream-1.7.16
ImportĀ upstreamĀ versionĀ 1.7.16

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
path = [
 
2
    'data' = [
 
3
    ];
 
4
    'defvattr' = [
 
5
        'vieworig' = ['x' = 1; 'y' = 1;];
 
6
        'viewsize' = ['x' = 820; 'y' = 520;];
 
7
        'wrect' = [
 
8
            0 = ['x' = -400; 'y' = 0;];
 
9
            1 = ['x' = 400; 'y' = 500;];
 
10
        ];
 
11
        'vsize' = ['x' = 800; 'y' = 500;];
 
12
        'w2v' = 1;
 
13
    ];
 
14
];
 
15
path.init = function () {
 
16
    local i, j, n, s, t, start, end;
 
17
 
 
18
    path.createview (null);
 
19
    i = 0;
 
20
    fd = openio ('file', '/tmp/ek', 'r');
 
21
#    while ((path.descs[i] = path.readdesc ()))
 
22
#        i = i + 1;
 
23
    echo ('ready');
 
24
};
 
25
path.createview = function (attr) {
 
26
    local name, vieworig, viewsize;
 
27
    name = attr.name;
 
28
    if (~attr.name)
 
29
        name = 'PATH';
 
30
    vieworig = attr.vieworig;
 
31
    if (~attr.vieworig)
 
32
        vieworig = path.defvattr.vieworig;
 
33
    viewsize = attr.viewsize;
 
34
    if (~attr.viewsize)
 
35
        viewsize = path.defvattr.viewsize;
 
36
    path.view = createwidget (-1, [
 
37
        'type'   = 'view';
 
38
        'name'   = name;
 
39
        'origin' = vieworig;
 
40
        'size'   = viewsize;
 
41
    ]);
 
42
    path.scroll = createwidget (path.view, ['type' = 'scroll';]);
 
43
    widgets[path.view].closeview  = path.closeview;
 
44
    path.canvas = createwidget (path.scroll, ['type' = 'canvas';]);
 
45
    setwidgetattr (path.canvas, [
 
46
        'window' = path.data.defvattr.wrect;
 
47
        'viewport' = viewsize;
 
48
    ]);
 
49
    clear (path.canvas);
 
50
    if (attr.funcs) {
 
51
        for (fid in attr.funcs)
 
52
            widgets[path.canvas][fid] = attr.funcs[fid];
 
53
    } else {
 
54
        widgets[path.canvas].leftup     = path.leftup;
 
55
        widgets[path.canvas].leftmove   = path.leftmove;
 
56
        widgets[path.canvas].leftdown   = path.leftdown;
 
57
        widgets[path.canvas].middledown = path.middledown;
 
58
        widgets[path.canvas].middlemove = path.middlemove;
 
59
        widgets[path.canvas].middleup   = path.middleup;
 
60
        widgets[path.canvas].rightdown  = path.rightdown;
 
61
        widgets[path.canvas].rightmove  = path.rightmove;
 
62
        widgets[path.canvas].rightup    = path.rightup;
 
63
        widgets[path.canvas].keyup      = path.keyup;
 
64
        widgets[path.canvas].keydown    = path.keydown;
 
65
        widgets[path.canvas].redraw     = path.redraw;
 
66
    }
 
67
    setwidgetattr (path.canvas, ['color' = [2 = 'red';];]);
 
68
    setwidgetattr (path.canvas, ['color' = [3 = 'green';];]);
 
69
    return path.canvas;
 
70
};
 
71
path.readdesc = function () {
 
72
    local desc, s, t, n, i;
 
73
 
 
74
    wrect = [
 
75
        0 = ['x' = 9999; 'y' = 9999;];
 
76
        1 = ['x' = -9999; 'y' = -9999;];
 
77
    ];
 
78
    if (~(s = readline (fd))) {
 
79
        echo ('EOF/0', 'choice', 'ok');
 
80
        return;
 
81
    }
 
82
echo ('> ', s);
 
83
    if (s ~= 'edge') {
 
84
        ask ('error in file/0', 'choice', 'ok');
 
85
        return;
 
86
    }
 
87
    if (~(s = readline (fd))) {
 
88
        ask ('EOF/01', 'choice', 'ok');
 
89
        return;
 
90
    }
 
91
    desc.tail = s;
 
92
    if (~(s = readline (fd))) {
 
93
        ask ('EOF/02', 'choice', 'ok');
 
94
        return;
 
95
    }
 
96
    desc.head = s;
 
97
    if (~(s = readline (fd))) {
 
98
        ask ('EOF', 'choice', 'ok');
 
99
        return;
 
100
    }
 
101
    if (s ~= 'points') {
 
102
        ask ('error in file', 'choice', 'ok');
 
103
        return;
 
104
    }
 
105
    s = readline (fd);
 
106
    n = ston (s);
 
107
    for (i = 0; i < n; i = i + 1) {
 
108
        s = readline (fd);
 
109
        t = split (s, ' ');
 
110
        desc.points[i] = ['x' = ston (t[0]); 'y' = ston (t[1]);];
 
111
        if (wrect[0].x > desc.points[i].x - 10)
 
112
            wrect[0].x = desc.points[i].x - 10;
 
113
        if (wrect[0].y > desc.points[i].y - 10)
 
114
            wrect[0].y = desc.points[i].y - 10;
 
115
        if (wrect[1].x < desc.points[i].x + 10)
 
116
            wrect[1].x = desc.points[i].x + 10;
 
117
        if (wrect[1].y < desc.points[i].y + 10)
 
118
            wrect[1].y = desc.points[i].y + 10;
 
119
    }
 
120
    desc.points[i] = copy (desc.points[0]);
 
121
    if (~(s = readline (fd))) {
 
122
        ask ('EOF/2', 'choice', 'ok');
 
123
        return;
 
124
    }
 
125
    if (s ~= 'splpoints') {
 
126
        ask ('error in file/2', 'choice', 'ok');
 
127
        return;
 
128
    }
 
129
    s = readline (fd);
 
130
    n = ston (s);
 
131
    for (i = 0; i < n; i = i + 1) {
 
132
        s = readline (fd);
 
133
        t = split (s, ' ');
 
134
        desc.splpoints[i] = ['x' = ston (t[0]); 'y' = ston (t[1]);];
 
135
        if (wrect[0].x > desc.splpoints[i].x - 10)
 
136
            wrect[0].x = desc.splpoints[i].x - 10;
 
137
        if (wrect[0].y > desc.splpoints[i].y - 10)
 
138
            wrect[0].y = desc.splpoints[i].y - 10;
 
139
        if (wrect[1].x < desc.splpoints[i].x + 10)
 
140
            wrect[1].x = desc.splpoints[i].x + 10;
 
141
        if (wrect[1].y < desc.splpoints[i].y + 10)
 
142
            wrect[1].y = desc.splpoints[i].y + 10;
 
143
    }
 
144
    desc.wrect = wrect;
 
145
    return desc;
 
146
};
 
147
path.drawdesc = function (desc) {
 
148
    local i;
 
149
 
 
150
    tt = getwidgetattr (path.canvas, [0 = 'size';]);
 
151
    wrect = copy (desc.wrect);
 
152
    r1 = (wrect[1].x - wrect[0].x) / (wrect[1].y - wrect[0].y);
 
153
    r2 = tt.size.x / tt.size.y;
 
154
    if (r1 > r2)
 
155
        wrect[1].y = wrect[0].y + (wrect[1].x - wrect[0].x) / r2;
 
156
    else
 
157
        wrect[1].x = wrect[0].x + (wrect[1].y - wrect[0].y) * r2;
 
158
    setwidgetattr (path.canvas, ['window' = wrect;]);
 
159
    clear (path.canvas);
 
160
#    for (i = 0; desc.points[i]; i = i + 1) {
 
161
#        text (path.canvas, null,
 
162
#                ['x' = desc.points[i].x + 10; 'y' = desc.points[i].y;],
 
163
#                concat ('p ', i), 'fixed', 14, 'lc');
 
164
#    }
 
165
    polygon (path.canvas, null, desc.points);
 
166
    for (i = 0; desc.splpoints[i]; i = i + 1) {
 
167
        text (path.canvas, null,
 
168
                ['x' = desc.splpoints[i].x + 10; 'y' = desc.splpoints[i].y;],
 
169
                concat ('sp ', i), 'fixed', 14, 'lc');
 
170
    }
 
171
#    polygon (path.canvas, null, desc.splpoints);
 
172
    splinegon (path.canvas, null, desc.splpoints);
 
173
    text (path.canvas, null,
 
174
            ['x' = desc.wrect[0].x + 1; 'y' = desc.wrect[0].y + 10;],
 
175
            concat (tail, ' -> ', head), 'fixed', 14, 'lc');
 
176
};
 
177
path.redraw = function (data) {
 
178
    path.drawdesc (path.desc);
 
179
};
 
180
path.keyup = function (data) {
 
181
    if (data.key == 'n') {
 
182
        clear (path.canvas);
 
183
        if ((path.desc = path.readdesc ()))
 
184
            path.drawdesc (path.desc);
 
185
    } else if (data.key == ' ')
 
186
        path.redraw (data);
 
187
};
 
188
path.init ();
 
189
monitorfile = function (data) {
 
190
echo (111);
 
191
    if (~(tail = readline (0))) {
 
192
        echo ('eof1');
 
193
        exit ();
 
194
    }
 
195
echo (222);
 
196
    if (~(head = readline (0))) {
 
197
        echo ('eof2');
 
198
        exit ();
 
199
    }
 
200
echo (head);
 
201
echo (333);
 
202
    for (i in path.descs) {
 
203
        desc = path.descs[i];
 
204
        if (desc.tail == tail & desc.head == head) {
 
205
echo (111122222);
 
206
            path.drawdesc (desc);
 
207
            break;
 
208
        }
 
209
    }
 
210
echo (444);
 
211
};
 
212
monitor ('on', 0);