diff --git a/lua/widget.lua b/lua/widget.lua index 1a58de6..04aacd9 100644 --- a/lua/widget.lua +++ b/lua/widget.lua @@ -219,7 +219,8 @@ local function bar(cr, x, y, w, h, frac, c) setcol(cr, c); rrect(cr, x, y, math.max(2, w * frac), h, 3); cairo_fill(cr) end --- Grafico de linea sobre un panel redondeado --------------------------------- +-- Grafico sobre un panel redondeado. Cada serie con s.fill=true se dibuja como +-- area (relleno translucido) ademas de la linea; si no, solo linea. local function graph(cr, x, y, w, h, series) setcol(cr, COL.panel); rrect(cr, x, y, w, h, 4); cairo_fill(cr) -- Maximo comun a todas las series (fijo si se indica) @@ -232,12 +233,19 @@ local function graph(cr, x, y, w, h, series) end end for _, s in ipairs(series) do - cairo_set_line_width(cr, 1.3); setcol(cr, s.c) local n = #s.data + local function px(i) return x + (i - 1) / (n - 1) * w end + local function py(i) return y + h - (s.data[i] / maxv) * (h - 4) - 2 end + if s.fill then + cairo_move_to(cr, px(1), y + h) + for i = 1, n do cairo_line_to(cr, px(i), py(i)) end + cairo_line_to(cr, px(n), y + h) + cairo_close_path(cr) + setcol(cr, s.c, 0.25); cairo_fill(cr) + end + cairo_set_line_width(cr, 1.3); setcol(cr, s.c) for i = 1, n do - local px = x + (i - 1) / (n - 1) * w - local py = y + h - (s.data[i] / maxv) * (h - 4) - 2 - if i == 1 then cairo_move_to(cr, px, py) else cairo_line_to(cr, px, py) end + if i == 1 then cairo_move_to(cr, px(i), py(i)) else cairo_line_to(cr, px(i), py(i)) end end cairo_stroke(cr) end @@ -341,34 +349,34 @@ local function draw_sys(cr) -- CPU local gh = row("CPU " .. math.floor(num("${cpu cpu0}")) .. "%", str("${freq_g}") .. "GHz " .. cputemp .. "°C", COL.teal, 26) - graph(cr, x, y, gw, gh, { { data = hist.cpu, c = COL.green, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.cpu, c = COL.green, max = 100, fill = true } }); y = y + gh + 4 -- RAM gh = row("RAM " .. math.floor(num("${memperc}")) .. "%", str("${mem}") .. " / " .. str("${memmax}"), COL.green, 26) - graph(cr, x, y, gw, gh, { { data = hist.ram, c = COL.green, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.ram, c = COL.green, max = 100, fill = true } }); y = y + gh + 4 -- CPU TEMP gh = row("CPU TEMP " .. cputemp .. "°C", "", COL.yellow, 20) - graph(cr, x, y, gw, gh, { { data = hist.cputemp, c = COL.yellow, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.cputemp, c = COL.yellow, max = 100, fill = true } }); y = y + gh + 4 -- GPU gh = row("GPU " .. str("${execi 2 " .. MET .. " gpu_util}") .. "%", gputemp .. "°C", COL.cyan, 26) - graph(cr, x, y, gw, gh, { { data = hist.gputil, c = COL.cyan, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.gputil, c = COL.cyan, max = 100, fill = true } }); y = y + gh + 4 -- GPU TEMP gh = row("GPU TEMP " .. gputemp .. "°C", "", COL.yellow, 20) - graph(cr, x, y, gw, gh, { { data = hist.gputemp, c = COL.yellow, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.gputemp, c = COL.yellow, max = 100, fill = true } }); y = y + gh + 4 -- VRAM gh = row("VRAM " .. str("${execi 2 " .. MET .. " gpu_memp}") .. "%", str("${execi 2 " .. MET .. " gpu_memi}"), COL.purple, 26) - graph(cr, x, y, gw, gh, { { data = hist.vram, c = COL.purple, max = 100 } }); y = y + gh + 4 + graph(cr, x, y, gw, gh, { { data = hist.vram, c = COL.purple, max = 100, fill = true } }); y = y + gh + 4 -- DISK I/O gh = row("DISK I/O", str("${diskio}"), COL.orange, 26) - graph(cr, x, y, gw, gh, { { data = hist.diskio, c = COL.purple } }); y = y + gh + 6 + graph(cr, x, y, gw, gh, { { data = hist.diskio, c = COL.purple, fill = true } }); y = y + gh + 6 -- Uso de discos text(cr, x, y + 10, "USO DE DISCOS", COL.snow, 10, true); y = y + 16