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
|
# Any copyright is dedicated to the Public Domain.
# http://creativecommons.org/publicdomain/zero/1.0/
def summarize_nscolor(valobj, internal_dict):
colors = {
"#800000": "maroon",
"#ff0000": "red",
"#ffa500": "orange",
"#ffff00": "yellow",
"#808000": "olive",
"#800080": "purple",
"#ff00ff": "fuchsia",
"#ffffff": "white",
"#00ff00": "lime",
"#008000": "green",
"#000080": "navy",
"#0000ff": "blue",
"#00ffff": "aqua",
"#008080": "teal",
"#000000": "black",
"#c0c0c0": "silver",
"#808080": "gray",
}
value = valobj.GetValueAsUnsigned(0)
if value == 0:
return "transparent"
if value & 0xFF000000 != 0xFF000000:
return "rgba(%d, %d, %d, %f)" % (
value & 0xFF,
(value >> 8) & 0xFF,
(value >> 16) & 0xFF,
((value >> 24) & 0xFF) / 255.0,
)
color = "#%02x%02x%02x" % (value & 0xFF, (value >> 8) & 0xFF, (value >> 16) & 0xFF)
if color in colors:
return colors[color]
return color
def summarize_rect(valobj, internal_dict):
x = valobj.GetChildMemberWithName("x").GetValue()
y = valobj.GetChildMemberWithName("y").GetValue()
width = valobj.GetChildMemberWithName("width").GetValue()
height = valobj.GetChildMemberWithName("height").GetValue()
return "%s, %s, %s, %s" % (x, y, width, height)
def rect_is_empty(valobj):
width = valobj.GetChildMemberWithName("width").GetValueAsSigned()
height = valobj.GetChildMemberWithName("height").GetValueAsSigned()
return width <= 0 or height <= 0
def init(debugger):
debugger.HandleCommand(
"type summary add nscolor -v -F lldbutils.gfx.summarize_nscolor"
)
debugger.HandleCommand("type summary add nsRect -v -F lldbutils.gfx.summarize_rect")
debugger.HandleCommand(
"type summary add nsIntRect -v -F lldbutils.gfx.summarize_rect"
)
debugger.HandleCommand(
"type summary add gfxRect -v -F lldbutils.gfx.summarize_rect"
)
|