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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
--- branches/pd-extended/0.41/pd/src/m_binbuf.c 2009/02/11 01:28:08 10756
+++ branches/pd-extended/0.41/pd/src/m_binbuf.c 2009/02/11 06:44:40 10757
@@ -952,8 +952,9 @@
t_binbuf *newb = binbuf_new();
t_atom *vec = oldb->b_vec;
t_int n = oldb->b_n, nextindex, stackdepth = 0, stack[MAXSTACK],
- nobj = 0, i;
+ nobj = 0, i, gotfontsize = 0;
t_atom outmess[MAXSTACK], *nextmess;
+ t_float fontsize = 10;
if (!maxtopd)
binbuf_addv(newb, "ss;", gensym("max"), gensym("v2"));
for (nextindex = 0; nextindex < n; )
@@ -1179,12 +1180,17 @@
stack[stackdepth] = nobj;
stackdepth++;
nobj = 0;
+ if(!gotfontsize) { /* only the first canvas sets the font size */
+ fontsize = atom_getfloatarg(6, natom, nextmess);
+ gotfontsize = 1;
+ }
+ t_float x = atom_getfloatarg(2, natom, nextmess);
+ t_float y = atom_getfloatarg(3, natom, nextmess);
binbuf_addv(newb, "ssffff;",
gensym("#N"), gensym("vpatcher"),
- atom_getfloatarg(2, natom, nextmess),
- atom_getfloatarg(3, natom, nextmess),
- atom_getfloatarg(4, natom, nextmess),
- atom_getfloatarg(5, natom, nextmess));
+ x, y,
+ atom_getfloatarg(4, natom, nextmess) + x,
+ atom_getfloatarg(5, natom, nextmess) + y);
}
}
if (!strcmp(first, "#X"))
@@ -1193,12 +1199,17 @@
&& (ISSYMBOL (&nextmess[4], "pd")))
{
binbuf_addv(newb, "ss;", gensym("#P"), gensym("pop"));
- binbuf_addv(newb, "ssffffss;",
- gensym("#P"), gensym("newobj"),
- atom_getfloatarg(2, natom, nextmess),
- atom_getfloatarg(3, natom, nextmess), 50., 1.,
- gensym("patcher"),
- atom_getsymbolarg(5, natom, nextmess));
+ SETSYMBOL(outmess, gensym("#P"));
+ SETSYMBOL(outmess + 1, gensym("newobj"));
+ outmess[2] = nextmess[2];
+ outmess[3] = nextmess[3];
+ SETFLOAT(outmess + 4, 40.*(natom-5));
+ SETFLOAT(outmess + 5, fontsize);
+ SETSYMBOL(outmess + 6, gensym("p"));
+ for (i = 5; i < natom; i++)
+ outmess[i+2] = nextmess[i];
+ SETSEMI(outmess + natom + 2);
+ binbuf_add(newb, natom + 3, outmess);
if (stackdepth) stackdepth--;
nobj = stack[stackdepth];
nobj++;
@@ -1212,25 +1223,25 @@
gensym("inlet"),
atom_getfloatarg(2, natom, nextmess),
atom_getfloatarg(3, natom, nextmess),
- 15.);
+ 10. + fontsize);
else if (classname == gensym("inlet~"))
binbuf_addv(newb, "ssffff;", gensym("#P"),
gensym("inlet"),
atom_getfloatarg(2, natom, nextmess),
atom_getfloatarg(3, natom, nextmess),
- 15., 1.);
+ 10. + fontsize, 1.);
else if (classname == gensym("outlet"))
binbuf_addv(newb, "ssfff;", gensym("#P"),
gensym("outlet"),
atom_getfloatarg(2, natom, nextmess),
atom_getfloatarg(3, natom, nextmess),
- 15.);
+ 10. + fontsize);
else if (classname == gensym("outlet~"))
binbuf_addv(newb, "ssffff;", gensym("#P"),
gensym("outlet"),
atom_getfloatarg(2, natom, nextmess),
atom_getfloatarg(3, natom, nextmess),
- 15., 1.);
+ 10. + fontsize, 1.);
else if (classname == gensym("bng"))
binbuf_addv(newb, "ssffff;", gensym("#P"),
gensym("button"),
@@ -1261,10 +1272,14 @@
SETSYMBOL(outmess + 1, gensym("newex"));
outmess[2] = nextmess[2];
outmess[3] = nextmess[3];
- SETFLOAT(outmess + 4, 50);
- SETFLOAT(outmess + 5, 1);
+ SETFLOAT(outmess + 4, 40.*(natom-4));
+ SETFLOAT(outmess + 5, fontsize);
for (i = 4; i < natom; i++)
outmess[i+2] = nextmess[i];
+ if (classname == gensym("hsl"))
+ SETSYMBOL(outmess + 6, gensym("hslider"));
+ if (classname == gensym("osc~"))
+ SETSYMBOL(outmess + 6, gensym("cycle~"));
SETSEMI(outmess + natom + 2);
binbuf_add(newb, natom + 3, outmess);
}
@@ -1279,8 +1294,8 @@
(strcmp(second, "msg") ? "comment" : "message")));
outmess[2] = nextmess[2];
outmess[3] = nextmess[3];
- SETFLOAT(outmess + 4, 50);
- SETFLOAT(outmess + 5, 1);
+ SETFLOAT(outmess + 4, 40.*(natom-4));
+ SETFLOAT(outmess + 5, fontsize);
for (i = 4; i < natom; i++)
outmess[i+2] = nextmess[i];
SETSEMI(outmess + natom + 2);
|