FAUST compiler  0.9.9.6b8
recSchema.h
Go to the documentation of this file.
1 /************************************************************************
2  ************************************************************************
3  FAUST compiler
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.
10 
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.
15 
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  ************************************************************************/
21 
22 #ifndef __RECSCHEMA__
23 #define __RECSCHEMA__
24 
25 
26 #include "schema.h"
27 
28 
33 class recSchema : public schema
34 {
37  vector<point> fInputPoint;
38  vector<point> fOutputPoint;
39 
40  public:
41  friend schema* makeRecSchema (schema* s1, schema* s2);
42 
43  virtual void place(double ox, double oy, int orientation);
44  virtual void draw(device& dev);
45  virtual point inputPoint(unsigned int i) const;
46  virtual point outputPoint(unsigned int i) const;
47  virtual void collectTraits(collector& c);
48 
49  private:
50  recSchema (schema* s1, schema* s2, double width);
51  void drawDelaySign(device& dev, double x, double y, double size);
52 
53  void collectFeedback(collector& c, const point& src, const point& dst, double dx, const point& out);
54  void collectFeedfront(collector& c, const point& src, const point& dst, double dx);
55 
56 };
57 
58 
59 #endif
60 
61 
void drawDelaySign(device &dev, double x, double y, double size)
Draw the delay sign of a feedback connection.
Definition: recSchema.cpp:149
virtual void collectTraits(collector &c)
Draw the two subschema s1 and s2 as well as the feedback connections between s1 and s2...
Definition: recSchema.cpp:162
void collectFeedback(collector &c, const point &src, const point &dst, double dx, const point &out)
Draw a feedback connection between two points with an horizontal displacement dx. ...
Definition: recSchema.cpp:202
void collectFeedfront(collector &c, const point &src, const point &dst, double dx)
Draw a feedfrom connection between two points with an horizontal displacement dx. ...
Definition: recSchema.cpp:226
vector< point > fInputPoint
Definition: recSchema.h:37
double y() const
Definition: schema.h:139
double width() const
Definition: schema.h:126
Definition: device.h:32
friend schema * makeRecSchema(schema *s1, schema *s2)
Creates a new recursive schema (s1 ~ s2).
Definition: recSchema.cpp:34
virtual point inputPoint(unsigned int i) const
The input points s1 ~ s2.
Definition: recSchema.cpp:110
double x() const
Definition: schema.h:138
int orientation() const
Definition: schema.h:140
Definition: schema.h:40
An abstract block diagram schema.
Definition: schema.h:97
schema * fSchema1
Definition: recSchema.h:35
schema * fSchema2
Definition: recSchema.h:36
place and connect two diagrams in recursive composition
Definition: recSchema.h:33
vector< point > fOutputPoint
Definition: recSchema.h:38
virtual void place(double ox, double oy, int orientation)
The two subschema are placed centered vertically, s2 on top of s1.
Definition: recSchema.cpp:71
virtual point outputPoint(unsigned int i) const
The output points s1 ~ s2.
Definition: recSchema.cpp:119
recSchema(schema *s1, schema *s2, double width)
Constructor of a recursive schema (s1 ~ s2).
Definition: recSchema.cpp:48
virtual void draw(device &dev)
Draw the two subschema s1 and s2 as well as the implicit feedback delays between s1 and s2...
Definition: recSchema.cpp:129