• Home
  • Raw
  • Download

Lines Matching refs:image

47 struct image {  struct
52 cairo_surface_t *image; member
68 get_scale(struct image *image) in get_scale() argument
70 assert(image->matrix.xy == 0.0 && in get_scale()
71 image->matrix.yx == 0.0 && in get_scale()
72 image->matrix.xx == image->matrix.yy); in get_scale()
73 return image->matrix.xx; in get_scale()
77 clamp_view(struct image *image) in clamp_view() argument
80 double scale = get_scale(image); in clamp_view()
83 sw = image->width * scale; in clamp_view()
84 sh = image->height * scale; in clamp_view()
85 widget_get_allocation(image->widget, &allocation); in clamp_view()
88 image->matrix.x0 = in clamp_view()
89 (allocation.width - image->width * scale) / 2; in clamp_view()
91 if (image->matrix.x0 > 0.0) in clamp_view()
92 image->matrix.x0 = 0.0; in clamp_view()
93 if (sw + image->matrix.x0 < allocation.width) in clamp_view()
94 image->matrix.x0 = allocation.width - sw; in clamp_view()
98 image->matrix.y0 = in clamp_view()
99 (allocation.height - image->height * scale) / 2; in clamp_view()
101 if (image->matrix.y0 > 0.0) in clamp_view()
102 image->matrix.y0 = 0.0; in clamp_view()
103 if (sh + image->matrix.y0 < allocation.height) in clamp_view()
104 image->matrix.y0 = allocation.height - sh; in clamp_view()
111 struct image *image = data; in redraw_handler() local
119 surface = window_get_surface(image->window); in redraw_handler()
121 widget_get_allocation(image->widget, &allocation); in redraw_handler()
132 if (!image->initialized) { in redraw_handler()
133 image->initialized = true; in redraw_handler()
134 width = cairo_image_surface_get_width(image->image); in redraw_handler()
135 height = cairo_image_surface_get_height(image->image); in redraw_handler()
144 image->width = width; in redraw_handler()
145 image->height = height; in redraw_handler()
146 cairo_matrix_init_scale(&image->matrix, scale, scale); in redraw_handler()
148 clamp_view(image); in redraw_handler()
151 matrix = image->matrix; in redraw_handler()
156 cairo_set_source_surface(cr, image->image, 0, 0); in redraw_handler()
171 struct image *image = data; in resize_handler() local
173 clamp_view(image); in resize_handler()
180 struct image *image = data; in keyboard_focus_handler() local
182 window_schedule_redraw(image->window); in keyboard_focus_handler()
190 struct image *image = data; in enter_handler() local
193 widget_get_allocation(image->widget, &allocation); in enter_handler()
197 image->pointer.x = x; in enter_handler()
198 image->pointer.y = y; in enter_handler()
204 move_viewport(struct image *image, double dx, double dy) in move_viewport() argument
206 double scale = get_scale(image); in move_viewport()
208 if (!image->initialized) in move_viewport()
211 cairo_matrix_translate(&image->matrix, -dx/scale, -dy/scale); in move_viewport()
212 clamp_view(image); in move_viewport()
214 window_schedule_redraw(image->window); in move_viewport()
222 struct image *image = data; in motion_handler() local
225 widget_get_allocation(image->widget, &allocation); in motion_handler()
229 if (image->button_pressed) in motion_handler()
230 move_viewport(image, image->pointer.x - x, in motion_handler()
231 image->pointer.y - y); in motion_handler()
233 image->pointer.x = x; in motion_handler()
234 image->pointer.y = y; in motion_handler()
236 return image->button_pressed ? CURSOR_DRAGGING : CURSOR_LEFT_PTR; in motion_handler()
246 struct image *image = data; in button_handler() local
249 image->button_pressed = in button_handler()
260 zoom(struct image *image, double scale) in zoom() argument
262 double x = image->pointer.x; in zoom()
263 double y = image->pointer.y; in zoom()
266 if (!image->initialized) in zoom()
269 if (get_scale(image) * scale > 20.0 || in zoom()
270 get_scale(image) * scale < 0.02) in zoom()
278 cairo_matrix_multiply(&image->matrix, &image->matrix, &scale_matrix); in zoom()
279 clamp_view(image); in zoom()
287 struct image *image = data; in key_handler() local
294 zoom(image, 0.8); in key_handler()
295 window_schedule_redraw(image->window); in key_handler()
299 zoom(image, 1.2); in key_handler()
300 window_schedule_redraw(image->window); in key_handler()
303 image->matrix.xx = 1.0; in key_handler()
304 image->matrix.xy = 0.0; in key_handler()
305 image->matrix.yx = 0.0; in key_handler()
306 image->matrix.yy = 1.0; in key_handler()
307 clamp_view(image); in key_handler()
308 window_schedule_redraw(image->window); in key_handler()
317 struct image *image = data; in axis_handler() local
322 zoom(image, (1.0 - wl_fixed_to_double(value) / 500.0)); in axis_handler()
324 window_schedule_redraw(image->window); in axis_handler()
327 move_viewport(image, 0, wl_fixed_to_double(value)); in axis_handler()
329 move_viewport(image, wl_fixed_to_double(value), 0); in axis_handler()
336 struct image *image = data; in fullscreen_handler() local
338 image->fullscreen ^= 1; in fullscreen_handler()
339 window_set_fullscreen(window, image->fullscreen); in fullscreen_handler()
345 struct image *image = data; in close_handler() local
347 *image->image_counter -= 1; in close_handler()
349 if (*image->image_counter == 0) in close_handler()
350 display_exit(image->display); in close_handler()
352 widget_destroy(image->widget); in close_handler()
353 window_destroy(image->window); in close_handler()
355 free(image); in close_handler()
358 static struct image *
362 struct image *image; in image_create() local
365 image = zalloc(sizeof *image); in image_create()
366 if (image == NULL) in image_create()
367 return image; in image_create()
374 image->filename = strdup(filename); in image_create()
375 image->image = load_cairo_surface(filename); in image_create()
377 if (!image->image) { in image_create()
378 free(image->filename); in image_create()
379 free(image); in image_create()
383 image->window = window_create(display); in image_create()
384 image->widget = window_frame_create(image->window, image); in image_create()
385 window_set_title(image->window, title); in image_create()
386 image->display = display; in image_create()
387 image->image_counter = image_counter; in image_create()
389 image->initialized = false; in image_create()
391 window_set_user_data(image->window, image); in image_create()
392 widget_set_redraw_handler(image->widget, redraw_handler); in image_create()
393 widget_set_resize_handler(image->widget, resize_handler); in image_create()
394 window_set_keyboard_focus_handler(image->window, in image_create()
396 window_set_fullscreen_handler(image->window, fullscreen_handler); in image_create()
397 window_set_close_handler(image->window, close_handler); in image_create()
399 widget_set_enter_handler(image->widget, enter_handler); in image_create()
400 widget_set_motion_handler(image->widget, motion_handler); in image_create()
401 widget_set_button_handler(image->widget, button_handler); in image_create()
402 widget_set_axis_handler(image->widget, axis_handler); in image_create()
403 window_set_key_handler(image->window, key_handler); in image_create()
404 widget_schedule_resize(image->widget, 500, 400); in image_create()
406 return image; in image_create()