def print_stack(call_info, parent_time)
total_time = call_info.total_time
percent_parent = (total_time/parent_time)*100
percent_total = (total_time/@overall_time)*100
return unless percent_total > min_percent
color = self.color(percent_total)
kids = call_info.children
visible = percent_total >= threshold
expanded = percent_total >= expansion
display = visible ? "block" : "none"
@output.print "<li class=\"color#{color}\" style=\"display:#{display}\">"
if kids.empty?
@output.print "<img src=\"empty.png\">"
else
visible_children = kids.any?{|ci| (ci.total_time/@overall_time)*100 >= threshold}
image = visible_children ? (expanded ? "minus" : "plus") : "empty"
@output.print "<img class=\"toggle\" src=\"#{image}.png\">"
end
@output.printf " %4.2f%% (%4.2f%%) %s %s\n", percent_total, percent_parent, link(call_info), graph_link(call_info)
unless kids.empty?
if expanded
@output.print "<ul>"
else
@output.print '<ul style="display:none">'
end
kids.sort_by{|c| -c.total_time}.each do |callinfo|
print_stack callinfo, total_time
end
@output.print "</ul>"
end
@output.print "</li>"
end