svg - Cuadro delimitador dojox.gfx para nodos de texto y grupo
vector-graphics (1)
No encontré ninguna referencia para un cuadro delimitador para el objeto Grupo, pero cuando uso la última versión de Dojo, getBoundingbox devuelve nulo para Grupos también
¿Este problema está relacionado con esta corrección de errores ? Me parece que es así. Fue Changed 7 months ago by pruzand
y marcado como fijo
http://bugs.dojotoolkit.org/ticket/7019
Actualización 2012-07-24: descargué release-1.8.0rc1 localmente y configuré la misma prueba en el ticket resuelto. Esto de hecho se ha corregido en 1.8 y getBoundingBox devolviendo nulo en los grupos se resuelve como se indica en el ticket. El script de prueba vuelve exitosamente:
bbox of group: {"x":0,"y":2,"endX":238,"endY":379,"width":238,"height":377}
transformed bbox: [{"x":277.7302117816355,"y":152.5448441073243},{"x":512.114456998541,"y":193.87311039205372},{"x":446.64909401810826,"y":565.1456332776561},{"x":212.26484880120276,"y":523.8173669929267}]
También por lo que vale, de acuerdo con esta publicación en Twitter , 1.8 se lanzará en una semana o dos.
La documentación para getBoundingBox () en dojo dice:
Devuelve un cuadro delimitador de una forma. Una forma de texto es un objeto basado en puntos, por lo que no define un cuadro delimitador.
No lo entiendo Cualquier aplicación sensata de gráficos vectoriales para la web incluye un cuadro delimitador para objetos de texto (¡raphaelJS y jQuery SVG eso es)! Aquí, ¿qué significa "un objeto basado en puntos"?
No encontré ninguna referencia para un cuadro delimitador para el objeto Grupo, pero cuando uso la última versión de Dojo, getBoundingbox
devuelve null
para Grupos también
Puedo hacer fácilmente un cuadro delimitador para el rectángulo, pero las únicas formas realmente problemáticas para las que necesito un cuadro delimitador son el Grupo y el Texto.
Terminé hotpatching dojo como:
dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
Lo cual, por supuesto, solo funcionará para la interfaz de salida SVG.
Pero me pregunto, ¿me estoy perdiendo algo? ¿Hay una mejor manera de hacer eso?