/ld27

To get this branch, use:
bzr branch http://9ix.org/bzr/ld27

« back to all changes in this revision

Viewing changes to zoetrope/debug/locals.lua

  • Committer: Josh C
  • Date: 2013-08-25 02:04:52 UTC
  • Revision ID: josh@9ix.org-20130825020452-py8fijli8m5te5gv
improve performance with (sketchy, experimental) sprite batches

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
DebugLocals = DebugInstrument:extend
3
 
{
4
 
        visible = false,
5
 
        width = 'narrow',
6
 
 
7
 
        onNew = function (self)
8
 
                self.title.text = 'Locals'
9
 
                self.names = self:add(Text:new{ font = self.font })
10
 
                self.values = self:add(Text:new{ font = self.font })
11
 
                self.lineHeight = self.names._fontObj:getHeight()
12
 
 
13
 
                debugger.showLocals = function (level) self:showLocals(level) end
14
 
                debugger.hideLocals = function (level) self.visible = false end
15
 
        end,
16
 
 
17
 
        -- Method: showLocals
18
 
        -- Makes the instrument visible and shows all locals at a stack level.
19
 
        -- To hide this instrument, just set its visible property to false.
20
 
        --
21
 
        -- Arguments:
22
 
        --              level - level to show
23
 
        --
24
 
        -- Returns:
25
 
        --              nothing
26
 
 
27
 
        showLocals = function (self, level)
28
 
                self.visible = true
29
 
                self.contentHeight = 2 * self.spacing
30
 
                self.names.text = ''
31
 
                self.values.text = ''
32
 
 
33
 
                local i = 1
34
 
 
35
 
                while true do
36
 
                        local name, value = debug.getlocal(level, i)
37
 
                        if not name then break end
38
 
 
39
 
                        -- skip variables named (*temporary*)
40
 
 
41
 
                        if not string.match(name, '^%(') then
42
 
                                self.names.text = self.names.text .. name .. '\n'
43
 
                                self.values.text = self.values.text .. tostring(value) .. '\n'
44
 
                                self.contentHeight = self.contentHeight + self.lineHeight
45
 
                        end
46
 
 
47
 
                        i = i + 1
48
 
                end
49
 
        end,
50
 
 
51
 
        onResize = function (self, x, y, width, height)
52
 
                self.names.y, self.values.y = y + self.spacing, y + self.spacing
53
 
                self.names.height, self.values.height = height, height
54
 
 
55
 
                self.names.x = x + self.spacing
56
 
                self.names.width = width * 0.3 - self.spacing * 2
57
 
                
58
 
                self.values.x = self.names.x + self.names.width + self.spacing
59
 
                self.values.width = width * 0.7
60
 
        end
61
 
}