
For flexibility. Anyway, what you say is not really true. The color information
is associated with a GraphicsContext, not with a display, and the GC _IS_
a parameter to the drawing routines.

So, if you need to fast switch between green dotted lines and blue ones of
width 2, you can make 2 GCs for those cases and then simply do

XDrawLine(dpy,win,gc_red,x1,y1,x2,y2);
XDrawLine(dpy,win,gc_blue,x3,y3,x4,y4);

for this effect.

This is eventually more complicated to do for the programmer, but also much
more efficient and flexible. You would not include all the other parameters
like line pattern, with, cap and joinstyle, drawmode and so on in every
drawing call, so why do it for color ? BTW, stay away from XDrawPoint()
if you don't really need it (to draw RANDOM points), for image transfers
there are Image routines.
