URI: 
       tReformat code a bit - croptool - Image cropping tool
  HTML git clone git://lumidify.org/croptool.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/croptool.git (encrypted, but very slow)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 60095c0878b2e20accd0412419e3472a00b6ef6a
   DIR parent bec9b79f432571ee583f444a974617abda52f774
  HTML Author: lumidify <nobody@lumidify.org>
       Date:   Sat,  6 Mar 2021 11:42:48 +0100
       
       Reformat code a bit
       
       Diffstat:
         M croptool.c                          |     130 ++++++++++++++++++++++++-------
       
       1 file changed, 100 insertions(+), 30 deletions(-)
       ---
   DIR diff --git a/croptool.c b/croptool.c
       t@@ -235,7 +235,10 @@ mainloop(void) {
                                        break;
                                case ConfigureNotify:
                                        if (RESIZE_REDRAW)
       -                                        resize_window(event.xconfigure.width, event.xconfigure.height);
       +                                        resize_window(
       +                                            event.xconfigure.width,
       +                                            event.xconfigure.height
       +                                        );
                                        break;
                                case ButtonPress:
                                        if (event.xbutton.button == Button1)
       t@@ -299,10 +302,14 @@ setup(int argc, char *argv[]) {
                if (XdbeQueryExtension(state.dpy, &major, &minor)) {
                        int num_screens = 1;
                        Drawable screens[] = { DefaultRootWindow(state.dpy) };
       -                XdbeScreenVisualInfo *info = XdbeGetVisualInfo(state.dpy, screens, &num_screens);
       +                XdbeScreenVisualInfo *info = XdbeGetVisualInfo(
       +                    state.dpy, screens, &num_screens
       +                );
                        if (!info || num_screens < 1 || info->count < 1) {
       -                        fprintf(stderr, "Warning: No visuals support Xdbe, "
       -                                        "double buffering disabled.\n");
       +                        fprintf(stderr,
       +                            "Warning: No visuals support Xdbe, "
       +                            "double buffering disabled.\n"
       +                        );
                        } else {
                                XVisualInfo xvisinfo_templ;
                                xvisinfo_templ.visualid = info->visinfo[0].visual;
       t@@ -315,9 +322,10 @@ setup(int argc, char *argv[]) {
                                    &xvisinfo_templ, &matches
                                );
                                if (!xvisinfo_match || matches < 1) {
       -                                fprintf(stderr, "Warning: Couldn't match a Visual "
       -                                                "with double buffering, double "
       -                                                "buffering disabled.\n");
       +                                fprintf(stderr,
       +                                    "Warning: Couldn't match a Visual with "
       +                                    "double buffering, double buffering disabled.\n"
       +                                );
                                } else {
                                        state.vis = xvisinfo_match->visual;
                                        state.depth = xvisinfo_match->depth;
       t@@ -334,6 +342,8 @@ setup(int argc, char *argv[]) {
                memset(&attrs, 0, sizeof(attrs));
                attrs.background_pixel = BlackPixel(state.dpy, state.screen);
                attrs.colormap = state.cm;
       +        /* this causes the window contents to be kept
       +         * when it is resized, leading to less flicker */
                attrs.bit_gravity = NorthWestGravity;
                state.win = XCreateWindow(state.dpy, DefaultRootWindow(state.dpy), 0, 0,
                    state.window_w, state.window_h, 0, state.depth,
       t@@ -341,7 +351,9 @@ setup(int argc, char *argv[]) {
        
                #ifndef NODB
                if (state.db_enabled) {
       -                state.back_buf = XdbeAllocateBackBufferName(state.dpy, state.win, XdbeCopied);
       +                state.back_buf = XdbeAllocateBackBufferName(
       +                    state.dpy, state.win, XdbeCopied
       +                );
                        state.drawable = state.back_buf;
                } else {
                        state.drawable = state.win;
       t@@ -365,7 +377,11 @@ setup(int argc, char *argv[]) {
                }
                XAllocColor(state.dpy, state.cm, &state.col2);
        
       -        XSelectInput(state.dpy, state.win, StructureNotifyMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ExposureMask);
       +        XSelectInput(
       +            state.dpy, state.win,
       +            StructureNotifyMask | KeyPressMask | ButtonPressMask |
       +            ButtonReleaseMask | PointerMotionMask | ExposureMask
       +        );
        
                state.wm_delete_msg = XInternAtom(state.dpy, "WM_DELETE_WINDOW", False);
                XSetWMProtocols(state.dpy, state.win, &state.wm_delete_msg, 1);
       t@@ -452,7 +468,9 @@ print_cmd(const char *filename, int x, int y, int w, int h) {
                                printf("%s", filename);
                                percent = 0;
                        } else if (percent) {
       -                        fprintf(stderr, "Warning: Unknown substitution '%c' in format string.\n", *c);
       +                        fprintf(stderr,
       +                            "Warning: Unknown substitution '%c' in format string.\n", *c
       +                        );
                                printf("%%%c", *c);
                                percent = 0;
                        } else {
       t@@ -482,6 +500,7 @@ parse_small_positive_int(const char *str, int *value) {
                return 0;
        }
        
       +/* queue a part of the image for redrawing */
        static void
        queue_update(int x, int y, int w, int h) {
                if (state.cur_selection < 0 || !state.selections[state.cur_selection].valid)
       t@@ -492,7 +511,8 @@ queue_update(int x, int y, int w, int h) {
                state.updates = imlib_update_append_rect(
                    state.updates, x, y,
                    w + x > sel->scaled_w ? sel->scaled_w - x : w,
       -            h + y > sel->scaled_h ? sel->scaled_h - y : h);
       +            h + y > sel->scaled_h ? sel->scaled_h - y : h
       +        );
        }
        
        static void
       t@@ -500,12 +520,20 @@ redraw(void) {
                Imlib_Image buffer;
                Imlib_Updates current_update;
                if (!state.cur_image || state.cur_selection < 0) {
       +                /* clear the window completely */
                        XSetForeground(state.dpy, state.gc, BlackPixel(state.dpy, state.screen));
       -                XFillRectangle(state.dpy, state.drawable, state.gc, 0, 0, state.window_w, state.window_h);
       +                XFillRectangle(
       +                    state.dpy, state.drawable, state.gc,
       +                    0, 0, state.window_w, state.window_h
       +                );
                        goto swap_buffers;
                }
       +
       +        /* draw the parts of the image that need to be redrawn */
                struct Selection *sel = &state.selections[state.cur_selection];
       -        state.updates = imlib_updates_merge_for_rendering(state.updates, sel->scaled_w, sel->scaled_h);
       +        state.updates = imlib_updates_merge_for_rendering(
       +            state.updates, sel->scaled_w, sel->scaled_h
       +        );
                for (current_update = state.updates; current_update;
                    current_update = imlib_updates_get_next(current_update)) {
                        int up_x, up_y, up_w, up_h;
       t@@ -527,8 +555,14 @@ redraw(void) {
        
                /* wipe the black area around the image */
                XSetForeground(state.dpy, state.gc, BlackPixel(state.dpy, state.screen));
       -        XFillRectangle(state.dpy, state.drawable, state.gc, 0, sel->scaled_h, sel->scaled_w, state.window_h - sel->scaled_h);
       -        XFillRectangle(state.dpy, state.drawable, state.gc, sel->scaled_w, 0, state.window_w - sel->scaled_w, state.window_h);
       +        XFillRectangle(
       +            state.dpy, state.drawable, state.gc,
       +            0, sel->scaled_h, sel->scaled_w, state.window_h - sel->scaled_h
       +        );
       +        XFillRectangle(
       +            state.dpy, state.drawable, state.gc,
       +            sel->scaled_w, 0, state.window_w - sel->scaled_w, state.window_h
       +        );
        
                /* draw the rectangle */
                struct Rect rect = sel->rect;
       t@@ -536,7 +570,10 @@ redraw(void) {
                        XColor col = state.cur_col == 1 ? state.col1 : state.col2;
                        XSetForeground(state.dpy, state.gc, col.pixel);
                        sort_coordinates(&rect.x0, &rect.y0, &rect.x1, &rect.y1);
       -                XDrawRectangle(state.dpy, state.drawable, state.gc, rect.x0, rect.y0, rect.x1 - rect.x0, rect.y1 - rect.y0);
       +                XDrawRectangle(
       +                    state.dpy, state.drawable, state.gc,
       +                    rect.x0, rect.y0, rect.x1 - rect.x0, rect.y1 - rect.y0
       +                );
                }
        
        swap_buffers:
       t@@ -561,6 +598,8 @@ swap(int *a, int *b) {
                *b = tmp;
        }
        
       +/* sort rectangle coordinates into their canonical
       + * form so *x1 - *x0 >= 0 and *y1 - *y0 >= 0 */
        static void
        sort_coordinates(int *x0, int *y0, int *x1, int *y1) {
                if (*x0 > *x1)
       t@@ -683,7 +722,7 @@ button_release(void) {
                state.lock_x = 0;
                state.lock_y = 0;
                /* redraw everything if automatic redrawing of the rectangle
       -           is disabled (so it's redrawn when the mouse is released */
       +           is disabled (so it's redrawn when the mouse is released) */
                if (!SELECTION_REDRAW)
                        queue_update(0, 0, state.window_w, state.window_h);
        }
       t@@ -701,9 +740,10 @@ resize_window(int w, int h) {
                get_scaled_size(sel->orig_w, sel->orig_h, &actual_w, &actual_h);
                if (actual_w != sel->scaled_w) {
                        if (sel->rect.x0 != -200) {
       -                        /* If there is a selection, we need to convert it to the new scale.
       -                         * This only takes width into account because the aspect ratio
       -                         * should have been preserved anyways */
       +                        /* If there is a selection, we need to convert it to
       +                         * the new scale. This only takes width into account
       +                         * because the aspect ratio should have been preserved
       +                         * anyways */
                                double scale = (double)actual_w / sel->scaled_w;
                                sel->rect.x0 = round(sel->rect.x0 * scale);
                                sel->rect.y0 = round(sel->rect.y0 * scale);
       t@@ -716,6 +756,10 @@ resize_window(int w, int h) {
                }
        }
        
       +/* queue the redrawing of a rectangular area on the image -
       + * this queues four updates, one for each side of the rectangle,
       + * with the width or height (depending on which side) of the
       + * rectangle being determined by the configured line width */
        static void
        queue_rectangle_redraw(int x0, int y0, int x1, int y1) {
                sort_coordinates(&x0, &y0, &x1, &y1);
       t@@ -809,6 +853,7 @@ set_selection(
                sel->scaled_h = scaled_h;
        }
        
       +/* get the scaled size of an image based on the current window size */
        static void
        get_scaled_size(int orig_w, int orig_h, int *scaled_w, int *scaled_h) {
                double scale_w, scale_h;
       t@@ -826,10 +871,20 @@ get_scaled_size(int orig_w, int orig_h, int *scaled_w, int *scaled_h) {
                }
        }
        
       +/* change the shown image
       + * new_selection is the index of the new selection
       + * copy_box determines whether the cropping rectangle of the current
       + * selection should be copied (i.e. this is a true value when return
       + * is pressed) */
        static void
        change_picture(Imlib_Image new_image, int new_selection, int copy_box) {
                int orig_w, orig_h, actual_w, actual_h;
       -        XSetStandardProperties(state.dpy, state.win, state.filenames[new_selection], NULL, None, NULL, 0, NULL);
       +        /* set window title to filename */
       +        XSetStandardProperties(
       +            state.dpy, state.win,
       +            state.filenames[new_selection],
       +            NULL, None, NULL, 0, NULL
       +        );
                if (state.cur_image) {
                        imlib_context_set_image(state.cur_image);
                        imlib_free_image();
       t@@ -846,15 +901,23 @@ change_picture(Imlib_Image new_image, int new_selection, int copy_box) {
                struct Selection *sel = &state.selections[state.cur_selection];
                if (copy_box && old_selection >= 0 && old_selection < state.num_files) {
                        struct Selection *old = &state.selections[old_selection];
       -                set_selection(sel, old->rect.x0, old->rect.y0, old->rect.x1, old->rect.y1,
       -                        orig_w, orig_h, actual_w, actual_h);
       +                set_selection(
       +                    sel,
       +                    old->rect.x0, old->rect.y0, old->rect.x1, old->rect.y1,
       +                    orig_w, orig_h, actual_w, actual_h
       +                );
                } else if (!sel->valid) {
       -                /* Just fill it with -200 so we can check later if it has been used yet */
       -                set_selection(sel, -200, -200, -200, -200, orig_w, orig_h, actual_w, actual_h);
       +                /* Just fill it with -200 so we can check
       +                 * later if it has been used yet */
       +                set_selection(
       +                    sel,
       +                    -200, -200, -200, -200,
       +                    orig_w, orig_h, actual_w, actual_h
       +                );
                } else if (sel->rect.x0 != -200 && actual_w != sel->scaled_w) {
       -                /* If there is a selection, we need to convert it to the new scale.
       -                 * This only takes width into account because the aspect ratio
       -                 * should have been preserved anyways */
       +                /* If there is a selection, we need to convert it to the
       +                 * new scale. This only takes width into account because
       +                 * the aspect ratio should have been preserved anyways */
                        double scale = (double)actual_w / sel->scaled_w;
                        sel->rect.x0 = round(sel->rect.x0 * scale);
                        sel->rect.y0 = round(sel->rect.y0 * scale);
       t@@ -867,6 +930,8 @@ change_picture(Imlib_Image new_image, int new_selection, int copy_box) {
                queue_update(0, 0, sel->scaled_w, sel->scaled_h);
        }
        
       +/* show the next image in the argument list - unloadable files are skipped
       + * copy_box determines whether the current selection is copied */
        static void
        next_picture(int copy_box) {
                if (state.cur_selection + 1 >= state.num_files)
       t@@ -876,7 +941,9 @@ next_picture(int copy_box) {
                /* loop until we find a loadable file */
                while (!tmp_image && tmp_cur_selection + 1 < state.num_files) {
                        tmp_cur_selection++;
       -                tmp_image = imlib_load_image_immediately(state.filenames[tmp_cur_selection]);
       +                tmp_image = imlib_load_image_immediately(
       +                    state.filenames[tmp_cur_selection]
       +                );
                        if (!tmp_image) {
                                fprintf(stderr, "Warning: Unable to load image '%s'.\n",
                                    state.filenames[tmp_cur_selection]);
       t@@ -893,6 +960,7 @@ next_picture(int copy_box) {
                change_picture(tmp_image, tmp_cur_selection, copy_box);
        }
        
       +/* show the previous image in the argument list - unloadable files are skipped */
        static void
        last_picture(void) {
                if (state.cur_selection <= 0)
       t@@ -902,7 +970,9 @@ last_picture(void) {
                /* loop until we find a loadable file */
                while (!tmp_image && tmp_cur_selection > 0) {
                        tmp_cur_selection--;
       -                tmp_image = imlib_load_image_immediately(state.filenames[tmp_cur_selection]);
       +                tmp_image = imlib_load_image_immediately(
       +                    state.filenames[tmp_cur_selection]
       +                );
                        if (!tmp_image) {
                                fprintf(stderr, "Warning: Unable to load image '%s'.\n",
                                    state.filenames[tmp_cur_selection]);