Class: PureData::Canvas

Inherits:
Object
  • Object
show all
Defined in:
lib/puredata/canvas.rb

Direct Known Subclasses

Abstraction

Instance Method Summary collapse

Constructor Details

#initialize(pd, name, opt = {}) ⇒ Canvas

Returns a new instance of Canvas.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/puredata/canvas.rb', line 7

def initialize(pd, name, opt={})
  @pd = pd
  @name = name.dup
  unless /\.pd\Z/ =~ @name
    @name += ".pd"
  end
  @dir = File.expand_path(opt[:dir] || Dir.pwd)
  @pdobjid = 0
  pos = opt[:position] || [100, 100]
  size = opt[:size] || [300, 300]
  font = opt[:font] || 10
  pd.msg("pd", "filename", @name, @dir)
  pd.msg("#N", "canvas #{pos.join(" ")} #{size.join(" ")} #{font}")
  pd.msg("#X", "pop", "1")
end

Instance Method Details

#connect(outlet, inlet) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/puredata/canvas.rb', line 35

def connect(outlet, inlet)
  obj1, outletid = outlet.outlet_tuple
  obj2, inletid = inlet.inlet_tuple
  oid1 = obj1.pdobjid
  oid2 = obj2.pdobjid
  self.msg("connect", oid1, outletid, oid2, inletid)
end

#msg(*args) ⇒ Object



23
24
25
# File 'lib/puredata/canvas.rb', line 23

def msg(*args)
  @pd.msg("pd-#{@name}", *args)
end

#obj(klass, *args) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/puredata/canvas.rb', line 27

def obj(klass, *args)
  self.msg("obj", 10, 10, klass, *args)
  id = @pdobjid
  @pdobjid += 1
  cls = PureData.dispatch_object_class(klass, *args)
  cls.new(@pd, self, id, klass, *args)
end

#save(path = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/puredata/canvas.rb', line 43

def save(path=nil)
  if path
    name = File.basename(path)
    unless /\.pd\Z/ =~ name
      name += ".pd"
    end
    dir = File.expand_path(File.dirname(path))
  else
    name = @name
    dir = @dir
  end
  self.msg("savetofile", name, dir)
  @name = name
  @dir = dir
  nil
end