Added a ring width to customize the width of the ring

pull/150/head
Matthew Fry 2017-10-05 19:25:07 -06:00
parent d03fbe70c9
commit f1f239e970
2 changed files with 21 additions and 4 deletions

View File

@ -104,6 +104,7 @@ double date_size = 14.0;
double text_size = 28.0;
double modifier_size = 14.0;
double circle_radius = 90.0;
double ring_width = 7.0;
char* verif_text = "verifying…";
char* wrong_text = "wrong!";
@ -947,6 +948,7 @@ int main(int argc, char *argv[]) {
{"textsize", required_argument, NULL, 0},
{"modsize", required_argument, NULL, 0},
{"radius", required_argument, NULL, 0},
{"ring-width", required_argument, NULL, 0},
{NULL, no_argument, NULL, 0}};
@ -1289,6 +1291,19 @@ int main(int argc, char *argv[]) {
circle_radius = 90.0;
}
}
else if (strcmp(longopts[longoptind].name, "ring-width") == 0) {
char *arg = optarg;
double new_width = 0;
if (sscanf(arg, "%lf", &new_width) != 1)
errx(1, "ring-width must be a number\n");
if (new_width < 1) {
fprintf(stderr, "ring-width must be a positive integer; ignoring...\n");
}
else {
ring_width = new_width;
}
}
break;
case 'f':
show_failed_attempts = true;

View File

@ -26,10 +26,12 @@
#include <time.h>
extern double circle_radius;
extern double ring_width;
#define BUTTON_RADIUS (circle_radius)
#define BUTTON_SPACE (BUTTON_RADIUS + 5)
#define BUTTON_CENTER (BUTTON_RADIUS + 5)
#define RING_WIDTH (ring_width)
#define BUTTON_SPACE (BUTTON_RADIUS + RING_WIDTH)
#define BUTTON_CENTER (BUTTON_RADIUS + RING_WIDTH)
#define BUTTON_DIAMETER (2 * BUTTON_SPACE)
#define CLOCK_WIDTH 400
#define CLOCK_HEIGHT 200
@ -324,7 +326,7 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
(unlock_state >= STATE_KEY_PRESSED || auth_state > STATE_AUTH_IDLE || show_indicator)) {
cairo_scale(ctx, scaling_factor(), scaling_factor());
/* Draw a (centered) circle with transparent background. */
cairo_set_line_width(ctx, 7.0);
cairo_set_line_width(ctx, RING_WIDTH);
cairo_arc(ctx,
BUTTON_CENTER /* x */,
BUTTON_CENTER /* y */,
@ -465,7 +467,7 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
* keypress. */
if (unlock_state == STATE_KEY_ACTIVE ||
unlock_state == STATE_BACKSPACE_ACTIVE) {
cairo_set_line_width(ctx, 7.0);
cairo_set_line_width(ctx, RING_WIDTH);
cairo_new_sub_path(ctx);
double highlight_start = (rand() % (int)(2 * M_PI * 100)) / 100.0;
cairo_arc(ctx,