diff --git a/editor/src/document/document_file.rs b/editor/src/document/document_file.rs index f6e4c759e0..b59914faf8 100644 --- a/editor/src/document/document_file.rs +++ b/editor/src/document/document_file.rs @@ -623,8 +623,9 @@ impl MessageHandler for DocumentMessageHand } .into(), ); + let root_layerdata = self.layerdata(&[]); - let scale = 0.5 + ASYMPTOTIC_EFFECT + self.layerdata(&[]).scale * SCALE_EFFECT; + let scale = 0.5 + ASYMPTOTIC_EFFECT + root_layerdata.scale * SCALE_EFFECT; let viewport_size = ipp.viewport_bounds.size(); let viewport_mid = ipp.viewport_bounds.center(); let [bounds1, bounds2] = self.graphene_document.visible_layers_bounding_box().unwrap_or([viewport_mid; 2]); @@ -634,6 +635,13 @@ impl MessageHandler for DocumentMessageHand let scrollbar_position = DVec2::splat(0.5) - (bounds1.lerp(bounds2, 0.5) - viewport_mid) / (bounds_length - viewport_size); let scrollbar_multiplier = bounds_length - viewport_size; let scrollbar_size = viewport_size / bounds_length; + + let log = root_layerdata.scale.log2(); + let mut ruler_inverval = if log < 0. { 100. * 2_f64.powf(-log.ceil()) } else { 100. / 2_f64.powf(log.ceil()) }; + let ruler_spacing = ruler_inverval * root_layerdata.scale; + + let ruler_origin = self.graphene_document.root.transform.transform_point2(DVec2::ZERO); + responses.push_back( FrontendMessage::UpdateScrollbars { position: scrollbar_position.into(), @@ -642,6 +650,15 @@ impl MessageHandler for DocumentMessageHand } .into(), ); + + responses.push_back( + FrontendMessage::UpdateRulers { + origin: ruler_origin.into(), + spacing: ruler_spacing, + interval: ruler_inverval, + } + .into(), + ); } NudgeSelectedLayers(x, y) => { diff --git a/editor/src/frontend/frontend_message_handler.rs b/editor/src/frontend/frontend_message_handler.rs index 953feeb27a..80a8d17acc 100644 --- a/editor/src/frontend/frontend_message_handler.rs +++ b/editor/src/frontend/frontend_message_handler.rs @@ -18,6 +18,7 @@ pub enum FrontendMessage { UpdateLayer { path: Path, data: LayerPanelEntry }, UpdateCanvas { document: String }, UpdateScrollbars { position: (f64, f64), size: (f64, f64), multiplier: (f64, f64) }, + UpdateRulers { origin: (f64, f64), spacing: f64, interval: f64 }, ExportDocument { document: String, name: String }, SaveDocument { document: String, name: String }, OpenDocumentBrowse, diff --git a/frontend/src/components/panels/Document.vue b/frontend/src/components/panels/Document.vue index 8165d7c96d..b131707dd2 100644 --- a/frontend/src/components/panels/Document.vue +++ b/frontend/src/components/panels/Document.vue @@ -111,11 +111,11 @@ - + - +
@@ -224,7 +224,7 @@