Add ConfigMenu icon (config gear with an arrow)

This commit is contained in:
Ben Loftis
2025-01-09 11:01:25 -06:00
committed by Robin Gareus
parent e93bbccd64
commit 08d3c4260a
2 changed files with 52 additions and 0 deletions

View File

@@ -1330,6 +1330,54 @@ icon_config_wheel (cairo_t* cr, const int width, const int height, const uint32_
VECTORICONSTROKE (lw, fg_color);
}
static void
icon_config_menu (cairo_t* cr, const int width, const int height, const uint32_t fg_color)
{
const double x = width * .5;
const double y = height * .5;
const double yoff = height * .08;
const double r0 = std::min (x, y) * .2 * 0.8;
const double r1 = std::min (x, y) * .55 * 0.8;
const double r2 = std::min (x, y) * .70 * 0.8;
const double ar = std::min (x, y) * .25 * 0.8;
const double lw = DEFAULT_LINE_WIDTH;
cairo_save (cr);
cairo_translate(cr, 0, -yoff);
for (int i = 0; i < 8; ++i) {
double ang0 = i * 2.0 * M_PI / 8.0;
double ang1 = (i + 1) * 2.0 * M_PI / 8.0;
double angm = 2.0 * M_PI / 48.0;
double angd = 2.0 * M_PI / 64.0;
cairo_arc (cr, x, y, r2, ang0 - angm, ang0 + angm);
cairo_arc (cr, x, y, r1, ang0 + angm + angd, ang1 - angm - angd);
}
cairo_close_path (cr);
VECTORICONSTROKEFILL (lw);
cairo_arc (cr, x, y, r0, 0, 2.0 * M_PI);
VECTORICONSTROKE (lw, fg_color);
cairo_new_path (cr);
cairo_arc (cr, x, y, r0, 0, 2.0 * M_PI);
ardour_icon_set_source_inv_rgba (cr, 0xe5 | (fg_color & 0xffffff00));
cairo_fill (cr);
cairo_restore(cr);
cairo_save (cr);
cairo_translate(cr, x, height - ar * 2 - y * 0.02);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
cairo_move_to (cr, -ar, 0);
cairo_rel_line_to (cr, ar * 2, 0);
cairo_rel_line_to (cr, -ar, ar);
cairo_line_to (cr, -ar, 0);
VECTORICONSTROKE (lw * .5, fg_color);
cairo_restore(cr);
}
static void
icon_pcb_via (cairo_t* cr, const int width, const int height, const uint32_t fg_color)
{
@@ -2002,6 +2050,9 @@ ArdourWidgets::ArdourIcon::render (cairo_t* cr
case ConfigReset: /* unused */
icon_config_wheel (cr, width, height, fg_color, -1);
break;
case ConfigMenu:
icon_config_menu (cr, width, height, fg_color);
break;
case PowerOnOff: /* unused */
icon_on_off (cr, width, height, fg_color);
break;

View File

@@ -70,6 +70,7 @@ namespace ArdourWidgets { namespace ArdourIcon {
LatencyClock,
Config,
ConfigReset,
ConfigMenu,
PowerOnOff,
ShadedPlusSign,
Folder,