From 673038d43a596f136ac9979d194566d9a512b10b Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 10 Jul 2022 16:25:12 -0400 Subject: [PATCH] ENH generalize static drawing module --- core | 2 +- drawing/static.lua | 72 ++++++++++++++++++++++++---------------------- main.lua | 8 ++++-- 3 files changed, 43 insertions(+), 39 deletions(-) diff --git a/core b/core index 9b0b36d..8107eb1 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 9b0b36d18a7d69535a9516712bfb53f7aafeb4f2 +Subproject commit 8107eb193fcdd53899af16b44c7ce8eaafb412c4 diff --git a/drawing/static.lua b/drawing/static.lua index ff0b066..4b8f182 100644 --- a/drawing/static.lua +++ b/drawing/static.lua @@ -1,8 +1,10 @@ -local common = require 'common' -local geometry = require 'geometry' -local fill_rect = require 'fill_rect' +local common = require 'common' +local pure = require 'pure' +local geometry = require 'geometry' +local geom = require 'geom' +local fill_rect = require 'fill_rect' -return function(left_modules, center_modules, right_modules) +return function(module_sets) local __cairo_set_source_surface = cairo_set_source_surface local __cairo_image_surface_create = cairo_image_surface_create local __cairo_translate = cairo_translate @@ -10,16 +12,16 @@ return function(left_modules, center_modules, right_modules) local __cairo_destroy = cairo_destroy local __cairo_paint = cairo_paint - local _make_static_surface = function(x, y, w, h, modules) + local _make_static_surface = function(box, modules) local panel_line_thickness = 1 -- move over by half a pixel so the lines don't need to be antialiased - local _x = x + 0.5 - local _y = y + 0.5 - local panel = common.make_panel(_x, _y, w, h, panel_line_thickness) + local _x = box.corner.x + 0.5 + local _y = box.corner.y + 0.5 + local panel = common.make_panel(_x, _y, box.width, box.height, panel_line_thickness) local cs_x = _x - panel_line_thickness * 0.5 local cs_y = _y - panel_line_thickness * 0.5 - local cs_w = w + panel_line_thickness - local cs_h = h + panel_line_thickness + local cs_w = box.width + panel_line_thickness + local cs_h = box.height + panel_line_thickness local cs = __cairo_image_surface_create(CAIRO_FORMAT_ARGB32, cs_w, cs_h) local cr = __cairo_create(cs) @@ -34,29 +36,29 @@ return function(left_modules, center_modules, right_modules) return { x = cs_x, y = cs_y, s = cs } end - local cs_left = _make_static_surface( - geometry.LEFT_X - geometry.PANEL_MARGIN_X, - geometry.TOP_Y - geometry.PANEL_MARGIN_Y, - geometry.SECTION_WIDTH + geometry.PANEL_MARGIN_X * 2, - geometry.SIDE_HEIGHT + geometry.PANEL_MARGIN_Y * 2, - left_modules - ) + -- TODO pull this out eventually + local boxes = { + geom.make_box( + geometry.LEFT_X - geometry.PANEL_MARGIN_X, + geometry.TOP_Y - geometry.PANEL_MARGIN_Y, + geometry.SECTION_WIDTH + geometry.PANEL_MARGIN_X * 2, + geometry.SIDE_HEIGHT + geometry.PANEL_MARGIN_Y * 2 + ), + geom.make_box( + geometry.CENTER_LEFT_X - geometry.PANEL_MARGIN_X, + geometry.TOP_Y - geometry.PANEL_MARGIN_Y, + geometry.CENTER_WIDTH + geometry.PANEL_MARGIN_Y * 2 + geometry.CENTER_PAD, + geometry.CENTER_HEIGHT + geometry.PANEL_MARGIN_Y * 2 + ), + geom.make_box( + geometry.RIGHT_X - geometry.PANEL_MARGIN_X, + geometry.TOP_Y - geometry.PANEL_MARGIN_Y, + geometry.SECTION_WIDTH + geometry.PANEL_MARGIN_X * 2, + geometry.SIDE_HEIGHT + geometry.PANEL_MARGIN_Y * 2 + ) + } - local cs_center = _make_static_surface( - geometry.CENTER_LEFT_X - geometry.PANEL_MARGIN_X, - geometry.TOP_Y - geometry.PANEL_MARGIN_Y, - geometry.CENTER_WIDTH + geometry.PANEL_MARGIN_Y * 2 + geometry.CENTER_PAD, - geometry.CENTER_HEIGHT + geometry.PANEL_MARGIN_Y * 2, - center_modules - ) - - local cs_right = _make_static_surface( - geometry.RIGHT_X - geometry.PANEL_MARGIN_X, - geometry.TOP_Y - geometry.PANEL_MARGIN_Y, - geometry.SECTION_WIDTH + geometry.PANEL_MARGIN_X * 2, - geometry.SIDE_HEIGHT + geometry.PANEL_MARGIN_Y * 2, - right_modules - ) + local cs = pure.zip_with(_make_static_surface, boxes, module_sets) local draw_static_surface = function(cr, cs_obj) __cairo_set_source_surface(cr, cs_obj.s, cs_obj.x, cs_obj.y) @@ -64,8 +66,8 @@ return function(left_modules, center_modules, right_modules) end return function(cr) - draw_static_surface(cr, cs_left) - draw_static_surface(cr, cs_center) - draw_static_surface(cr, cs_right) + for i = 1, #cs do + draw_static_surface(cr, cs[i]) + end end end diff --git a/main.lua b/main.lua index 1dc56c6..dff8401 100644 --- a/main.lua +++ b/main.lua @@ -52,9 +52,11 @@ function conky_start(update_interval) local using_ac = sys.battery_status_reader(battery) local draw_static = static( - {stm.static, gfx.static, proc.static}, - {rw.static, net.static}, - {pcm.static, fs.static, pwr.static, mem.static} + { + {stm.static, gfx.static, proc.static}, + {rw.static, net.static}, + {pcm.static, fs.static, pwr.static, mem.static} + } ) local STATS_FILE = '/tmp/.conky_pacman'