diff --git a/crates/image_viewer/src/image_viewer.rs b/crates/image_viewer/src/image_viewer.rs index 37e818904bc95227783d96bfc5b49d2094373c32..c223494bd709217439bdff9f6a7ba17e1a65494e 100644 --- a/crates/image_viewer/src/image_viewer.rs +++ b/crates/image_viewer/src/image_viewer.rs @@ -11,7 +11,7 @@ use gpui::{ FocusHandle, Focusable, GlobalElementId, InspectorElementId, InteractiveElement, IntoElement, LayoutId, MouseButton, MouseDownEvent, MouseMoveEvent, MouseUpEvent, ParentElement, Pixels, Point, Render, ScrollDelta, ScrollWheelEvent, Style, Styled, Task, WeakEntity, Window, actions, - canvas, div, img, opaque_grey, point, px, size, + checkerboard, div, img, point, px, size, }; use language::File as _; use persistence::IMAGE_VIEWER; @@ -50,7 +50,7 @@ const MIN_ZOOM: f32 = 0.1; const MAX_ZOOM: f32 = 20.0; const ZOOM_STEP: f32 = 1.1; const SCROLL_LINE_MULTIPLIER: f32 = 20.0; -const BASE_SQUARE_SIZE: f32 = 48.0; +const BASE_SQUARE_SIZE: f32 = 32.0; pub struct ImageView { image_item: Entity, @@ -378,53 +378,17 @@ impl Element for ImageContentElement { .w(scaled_width) .h(scaled_height) .child( - canvas( - |_, _, _| {}, - move |bounds, _, window, _cx| { - let bounds_x: f32 = bounds.origin.x.into(); - let bounds_y: f32 = bounds.origin.y.into(); - let bounds_width: f32 = bounds.size.width.into(); - let bounds_height: f32 = bounds.size.height.into(); - let square_size = BASE_SQUARE_SIZE * zoom_level; - let cols = (bounds_width / square_size).ceil() as i32 + 1; - let rows = (bounds_height / square_size).ceil() as i32 + 1; - for row in 0..rows { - for col in 0..cols { - if (row + col) % 2 == 0 { - continue; - } - let x = bounds_x + col as f32 * square_size; - let y = bounds_y + row as f32 * square_size; - let w = square_size.min(bounds_x + bounds_width - x); - let h = square_size.min(bounds_y + bounds_height - y); - if w > 0.0 && h > 0.0 { - let rect = Bounds::new( - point(px(x), px(y)), - size(px(w), px(h)), - ); - window.paint_quad(gpui::fill( - rect, - opaque_grey(0.6, 1.0), - )); - } - } - } - let border_rect = Bounds::new( - point(px(bounds_x), px(bounds_y)), - size(px(bounds_width), px(bounds_height)), - ); - window.paint_quad(gpui::outline( - border_rect, - border_color, - gpui::BorderStyle::default(), - )); - }, - ) - .size_full() - .absolute() - .top_0() - .left_0() - .bg(gpui::rgb(0xCCCCCD)), + div() + .size_full() + .absolute() + .top_0() + .left_0() + .child(div().size_full().bg(checkerboard( + cx.theme().colors().panel_background, + BASE_SQUARE_SIZE * zoom_level, + ))) + .border_1() + .border_color(border_color), ) .child({ img(image)