1 /************************************************************************
2 ************************************************************************
4 Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
5 ---------------------------------------------------------------------
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 ************************************************************************
20 ************************************************************************/
22 #include "parSchema.h"
28 schema
* makeParSchema(schema
* s1
, schema
* s2
)
30 // make sure s1 and s2 have same width
31 return new parSchema( makeEnlargedSchema(s1
, s2
->width()),
32 makeEnlargedSchema(s2
, s1
->width()) );
36 parSchema::parSchema (schema
* s1
, schema
* s2
)
37 : schema( s1
->inputs()+s2
->inputs(),
38 s1
->outputs()+s2
->outputs(),
40 s1
->height() + s2
->height() ),
43 fInputFrontier(s1
->inputs()),
44 fOutputFrontier(s1
->outputs())
46 assert (s1
->width() == s2
->width());
50 void parSchema::place(double ox
, double oy
, int orientation
)
52 beginPlace(ox
, oy
, orientation
);
54 if (orientation
== kLeftRight
) {
55 fSchema1
->place(ox
, oy
, orientation
);
56 fSchema2
->place(ox
, oy
+fSchema1
->height(), orientation
);
58 fSchema2
->place(ox
, oy
, orientation
);
59 fSchema1
->place(ox
, oy
+fSchema2
->height(), orientation
);
65 point
parSchema::inputPoint(unsigned int i
) const
67 return (i
< fInputFrontier
)
68 ? fSchema1
->inputPoint(i
)
69 : fSchema2
->inputPoint(i
-fInputFrontier
);
72 point
parSchema::outputPoint(unsigned int i
) const
74 return (i
< fOutputFrontier
)
75 ? fSchema1
->outputPoint(i
)
76 : fSchema2
->outputPoint(i
-fOutputFrontier
);
79 void parSchema::draw(device
& dev
)
85 void parSchema::collectTraits(collector
& c
)
87 fSchema1
->collectTraits(c
);
88 fSchema2
->collectTraits(c
);