2009-10-23 9 views
65

Die Dokumentation für GetBoundingBox() in Dojo sagt:dojox.gfx Begrenzungsrahmen für Text und Gruppenknoten

Gibt einen Begrenzungsrahmen einer Form. Eine Textform ist ein punktbasiertes Objekt, so dass keine Begrenzungsbox definiert ist.

Ich verstehe es nicht. Jede sinnvolle Implementierung von Vektorgrafiken für das Web enthält eine Begrenzungsbox für Textobjekte (raphaelJS und jQuery SVG)! Was bedeutet "ein punktbasiertes Objekt"?

fand ich keinen Hinweis für eine Begrenzungs für Gruppenobjekt Box, aber bei der Verwendung der neuesten Dojo Version, getBoundingbox kehrt null für Gruppen

auch

ich leicht Box selbst für Rechteck Sie begrenzen können, aber die einzige wirklich problematisch Formen, für die ich einen Begrenzungsrahmen brauche, sind die Gruppe und der Text.

I ended Hotpatching Dojo wie:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();}); 
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();}); 

Welche wird natürlich Arbeit nur für die SVG-Ausgabe Frontend.

Aber ich frage mich, fehle ich etwas? Gibt es einen besseren Weg, das zu tun?

+1

Nun, ich bin ein Noob ... aber in SVG Text ist nicht nur ein Punkt-basierte Objekt .. http://srufaculty.sru.edu/david.dailey/svg/getCTM.svg oder ich din ' Ich verstehe das Problem nicht. – Alex

+1

dojox.gfx ist nicht nur SVG. Es ist eine Normalisierung der browserübergreifenden gfx-Engines, die verfügbar sind (svg || vml || silverlight || usw.) ... Wenn ein Renderer nicht "etwas tun kann", hat er es wahrscheinlich nicht in die "normalisierte" API geschafft ist dojox.gfx (eine andere Sache, die mir persönlich in den Sinn kommt, ist Mehrfachstopps bei Farbverläufen, die afaik VML nicht beherrscht, aber SVG funktioniert ganz gut) – dante

Antwort

2

fand ich keinen Hinweis für eine Begrenzungs für Gruppenobjekt Box, aber wenn Sie die neueste Version Dojo verwendet, gibt GetBoundingBox null für Gruppen als auch

dieses Problem zu this bug fix verwandt ist? Klingt wie für mich. Es war Changed 7 months ago by pruzand und markiert als festes

http://bugs.dojotoolkit.org/ticket/7019

-Update 2012-07-24: I release-1.8.0rc1 lokal und Setup die same test in dem aufgelösten Ticket heruntergeladen. Dies wurde in der Tat in 1.8 behoben und GetBoundingBox Null auf Gruppen zurückgegeben wird gelöst, wie im Ticket angegeben. Das Testskript erfolgreich zurückgegeben:

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}] 

auch für das, was es wert ist, nach this twitter post, 1,8 gebührt in einer oder zwei Wochen veröffentlicht werden.

+0

Klingt richtig, es ist nicht passiert, als ich das erste Mal gefragt habe die Frage. Achte darauf, dass es tatsächlich funktioniert? –

+0

Nur überprüft, dass es tatsächlich funktioniert. –