simple display (from: GUI library for D)

spir denis.spir at gmail.com
Sun Apr 10 04:57:32 PDT 2011


On 04/10/2011 02:58 AM, Adam D. Ruppe wrote:
> A note: since I posted last, I changed my mind on something, and
> bearophile, I rather doubt you'll like it...
>
> Before, it was drawRectangle(int x1, int y2, int width, int height);
>
> Now, it is drawRectangle(Point upperLeft, Size size);
>
> So, at the usage, you now need to put in some more parenthesis
> and say what you mean:
>
> painter.drawRectangle(Point(0, 0), Size(win.width, win.height));
>
>
> Why did I do this? Well, consider the following:
>
> drawRectangle(int x1, int y1, int x2, int y2);
>
> (This is, in fact, the signature in Windows GDI, whereas Xlib
>   user width/height.)
>
>
> The types there are no different than the above, but meaning has
> changed. I'd be ok with saying "RTFM" to avoid having to use
> the structs.
>
> But, RTFM doesn't let you overload it, whereas the types do. Now,
> it can offer both
>
> drawRectangle(Point upperLeft, Size size);
>
> *and*
>
> drawRectangle(Point upperLeft, Point lowerRight);
>
> I'm sure you were thinking about named arguments for a moment
> there about width/height vs x2/y2. I did too. But, named arguments
> don't really exist in D (you can do them via library magic but not
> without) so it's moot, and I don't believe named arguments would
> offer the overloading possibilities, which I like. It can save
> some math while being quite natural.
>
> The Point struct also makes drawPolygon look a lot better, so
> it's of general use.

That was about the first change I intended to do on my side, after reading your 
code :-)
In addition to the practical side you describe well, Point (or maybe better 
Position) is a nearly necessary semantic/conceptual type on the user side.

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list