- void putlabel(picture pic=currentpicture) {
- picture picL;
- pair pName, pVal; // point
- real rName, rVal; // rotated by
- align aName, aVal;
- if (labeling==rotatelabel) {
- pName = (lchar+lbsep)*dir (90+ang);
- pVal = (lcharv+lbsep)*dir (270+ang);
- aName = NoAlign;
- aVal = NoAlign;
- if (ang <= 90 || ang > 270) {
- rName = ang;
- rVal = ang;
- } else if (ang > 90 && ang <= 270) {
- rName = 180+ang;
- rVal = 180+ang;
- }
- } else if (labeling==norotatelabel) {
- rName = 0;
- rVal = 0;
- if (ang == 0) {
- pName = (lchar+.25lbsep)*dir (90+ang);
- pVal = (lcharv+.25lbsep)*dir (270+ang);
- aName = N;
- aVal = S;
- } else if (ang < 90) {
- pName = (lchar)*dir (90+ang);
- pVal = (lcharv)*dir (270+ang);
- aName = NW;
- aVal = SE;
- } else if (ang == 90) {
- pName = (lchar+.25lbsep)*dir (90+ang);
- pVal = (lcharv+.25lbsep)*dir (270+ang);
- aName = W;
- aVal = E;
- } else if (90 < ang && ang < 180) {
- pName = (lchar)*dir (90+ang);
- pVal = (lcharv)*dir (270+ang);
- aName = SW;
- aVal = NE;
- } else if (ang == 180) {
- pName = (lchar+.25lbsep)*dir (90+ang);
- pVal = (lcharv+.25lbsep)*dir (270+ang);
- aName = S;
- aVal = N;
- } else if (ang > 180 && ang < 270) {
- pName = (lchar)*dir (90+ang);
- pVal = (lcharv)*dir (270+ang);
- aName = SE;
- aVal = NW;
- } else if (ang == 270) {
- pName = (lchar+.25lbsep)*dir (90+ang);
- pVal = (lcharv+.25lbsep)*dir (270+ang);
- aName = E;
- aVal = W;
- } else if (270 < ang && ang < 360) {
- pName = (lchar)*dir (90+ang);
- pVal = (lcharv)*dir (270+ang);
- aName = NE;
- aVal = SW;
- }