#include displayitem str = ""; float minwidth() { return preferredwidth(); } float minheight() { return preferredheight(); } float preferredwidth() { float W; gsave(); gset(); W = DIWidth(str); grestore(); return W; } float preferredheight() { float H; gsave(); gset(); H = DIHeight(str); grestore(); return H; } void Paint() { switch (justification) { case /Right: DIPaintRight(str,0,0,w,h); break; case /Centered: DIPaintCentered(str,0,0,w,h); break; default: DIPaintLeft(str,0,0,w,h); break; } } void setlabel(displayitem s) { str = s; gexec(/Paint); }