Commit 56dec873 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Add method to forcefully disable antialiasing (closes GH-17)

parent 283618a4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ git HEAD
    * Fix segfault upon unloadable images when image-related format specifiers
      (e.g. %h) are used in --title
    * Show images in current directory when invoked without file arguments
    * Disable antialiasing, either globally (--force-aliasing) or per image
      (press 'A' to toggle, keybinding toggle_aliasing)

Sat, 12 Mar 2011 22:49:53 +0100  Daniel Friesel <derf@finalrewind.org>

+10 −10
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ static void feh_event_handle_ButtonRelease(XEvent * ev)
				opt.mode = MODE_NORMAL;
				winwid->mode = MODE_NORMAL;
				winwidget_sanitise_offsets(winwid);
				winwidget_render_image(winwid, 0, 1);
				winwidget_render_image(winwid, 0, 0);
			}
		} else if (opt.mode == MODE_NEXT) {
			opt.mode = MODE_NORMAL;
@@ -248,7 +248,7 @@ static void feh_event_handle_ButtonRelease(XEvent * ev)
			} else
				winwidget_sanitise_offsets(winwid);

			winwidget_render_image(winwid, 0, 1);
			winwidget_render_image(winwid, 0, 0);
		}
	} else if ((ev->xbutton.button == opt.blur_button)
			&& ((opt.no_blur_ctrl_mask)
@@ -281,7 +281,7 @@ static void feh_event_handle_ConfigureNotify(XEvent * ev)
					opt.geom_w = w->w;
					opt.geom_h = w->h;
				}
				winwidget_render_image(w, 0, 1);
				winwidget_render_image(w, 0, 0);
			}
		}
	}
@@ -404,7 +404,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
			winwid->im_y = winwid->click_offset_y
					- (winwid->im_click_offset_y * winwid->zoom);

			winwidget_render_image(winwid, 0, 0);
			winwidget_render_image(winwid, 0, 1);
		}
	} else if ((opt.mode == MODE_PAN) || (opt.mode == MODE_NEXT)) {
		int orig_x, orig_y;
@@ -463,7 +463,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)

			if ((winwid->im_x != orig_x)
					|| (winwid->im_y != orig_y))
				winwidget_render_image(winwid, 0, 0);
				winwidget_render_image(winwid, 0, 1);
		}
	} else if (opt.mode == MODE_ROTATE) {
		while (XCheckTypedWindowEvent(disp, ev->xmotion.window, MotionNotify, ev));
@@ -483,7 +483,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
			}
			winwid->im_angle = (ev->xmotion.x - winwid->w / 2) / ((double) winwid->w / 2) * 3.1415926535;
			D(("angle: %f\n", winwid->im_angle));
			winwidget_render_image(winwid, 0, 0);
			winwidget_render_image(winwid, 0, 1);
		}
	} else if (opt.mode == MODE_BLUR) {
		while (XCheckTypedWindowEvent(disp, ev->xmotion.window, MotionNotify, ev));
@@ -503,7 +503,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
				gib_imlib_image_blur(temp, 0 - blur_radius);
			ptr = winwid->im;
			winwid->im = temp;
			winwidget_render_image(winwid, 0, 0);
			winwidget_render_image(winwid, 0, 1);
			gib_imlib_free_image_and_decache(winwid->im);
			winwid->im = ptr;
		}
@@ -522,7 +522,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
				imlib_context_set_image(winwid->im);
				imlib_apply_filter("bump_map_point(x=[],y=[],map="
						PREFIX "/share/feh/images/about.png);", &x, &y);
				winwidget_render_image(winwid, 0, 1);
				winwidget_render_image(winwid, 0, 0);
				gib_imlib_free_image_and_decache(winwid->im);
				winwid->im = orig_im;
			} else if (winwid->type == WIN_TYPE_THUMBNAIL) {
@@ -553,11 +553,11 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
								thumbnail->x + 2, thumbnail->y + 2,
								thumbnail->w - 4, thumbnail->h - 4,
								255, 255, 255, 255);
						winwidget_render_image(winwid, 0, 1);
						winwidget_render_image(winwid, 0, 0);
						gib_imlib_free_image_and_decache(winwid->im);
						winwid->im = origwin;
					} else
						winwidget_render_image(winwid, 0, 1);
						winwidget_render_image(winwid, 0, 0);
				}
				last_thumb = thumbnail;
			}
+19 −12
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ void init_keyevents(void) {
	feh_set_kb(&keys.size_to_image, 0, XK_w      , 0, 0            , 0, 0);
	feh_set_kb(&keys.render    , 0, XK_KP_Begin  , 0, 0            , 0, 0);
	feh_set_kb(&keys.toggle_actions, 0, XK_a, 0, 0, 0, 0);
	feh_set_kb(&keys.toggle_aliasing, 0, XK_A, 0, 0, 0, 0);
	feh_set_kb(&keys.toggle_filenames, 0, XK_d, 0, 0, 0, 0);
	feh_set_kb(&keys.toggle_pointer, 0, XK_o, 0, 0, 0, 0);
	feh_set_kb(&keys.toggle_caption, 0, XK_c, 0, 0, 0, 0);
@@ -245,6 +246,8 @@ void init_keyevents(void) {
			cur_kb = &keys.render;
		else if (!strcmp(action, "toggle_actions"))
			cur_kb = &keys.toggle_actions;
		else if (!strcmp(action, "toggle_aliasing"))
			cur_kb = &keys.toggle_aliasing;
		else if (!strcmp(action, "toggle_filenames"))
			cur_kb = &keys.toggle_filenames;
		else if (!strcmp(action, "toggle_pointer"))
@@ -424,19 +427,19 @@ void feh_event_handle_keypress(XEvent * ev)
	}
	else if (feh_is_kp(&keys.scroll_right, keysym, state)) {
		winwid->im_x -= 20;
		winwidget_render_image(winwid, 0, 0);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_left, keysym, state)) {
		winwid->im_x += 20;
		winwidget_render_image(winwid, 0, 0);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_down, keysym, state)) {
		winwid->im_y -= 20;
		winwidget_render_image(winwid, 0, 0);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_up, keysym, state)) {
		winwid->im_y += 20;
		winwidget_render_image(winwid, 0, 0);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.jump_back, keysym, state)) {
		if (opt.slideshow)
@@ -505,7 +508,7 @@ void feh_event_handle_keypress(XEvent * ev)
		winwid->im_y = (winwid->h / 2) - (((winwid->h / 2) - winwid->im_y) /
			winwid->old_zoom * winwid->zoom);
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.zoom_out, keysym, state)) {
		winwid->old_zoom = winwid->zoom;
@@ -515,7 +518,7 @@ void feh_event_handle_keypress(XEvent * ev)
		winwid->im_y = (winwid->h / 2) - (((winwid->h / 2) - winwid->im_y) /
			winwid->old_zoom * winwid->zoom);
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.zoom_default, keysym, state)) {
		winwid->zoom = 1;
@@ -526,18 +529,22 @@ void feh_event_handle_keypress(XEvent * ev)
	else if (feh_is_kp(&keys.zoom_fit, keysym, state)) {
		feh_calc_needed_zoom(&winwid->zoom, winwid->im_w, winwid->im_h, winwid->w, winwid->h);
		winwidget_center_image(winwid);
		winwidget_render_image(winwid, 0, 1);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.render, keysym, state)) {
		winwidget_render_image(winwid, 0, 1);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.toggle_actions, keysym, state)) {
		opt.draw_actions = !opt.draw_actions;
		winwidget_rerender_all(0, 1);
		winwidget_rerender_all(0);
	}
	else if (feh_is_kp(&keys.toggle_aliasing, keysym, state)) {
		opt.force_aliasing = !opt.force_aliasing;
		winwidget_rerender_all(0);
	}
	else if (feh_is_kp(&keys.toggle_filenames, keysym, state)) {
		opt.draw_filename = !opt.draw_filename;
		winwidget_rerender_all(0, 1);
		winwidget_rerender_all(0);
	}
	else if (feh_is_kp(&keys.toggle_pointer, keysym, state)) {
		winwidget_set_pointer(winwid, opt.hide_pointer);
@@ -549,7 +556,7 @@ void feh_event_handle_keypress(XEvent * ev)
	else if (feh_is_kp(&keys.toggle_caption, keysym, state)) {
		if (opt.caption_path)
			winwid->caption_entry = 1;
		winwidget_render_image(winwid, 0, 1);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.reload_image, keysym, state)) {
		feh_reload_image(winwid, 0, 0);
@@ -614,7 +621,7 @@ void feh_event_handle_keypress(XEvent * ev)
		winwid->full_screen = !winwid->full_screen;
		winwidget_destroy_xwin(winwid);
		winwidget_create_window(winwid, winwid->im_w, winwid->im_h);
		winwidget_render_image(winwid, 1, 1);
		winwidget_render_image(winwid, 1, 0);
		winwidget_show(winwid);
#ifdef HAVE_LIBXINERAMA
		/* if we have xinerama and we're using it, then full screen the window
+5 −5
Original line number Diff line number Diff line
@@ -1268,7 +1268,7 @@ void feh_menu_cb_opt_fullscreen(feh_menu * m, feh_menu_item * i)
	winwidget_destroy_xwin(m->fehwin);
	winwidget_create_window(m->fehwin, m->fehwin->im_w, m->fehwin->im_h);

	winwidget_render_image(m->fehwin, 1, 1);
	winwidget_render_image(m->fehwin, 1, 0);
	winwidget_show(m->fehwin);

#ifdef HAVE_LIBXINERAMA
@@ -1343,7 +1343,7 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data)
				winwidget_resize(m->fehwin, m->fehwin->im_w, m->fehwin->im_h);
			}
			winwidget_reset_image(m->fehwin);
			winwidget_render_image(m->fehwin, 1, 1);
			winwidget_render_image(m->fehwin, 1, 0);
			break;
		case CB_RELOAD:
			feh_reload_image(m->fehwin, 0, 0);
@@ -1404,7 +1404,7 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data)
				opt.draw_filename = TRUE;
			else
				opt.draw_filename = FALSE;
			winwidget_rerender_all(0, 1);
			winwidget_rerender_all(0);
			break;
		case CB_OPT_DRAW_ACTIONS:
			MENU_ITEM_TOGGLE(i);
@@ -1412,7 +1412,7 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data)
				opt.draw_actions = TRUE;
			else
				opt.draw_actions = FALSE;
			winwidget_rerender_all(0, 1);
			winwidget_rerender_all(0);
			break;
		case CB_OPT_KEEP_HTTP:
			MENU_ITEM_TOGGLE(i);
@@ -1440,7 +1440,7 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data)
				opt.zoom_mode = ZOOM_MODE_FILL;
			else
				opt.zoom_mode = 0;
			winwidget_rerender_all(1, 1);
			winwidget_rerender_all(1);
			break;
	}
	return;
+4 −0
Original line number Diff line number Diff line
@@ -423,6 +423,7 @@ static void feh_parse_option_array(int argc, char **argv)
		{"index-dim"     , 1, 0, 232},
		{"thumb-redraw"  , 1, 0, 'J'},
		{"info"          , 1, 0, 234},
		{"force-aliasing", 0, 0, 235},

		{0, 0, 0, 0}
	};
@@ -772,6 +773,9 @@ static void feh_parse_option_array(int argc, char **argv)
		case 234:
			opt.info_cmd = estrdup(optarg);
			break;
		case 235:
			opt.force_aliasing = 1;
			break;
		default:
			break;
		}
Loading