Pass blur strength from command line arguments

This commit is contained in:
Sebastian Frysztak 2017-02-15 12:01:08 +01:00
parent 024dc2980e
commit 0f989add08
3 changed files with 10 additions and 11 deletions

6
blur.c
View File

@ -24,9 +24,9 @@
#include <math.h>
#include "blur.h"
/* Performs a simple 2D Gaussian blur of radius @radius on surface @surface. */
/* Performs a simple 2D Gaussian blur of standard devation @sigma surface @surface. */
void
blur_image_surface (cairo_surface_t *surface, int radius)
blur_image_surface (cairo_surface_t *surface, int sigma)
{
cairo_surface_t *tmp;
int width, height;
@ -73,8 +73,6 @@ blur_image_surface (cairo_surface_t *surface, int radius)
// [1]: http://www.peterkovesi.com/papers/FastGaussianSmoothing.pdf
// [2]: https://en.wikipedia.org/wiki/Gaussian_blur#Mathematics
float sigma = 5;
int n = lrintf((sigma*sigma)/(SIGMA_AV*SIGMA_AV));
if (n < 3) n = 3;

3
blur.h
View File

@ -8,8 +8,7 @@
#define SIGMA_AV 2
#define HALF_KERNEL KERNEL_SIZE / 2
void blur_image_surface (cairo_surface_t *surface, int radius);
void blur_image_surface(cairo_surface_t *surface, int sigma);
void blur_impl_horizontal_pass_sse2(uint32_t *src, uint32_t *dst, int width, int height);
void blur_impl_horizontal_pass_generic(uint32_t *src, uint32_t *dst, int width, int height);

View File

@ -79,7 +79,7 @@ char date_format[32] = "%A, %m %Y\0";
/* opts for blurring */
bool blur = false;
bool step_blur = false;
int blur_radius = 5;
int blur_sigma = 5;
uint32_t last_resolution[2];
xcb_window_t win;
@ -866,7 +866,7 @@ int main(int argc, char *argv[]) {
{"timestr", required_argument, NULL, 0},
{"datestr", required_argument, NULL, 0},
{"blur", no_argument, NULL, 'B'},
{"blur", required_argument, NULL, 'B'},
{"ignore-empty-password", no_argument, NULL, 'e'},
{"inactivity-timeout", required_argument, NULL, 'I'},
@ -878,7 +878,7 @@ int main(int argc, char *argv[]) {
if ((username = pw->pw_name) == NULL)
errx(EXIT_FAILURE, "pw->pw_name is NULL.\n");
char *optstring = "hvnbdc:p:ui:teI:frsS:kB";
char *optstring = "hvnbdc:p:ui:teI:frsS:kB:";
while ((o = getopt_long(argc, argv, optstring, longopts, &optind)) != -1) {
switch (o) {
case 'v':
@ -950,6 +950,7 @@ int main(int argc, char *argv[]) {
break;
case 'B':
blur = true;
blur_sigma = atoi(optarg);
break;
case 0:
if (strcmp(longopts[optind].name, "debug") == 0)
@ -1084,7 +1085,8 @@ int main(int argc, char *argv[]) {
break;
default:
errx(EXIT_FAILURE, "Syntax: i3lock-color [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]"
" [-i image.png] [-t] [-e] [-I timeout] [-f] [-r|s] [-S screen_number] [-k] [--fuckton-of-color-args=rrggbbaa]");
" [-i image.png] [-t] [-e] [-I timeout] [-f] [-r|s] [-S screen_number] [-k]"
" [-B blur_strength] [--fuckton-of-color-args=rrggbbaa]");
}
}
@ -1207,7 +1209,7 @@ int main(int argc, char *argv[]) {
cairo_destroy(ctx);
cairo_surface_destroy(xcb_img);
}
blur_image_surface(img, 10000);
blur_image_surface(img, blur_sigma);
}
/* Pixmap on which the image is rendered to (if any) */