How about doing it this way: Your spiral is nothing but nested rectangles. The outer rectangle starts at (0,0), the next inner one at (1,1), and so forth until you reach (width+1)/2; (note the +1 to cater for odd widths).
So I would create an outer loop for that, say
int i;
int cntRects = (width + 1) / 2;
for (i = 0; i < cntRects; ++i)
{
...
Inside that outer loop you do four inner loops for the four sides of the rectangle, i.e. top, right, bottom, left. You can construct the indices easily from i, width and height. Here I am going to do the first one for you:
int x, y;
y = i;
for (x = i; x < width - i; ++i)
AddPoint (x, y);
...