From 9bdb91992c6263845b7eaeb3e1c4d844fdf4b164 Mon Sep 17 00:00:00 2001 From: Justin Georgi Date: Mon, 25 May 2026 18:04:43 -0700 Subject: [PATCH] Add right and bottom positioning of compass Signed-off-by: Justin Georgi --- includes/AnnotationHandler.php | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/includes/AnnotationHandler.php b/includes/AnnotationHandler.php index 51c7736..352424f 100644 --- a/includes/AnnotationHandler.php +++ b/includes/AnnotationHandler.php @@ -133,8 +133,19 @@ class AnnotationHandler extends CodeContentHandler { $viewLabels = self::getCompassLabels($metadata['view']['direction'], $metadata['view']['rostral']); $rotate = $metadata['view']['rotate'] ?? 0; $textRotate = $rotate * -1; + $compSize = $metadata['view']['size'] ?? 25; + if (isset($metadata['view']['right'])) { + $compX = ($baseWidth / $fixScale) - $metadata['view']['right'] - $compSize; + } else { + $compX = $metadata['view']['left'] ?? 1; + } + if (isset($metadata['view']['bottom'])) { + $compY = ($baseHeight / $fixScale) - $metadata['view']['bottom'] - $compSize; + } else { + $compY = $metadata['view']['top'] ?? 1; + } $elCompass = << + @@ -147,18 +158,15 @@ class AnnotationHandler extends CodeContentHandler { comp; - //TODO: Right and Bottom and/or negative positioning - $compLeft = $metadata['view']['left'] ?? 0; - $compTop = $metadata['view']['top'] ?? 0; - $compRotX = $compLeft + (($metadata['view']['size'] ?? 25) * .5); - $compRotY = $compTop + (($metadata['view']['size'] ?? 25) * .5); + $compRotX = $compX + ($compSize * .5); + $compRotY = $compY + ($compSize * .5); $attrCompass = array( 'href'=> "#compass" . $svgID, 'transform' => "scale( $fixScale ) rotate( $rotate $compRotX $compRotY)", - 'x' => $compLeft, - 'y' => $compTop, - 'width' => $metadata['view']['size'] ?? 25, - 'height' => $metadata['view']['size'] ?? 25, + 'x' => $compX, + 'y' => $compY, + 'width' => $compSize, + 'height' => $compSize, 'style' => "transform-box: fill-box;" ); $useCompass = Html::rawElement('use', $attrCompass);