У меня есть элемент g
, который содержит один или несколько элементов path
.Как я уже упоминал в другом вопросе , я масштабирую и переводю элемент g
, вычисляя атрибут transform
, чтобы он помещался в сетку в другой части холста.
Расчет выполняется с использованием разницы между двумя прямоугольниками, getBBox()
от элемента g
и прямоугольником вокруг сетки.
Вот вопрос: после преобразования я обновляю содержимое элемента g
и снова вызываю getBBox()
, без , удаляя transform
.Получающийся прямоугольник, кажется, рассчитывается без учета transform
.Я ожидал, что это отразит изменение.Соответствует ли это поведение спецификации SVG?Как получить ограничивающий прямоугольник для преобразованного прямоугольника?
Кстати, это документ HTML 5, работающий в Firefox 4, если это имеет какое-то значение.
Обновление: очевидно, это поведениекажется довольно явно в нарушение спецификации.Из текста здесь, в w3c :
SVGRect getBBox ()
Возвращает ограничивающий прямоугольник в текущем пользовательском пространстве (т. Е.после применения атрибута 'transform', если таковой имеется) к геометрии всех содержащихся графических элементов, исключая эффекты обводки, отсечения, маскирования и фильтрации).Обратите внимание, что getBBox должен возвращать фактическую ограничивающую рамку во время вызова метода, даже если элемент еще не отображен.
Правильно ли я читаю?Если так, то это похоже на ошибки в реализации SVG, которые использует Firefox;У меня не было возможности попробовать что-нибудь другое.Я бы подал отчет об ошибке, если бы кто-то мог указать мне, куда.