Forum Post
Index > Scripting > example variable length connected (menu?)boxes

Author/Date example variable length connected (menu?)boxes
exosceleton
16/01/2008 6:51pm
still thinking about possibilities of implementing gradients, incorporate text and providing html map code in the output, but for now, the basic:


---------------Start script----------

h=32;
w=145;
thick=3;
gap=8;
rad=8;
numberofreps=6;
colorR=0;
colorG=80;
colorB=200;

startx=w/2+gap/2;
starty=h+16-thick;
stopx=startx+16;
stopy=starty-16;
unitheight=h+(2*rad-2*thick);

create (w,numberofreps*unitheight-(2*rad-2*thick),32);

//backgroundcolor
newpath (q);
rgb(200, 200,200);
rect (q,0,0,250,500);
fillpath (q);

for(t1=0;t1<numberofreps;t1++)
{
// Border
newpath (p);
rgb(colorR,colorG,colorB);
roundrect (p, 0, t1*(h+(2*rad-2*thick)),w,t1*(h+2*rad-2*thick)+h, rad);
roundrect (p, thick,t1*(h+2*rad-2*thick)+thick, w - thick,t1*(h+2*rad-2*thick)+ h- thick, rad - thick);

fillpath (p);
}

for(t1=0;t1<numberofreps-1;t1++)
{
//making a few holes
newpath(p);
rgb(200,200,200);
rect(p,w/2-rad-gap/2,(t1*unitheight)+h-thick,w/2+rad+gap/2,(t1*unitheight)+h);
rect(p,w/2-rad-gap/2,((t1+1)*unitheight),w/2+rad+gap/2,((t1+1)*unitheight)+thick);
fillpath(p);

//code for top left cornerlike curve
startx=w/2+gap/2;
starty=(t1*unitheight)+h+rad-thick;
stopx=startx+rad;
stopy=starty-rad;
newpath(i);
setfillrule(i,nonzero);
rgb(colorR,colorG,colorB);
moveto(i,startx,starty);
quadto(i,startx+1,stopy+1,stopx,stopy);
lineto(i,stopx,stopy+thick);
quadto(i,startx+1+thick,stopy+1+thick,startx+thick,starty);

fillpath(i);




//code for bottom left cornerlike curve
startx=w/2+gap/2;
starty=(t1*unitheight)+h+rad-thick;
stopx=startx+rad;
stopy=starty+rad;
newpath(i);
setfillrule(i,nonzero);
rgb(colorR,colorG,colorB);
moveto(i,startx,starty);
quadto(i,startx+1,stopy-1,stopx,stopy);
lineto(i,stopx,stopy-thick);
quadto(i,startx+1+thick,stopy-1-thick,startx+thick,starty);

fillpath(i);

//code for top right cornerlike curve
newpath(i);
startx=w/2-gap/2;
starty=(t1*unitheight)+h+rad-thick;
stopx=startx-rad;
stopy=starty-rad;
setfillrule(i,nonzero);
rgb(colorR,colorG,colorB);
moveto(i,startx,starty);
quadto(i,startx-1,stopy-1,stopx,stopy);
lineto(i,stopx,stopy+thick);
quadto(i,startx-1-thick,stopy+1+thick,startx-thick,starty);
fillpath(i);

//code for top right cornerlike curve
newpath(i);
startx=w/2-gap/2;
starty=(t1*unitheight)+h+rad-thick;
stopx=startx-rad;
stopy=starty+rad;
setfillrule(i,nonzero);
rgb(colorR,colorG,colorB);
moveto(i,startx,starty);
quadto(i,startx-1,stopy-1,stopx,stopy);
lineto(i,stopx,stopy-thick);
quadto(i,startx-1-thick,stopy-1-thick,startx-thick,starty);
fillpath(i);
}

------------------end script---------
makes:

exosceleton
16/01/2008 6:53pm
attempt 2
fret
16/01/2008 9:26pm
Nice, you got the curves happening. :)
exosceleton
21/01/2008 6:25am
something happened to the image in the post above.
fret
21/01/2008 6:31am
whats the right url?
exosceleton
21/01/2008 6:37am
it's fine now. Am i crazy or did you do something?
Reply