- From: Robert O'Callahan <robert@ocallahan.org>
- Date: Mon, 30 Jun 2014 10:29:09 +1200
- To: public-script-coord@w3.org
- Message-ID: <CAOp6jLba61n8U=0RZo=aLX5T-vQLSrqtecqprtG2j821E7CfcQ@mail.gmail.com>
The interface we're trying to expose here is very simple and conventional:
We have a DOMQuad, whose state is mutable in various ways. We want to
expose a view of its state, the bounding rectangle. This view must be
read-only (since it doesn't make sense to mutate the bounding rect
directly). Since this view is a rectangle, for consistency we want to
expose it as some kind of readonly rectangle object matching, as much as
possible, the API of the mutable rectangle objects returned by other DOM
APIs. It seems more natural to expose this view as an attribute than via a
method getter, and that means repeated gets on the same DOMQuad must return
the same object (which is also a little more efficient), which means that
object needs to be live with respect to changes in the DOMQuad.
In any imperative OO language I know of, this is easy to implement. The
bounds object keeps a hidden reference to the DOMQuad and implements its
readonly APIs as functions of the DOMQuad state, and the DOMQuad keeps an
reference its bounds object. As far as I can tell, this is implementable in
JS too, using getters in the prototype:
var quad = {x1:1, x2:2, x3:3, x4:4};function QuadBounds(q) { this.q =
q;}Object.defineProperty(QuadBounds.prototype, "left", {get:function()
{ return Math.min(this.q.x1, this.q.x2, this.q.x3, this.q.x4);}});var
b = new QuadBounds(quad);alert(b.left);
So I don't actually know what the problem is here :-).
PS: no DOM API returns DOMRects or DOMQuads that are live with respect to
CSS/DOM state, if anyone's worried about that.
Rob
--
Jtehsauts tshaei dS,o n" Wohfy Mdaon yhoaus eanuttehrotraiitny eovni
le atrhtohu gthot sf oirng iyvoeu rs ihnesa.r"t sS?o Whhei csha iids teoa
stiheer :p atroa lsyazye,d 'mYaonu,r "sGients uapr,e tfaokreg iyvoeunr,
'm aotr atnod sgaoy ,h o'mGee.t" uTph eann dt hwea lmka'n? gBoutt uIp
waanndt wyeonut thoo mken.o w
Received on Sunday, 29 June 2014 22:29:36 UTC