| It's a bit scary to see that one of the highest-voted answers to this question (188 points) is completely wrong. It says that the (0,0) hotspot simplified the calculations for a cursor position update, because you didn't have to add any (X,Y) offset. https://ux.stackexchange.com/a/52349/43259 The problem with this idea is that the arrow pointer was never the only cursor. On the first Macintosh, there were many others including the text I-beam and a couple of kinds of crosshairs. And you could define any cursor of your own by providing a bitmap and transparency mask and the hotspot position. You can see some of these cursors in the original Inside Macintosh Volume I and also in previous works from PARC. https://web.archive.org/web/20230114223619/https://vintageap... Page 50 of the PDF (page I-38 of the document) shows some sample cursors. Page 158 of the PDF (page I-146 of the document) has the pixel detail and hotspot locations for several cursors. Fun fact! The hotspot for the arrow cursor was not (0,0) but was (1,1). Can anyone explain why? I think I used to know, but it has long since escaped my memory and I would appreciate a refresher. This page also has the definition of the Cursor structure: TYPE Bits16 = Array[0..15] OF INTEGER;
Cursor = RECORD
data: Bits16; {cursor image}
mask: Bits16; {cursor mask}
hotSpot: Point; {point aligned with mouse}
END;
Point is defined on page I-139 and is more or less what you would expect, a pair of vertical and horizontal coordinates.To be clear, the scary part is not that someone came up with the idea that (0,0) saved a few instructions. In fact, the notion came up elsewhere in this HN discussion. It's a perfectly reasonable hypothesis, until you realize that there are many cursor shapes that require different hotspots. The scary part is that 188 people upvoted this answer! |