#include "graphapp.h"
void draw_smile(drawing d, rect r)
{
rect r1, r2;
point p;
r1 = insetr(r, 10); /* inset from edge */
setcolour(LightBlue); /* blue face */
fillellipse(r1); /* draw face */
setcolour(Red); /* red lips */
setlinewidth(2); /* thicker lips */
r2 = insetr(r1, 30); /* inset from face */
drawarc(r2, 270-60, 270+60); /* smile arc */
setcolour(Brown); /* brown eyes */
p.x = r1.x + r1.width * 1/2;
p.y = r1.y + r1.height * 1/4;
r2 = rect(p.x - 30, p.y, 20,20);
fillellipse(r2); /* draw left eye */
r2 = rect(p.x + 10, p.y, 20,20);
fillellipse(r2); /* draw right eye */
}
void quit(button b)
{
exitapp();
}
void resize_smile(window w, rect r)
{
/* retrieve remembered drawing */
drawing d = (drawing) getdata(w);
resize(d, rect(0,25,r.width,r.height-25));
}
void main(void)
{
window w;
drawing d;
button b;
w = newwindow("Smile!", rect(50,50,120,145),
StandardWindow);
b = newbutton("Quit", rect(0,0,80,25), quit);
d = newdrawing(rect(0,25,120,120), draw_smile);
setdata(w, d); /* store drawing pointer */
setresize(w, resize_smile);
show(w);
mainloop();
}