45 ShowPrompt(
"There are no selected objects to delete.");
145 int ExpectFirstPoint =
True;
159 if (NumVertices == 0) {
160 if (OldPointer ==
NULL) {
170 OldPointer->oInfo =
SQ_NEW;
185 if (NumVertices == 1) {
186 ExpectFirstPoint =
True;
206 if (
Not ExpectFirstPoint) {
214 if (
Not ExpectFirstPoint) {
215 if (NumVertices == 1) {
228 if (ExpectFirstPoint) {
230 ExpectFirstPoint =
False;
240 if (NumVertices == 1) {
256 ExpectFirstPoint =
True;
303 if (X1 == X2
Or Y1 == Y2)
322 (*Pointer)->oInfo = Info;
339 if (Pointer ==
NULL)
return;
344 if (Pointer->oPrptyList ==
NULL)
365 NewPair->
pX = OldPair->
pX;
366 NewPair->
pY = OldPair->
pY;
368 OldPair = OldPair->
pSucc;
372 NewPair = NewPair->
pSucc;
373 NewPair->
pX = OldPair->
pX;
374 NewPair->
pY = OldPair->
pY;
376 OldPair = OldPair->
pSucc;
397 NewPair->
pX = OldPair->
pX;
398 NewPair->
pY = OldPair->
pY;
400 OldPair = OldPair->
pSucc;
401 while (OldPair !=
NULL) {
404 NewPair = NewPair->
pSucc;
405 NewPair->
pX = OldPair->
pX;
406 NewPair->
pY = OldPair->
pY;
408 OldPair = OldPair->
pSucc;
413 NewPair = NewPair->
pSucc;
470 long firstX,firstY,
X,
Y,lastX,lastY;
473 firstX = lastX = Pair->
pX;
474 firstY = lastY = Pair->
pY;
476 while (Pair !=
NULL) {
485 ShowLine(Color,firstX,firstY,lastX,lastY);
500 int i,n,nfine,ncoarse,n2;
509 for (n = 0,Pair = Path; Pair !=
NULL; n++,Pair = Pair->
pSucc) ;
517 for (i = 0,Pair = Path; i < n2; i += 2,Pair = Pair->
pSucc) {
521 CoarseLToP(X,Y,PolygonBuffer[i],PolygonBuffer[i+1]);
531 for (i = 0,Pair = Path; i < n2; i += 2,Pair = Pair->
pSucc) {
535 FineLToP(X,Y,PolygonBuffer[i],PolygonBuffer[i+1]);
552 #define ka_copy(BB1,BB2) BB1.kaLeft = BB2->kaLeft; \ 553 BB1.kaRight = BB2->kaRight; \ 554 BB1.kaBottom = BB2->kaBottom; \ 555 BB1.kaTop = BB2->kaTop; \ 556 TPoint(&BB1.kaLeft,&BB1.kaBottom); \ 557 TPoint(&BB1.kaRight,&BB1.kaTop); \ 558 if (BB1.kaLeft > BB1.kaRight) \ 559 SwapInts(BB1.kaLeft,BB1.kaRight); \ 560 if (BB1.kaBottom > BB1.kaTop) \ 561 SwapInts(BB1.kaBottom,BB1.kaTop); 588 BB->kaRight += Delta;
589 BB->kaBottom -= Delta;
621 int ShowBottom =
True;
622 int ShowRight =
True;
804 long RefX,RefY,LastRefX,LastRefY,MapX,MapY;
805 long RefTmpX, RefTmpY;
806 int FirstTime =
True;
831 if (FirstTime)
goto quit;
924 ShowPrompt(
"Point to where it should stretch.");
988 long RefX,RefY,MapX,MapY;
990 struct ks *SQDesc, *SQDesc1;
1001 for (SQDesc1 = SQDesc->
ksSucc; SQDesc1; SQDesc1 = SQDesc1->
ksSucc)
1004 if (SQDesc1 ==
NULL) {
1007 pp->
pX += MapX - RefX;
1008 pp->
pY += MapY - RefY;
1010 pp->
pX -= MapX - RefX;
1011 pp->
pY -= MapY - RefY;
1040 long RefX,RefY,MapX,MapY;
1047 struct p *Path, *
pp;
1066 pp->
pX += MapX - RefX;
1067 pp->
pY += MapY - RefY;
1111 double dx,dy,
d,mind;
1116 for (p = Path,i = 0;
p; p = p->
pSucc,i++) {
1125 for (p = Path, i = 0; i < indx; p = p->
pSucc,i++) ;
1139 double dx,dy,
d,mind;
1150 for (p = Path,i = 0;
p; p = p->
pSucc,i++) {
1161 Path = ((
struct w *)Pointer->
oRep)->wPath;
1162 for (p = Path, i = 0; i < indx; p = p->
pSucc,i++) ;
1178 static char DotP[] = {0,60, 40,40, 60,0, 40,-40, 0,-60, -40,-40,
1179 -60,0, -40,40, 0,60};
1204 static void mlist(
struct m*);
1213 static void mlist();
1228 for (s = CList; s; s = s->
next)
1246 for (s = CList; s; s = s->
next)
1248 for (;
CList; CList = s) {
1272 CDGen(CellDesc,GenDesc,&Pointer);
1273 if (Pointer ==
NULL)
break;
1298 CDGen(CellDesc,GenDesc,&Pointer);
1299 if (Pointer ==
NULL)
break;
1303 p = ((
struct w *)Pointer->
oRep)->wPath;
1318 CDGen(CellDesc,GenDesc,&Pointer);
1319 if (Pointer ==
NULL)
break;
1344 for (p = VertexList;
p; p = p->
ppSucc) {
1345 if (p->
ppX == x && p->
ppY == y) {
1350 if (p->
ppType == 0 && type == 0)
1377 for (p = DotList;
p; p = p->
pSucc) {
1378 if (p->
pX == x && p->
pY == y)
1396 struct p *
p, *pd, *Path;
1400 for (pd = DotList; pd; pd = pd->
pSucc) {
1402 p = Path =
alloc(p);
1406 for (i = 1; i < 9; i++) {
1422 p = (
struct p*)VertexList->
ppSucc;
1453 for (; md; md = md->mSucc) {
1473 for (s = CList; s; s = s->
next) {
1474 if (!strcmp(s->
name,name))
1477 if (!
CDOpen(name,&cd,
'r'))
static struct pp * VertexList
int InBox(long X, long Y, struct ka *AOI)
struct ka * kvCoarseWindow
#define FBEraseBox(L, B, R, T)
int IsManhattan(long X1, long Y1, long X2, long Y2)
#define COARSEVIEWPORTONLY
#define FineLToP(X, Y, XT, YT)
void EraseLargeCoarseViewport()
#define Min(Dragon, Eagle)
void Del(int *LookedAhead)
static void set_ref_to_vertex()
void ShowStretch(long MapX, long MapY, long RefX, long RefY)
static void allocate_wire()
union prp_data * prpty_Data
void ShowWire(int Color, long Width, struct p *Path)
void ShowPath(int Color, struct p *Path, int Terminate)
void StretchPath(int *LookedAhead)
void Dots(int *LookedAhead)
void HYtransformStretch()
void ShowPolygon(int Color, struct p *Path)
static struct p * DotList
static void append_point()
static void create_dots()
void ShowEmptyBox(int Color, struct ka *boxBB)
void Wires(int *LookedAhead)
void TransformReferencePoint()
void OversizeBox(struct ka *BB, int Delta)
static struct p * allocate_path()
static struct s * add_to_list()
#define ka_copy(BB1, BB2)
void OutlineBox(struct ka *AOI)
#define CoarseLToP(X, Y, XT, YT)
struct prpty * prpty_Succ
void AssignWireProperties()
void FBSetRubberBanding()
static struct p * get_nearest_vertex()
static struct clist * CList
static void restore_stretch()
static void record_wire()
void ClearReferenceUndoFlags()
static void last_path_point()
static void zap_last_point()
static void do_stretch_path()
void UndoReferenceTransform()
void EraseBox(struct ka *boxBB)
void ShowPrompt(char *str)
struct prpty * oPrptyList
#define HighlightingColor
#define MAXPOLYGONVERTICES
static void save_vertex()