Jspice3
viewport.c File Reference
#include "spice.h"
#include "sced.h"
#include "scedmacs.h"
Include dependency graph for viewport.c:

Go to the source code of this file.

Data Structures

struct  mark
 

Functions

static int get_menu_index ()
 
static void fix_menu_entry_prefix ()
 
static void display_menu_entry ()
 
static void display_selected_entry ()
 
static void mark_object ()
 
static void show_mark ()
 
static void gp_mark ()
 
static int my_strnicmp ()
 
void PToL (struct ka *Window, long *X, long *Y)
 
void ClipToGridPoint (long *x, long *y)
 
void ShowCommandMenu ()
 
void ShowMenu (MENU *Menu)
 
MENUGetCurrentMenu ()
 
void AlterMenuEntries (char *Word1, char *Word2)
 
void MenuSelect (char *Selection)
 
void MenuDeselect (char *Selection)
 
void MenuSelectDev (char *Selection)
 
void MenuDeselectDev (char *Selection)
 
void FixMenuPrefix (MENU *Menu)
 
static void fix_menu_entry_prefix (MENU *Menu, int Index)
 
static int get_menu_index (MENU *Menu, char *String)
 
static void display_menu_entry (MENU *Menu, int Index)
 
static void display_selected_entry (MENU *Menu, int Index)
 
void ShowPrompt (char *Prompt)
 
void ShowPromptAndWait (char *cp)
 
void ShowPromptWithColor (char *Prompt, int Color)
 
void RedrawPrompt ()
 
void AppendToOldPrompt (char c)
 
void ErasePrompt ()
 
void OutlineText (int Left, int Bottom, int Right, int Top, char Type, char DisplayOrErase, int Pixel)
 
void EraseLargeCoarseViewport ()
 
void EraseFineViewport ()
 
void ShowFineViewport ()
 
void ShowCurrentObject (struct o *Pointer, char DisplayOrErase)
 
static void mark_object (struct o *Pointer)
 
void ShowMarker (char DisplayOrErase, int Color, long X, long Y, int Delta, int Type, int Orient)
 
static void show_mark (struct mark *m, int Color)
 
static void gp_mark (int c, int Color, int x, int y, int delta, int orient)
 
static int my_strnicmp (char *s1, char *s2, int n)
 

Variables

static char BackPrompt [200]
 
static char BackColor
 

Function Documentation

void AlterMenuEntries ( char *  Word1,
char*  Word2 
)

Definition at line 186 of file viewport.c.

190 {
191  int i;
192 
193  i = get_menu_index(BasicMenu,Word1);
194  if (i >= 0) {
195  BasicMenu[i].mEntry = Word2;
197  }
198  i = get_menu_index(AmbiguityMenu,Word1);
199  if (i >= 0) {
200  AmbiguityMenu[i].mEntry = Word2;
202  }
203 }
char * mEntry
Definition: sced.h:364
static int get_menu_index()
static void fix_menu_entry_prefix()
MENU AmbiguityMenu[DefMenuSize]
Definition: scedintr.c:51
MENU * BasicMenu
Definition: scedintr.c:49
void AppendToOldPrompt ( char  c)

Definition at line 523 of file viewport.c.

526 {
527  char s[4];
528 
529  s[0] = ' ';
530  s[1] = s[0];
531  s[2] = c;
532  s[3] = '\0';
533  strcat(BackPrompt,s);
534 }
Definition: cddefs.h:119
static double c
Definition: vectors.c:16
static char BackPrompt[200]
Definition: viewport.c:436
void ClipToGridPoint ( long *  x,
long*  y 
)

Definition at line 89 of file viewport.c.

93 {
94 
95  long k;
96 
97  /* snap to grid/2 points */
98  k = Parameters.kpGrid/2;
99 
100  if (*x > 0)
101  *x = ((*x+k/2)/k)*k;
102  else
103  *x = ((*x-k/2)/k)*k;
104 
105  if (*y > 0)
106  *y = ((*y+k/2)/k)*k;
107  else
108  *y = ((*y-k/2)/k)*k;
109 }
struct kp Parameters
Definition: init.c:19
long kpGrid
Definition: sced.h:234
static void display_menu_entry ( )
static
static void display_menu_entry ( MENU Menu,
int  Index 
)
static

Definition at line 355 of file viewport.c.

359 {
360  char MenuSelection[8],*prefix;
361  int Left;
362 
363  strncpy(MenuSelection,Menu[Index].mEntry,MenuViewport.kaX);
364  MenuSelection[MenuViewport.kaX] = '\0';
365  prefix = Menu[Index].mPrefix;
366 
367  Index += MenuViewport.kaTop;
368  Left = MenuViewport.kaLeft;
369  if (Index > MenuViewport.kaY) {
370  Left += 6;
371  Index -= MenuViewport.kaY;
372  }
373  /*
374  * Erase highlight box.
375  */
376  OutlineText(Left,Index,Left+4,Index,FILL,ERASE,0);
377  /*
378  * Redisplay menu selection.
379  */
381  FBText(ROW_COLUMN,Index,Left,MenuSelection);
382 
384  FBText(ROW_COLUMN,Index,Left,prefix);
385 }
long kaY
Definition: sced.h:113
#define prefix(x, y)
Definition: readhelp.c:39
void DevSetColor()
#define ERASE
Definition: scedmacs.h:11
struct ka MenuViewport
Definition: init.c:18
long * Left
Definition: cd.c:1907
#define ROW_COLUMN
Definition: scedmacs.h:15
long kaTop
Definition: sced.h:112
char mPrefix[6]
Definition: sced.h:366
long kaLeft
Definition: sced.h:112
#define MenuTextColor
Definition: sced.h:75
#define MenuTextPrefixColor
Definition: sced.h:76
void FBText()
#define FILL
Definition: scedmacs.h:13
void OutlineText(int Left, int Bottom, int Right, int Top, char Type, char DisplayOrErase, int Pixel)
Definition: viewport.c:550
long kaX
Definition: sced.h:113
static void display_selected_entry ( )
static
static void display_selected_entry ( MENU Menu,
int  Index 
)
static

Definition at line 389 of file viewport.c.

393 {
394  char MenuSelection[8], *prefix;
395  int Left;
396 
397  strncpy(MenuSelection,Menu[Index].mEntry,MenuViewport.kaX);
398  MenuSelection[MenuViewport.kaX] = '\0';
399  prefix = Menu[Index].mPrefix;
400 
401  Index += MenuViewport.kaTop;
402  Left = MenuViewport.kaLeft;
403  if (Index > MenuViewport.kaY) {
404  Left += 6;
405  Index -= MenuViewport.kaY;
406  }
407  /*
408  * Erase Menu command
409  */
410  OutlineText(Left,Index,Left+4,Index,FILL,ERASE,0);
411 
412  /*
413  * Display highlight box.
414  */
415  OutlineText(Left,Index,Left+4,Index,FILL,DISPLAY,
417 
418  /*
419  * Redisplay menu selection.
420  */
422  FBText(ROW_COLUMN,Index,Left,MenuSelection);
423 
425  FBText(ROW_COLUMN,Index,Left,prefix);
426 }
long kaY
Definition: sced.h:113
#define prefix(x, y)
Definition: readhelp.c:39
void DevSetColor()
#define ERASE
Definition: scedmacs.h:11
#define MenuSelectedColor
Definition: sced.h:77
struct ka MenuViewport
Definition: init.c:18
long * Left
Definition: cd.c:1907
#define ROW_COLUMN
Definition: scedmacs.h:15
#define MenuHighlightingColor
Definition: sced.h:79
long kaTop
Definition: sced.h:112
char mPrefix[6]
Definition: sced.h:366
long kaLeft
Definition: sced.h:112
#define DISPLAY
Definition: scedmacs.h:12
#define MenuSelectedPrefixColor
Definition: sced.h:78
void FBText()
#define FILL
Definition: scedmacs.h:13
void OutlineText(int Left, int Bottom, int Right, int Top, char Type, char DisplayOrErase, int Pixel)
Definition: viewport.c:550
long kaX
Definition: sced.h:113
void EraseFineViewport ( )

Definition at line 594 of file viewport.c.

596 {
597  /*
598  * Erase fine positioning window in coarse window and patch
599  * up the hole. 'c' will disable showing of fine positioning
600  * window in Redisplay.
601  */
606 }
void Redisplay()
#define SPLITSCREEN
Definition: sced.h:48
#define COARSEVIEWPORTONLY
Definition: sced.h:51
char kpRedisplayControl
Definition: sced.h:312
struct kp Parameters
Definition: init.c:19
struct ka * kvFineWindow
Definition: sced.h:147
struct kv * View
Definition: init.c:17
void EraseBox()
void EraseLargeCoarseViewport ( )

Definition at line 583 of file viewport.c.

585 {
590 }
long kaRight
Definition: sced.h:112
#define FBEraseBox(L, B, R, T)
Definition: scedmacs.h:65
long kaBottom
Definition: sced.h:112
struct ka * kvLargeCoarseViewport
Definition: sced.h:151
long kaTop
Definition: sced.h:112
struct kv * View
Definition: init.c:17
long kaLeft
Definition: sced.h:112
void ErasePrompt ( )

Definition at line 538 of file viewport.c.

540 {
544  BackPrompt[0] = '\0';
545  DevUpdate();
546 }
#define ERASE
Definition: scedmacs.h:11
#define gi_numtextcols
Definition: scedmacs.h:61
struct kp Parameters
Definition: init.c:19
void DevUpdate()
Definition: display.c:359
static char BackPrompt[200]
Definition: viewport.c:436
#define gi_numtextrows
Definition: scedmacs.h:60
#define FILL
Definition: scedmacs.h:13
int kpLastCursorColumn
Definition: sced.h:293
void OutlineText(int Left, int Bottom, int Right, int Top, char Type, char DisplayOrErase, int Pixel)
Definition: viewport.c:550
static void fix_menu_entry_prefix ( )
static
static void fix_menu_entry_prefix ( MENU Menu,
int  Index 
)
static

Definition at line 301 of file viewport.c.

308 {
309  int Count;
310  char m1[32], m2[32];
311  int j,k;
312 
313  memset(Menu[Index].mPrefix,0,6);
314 
315  Count = 1;
316  strcpy(m1,Menu[Index].mEntry);
317  for (j = 0; Menu[j].mEntry; j++) {
318  if (Index == j) continue;
319  strcpy(m2,Menu[j].mEntry);
320  if (cieq(m1,m2)) {
321  if (*Menu[Index].mEntry != ' ')
322  for (k = j; Menu[k].mEntry; k++) {
323  strcpy(Menu[k].mPrefix,Menu[k+1].mPrefix);
324  Menu[k].mEntry = Menu[k+1].mEntry;
325  Menu[k].mActive = Menu[k+1].mActive;
326  }
327  continue;
328  }
329  while (!my_strnicmp(m1,m2,Count))
330  Count++;
331  }
332  if (Count > 5) Count = 5;
333  while (Count--)
334  Menu[Index].mPrefix[Count] = Menu[Index].mEntry[Count];
335 }
short mActive
Definition: sced.h:365
int cieq()
char * strcpy()
static int my_strnicmp()
char * mEntry
Definition: sced.h:364
char mPrefix[6]
Definition: sced.h:366
void FixMenuPrefix ( MENU Menu)

Definition at line 289 of file viewport.c.

292 {
293  int i;
294 
295  for (i = 0; Menu[i].mEntry; i++)
296  fix_menu_entry_prefix(Menu,i);
297 }
char * mEntry
Definition: sced.h:364
static void fix_menu_entry_prefix()
static int get_menu_index ( )
static
static int get_menu_index ( MENU Menu,
char *  String 
)
static

Definition at line 339 of file viewport.c.

343 {
344  int i = 0;
345 
346  while (Menu[i].mEntry != NULL) {
347  if (!strcmp(Menu[i].mEntry,String)) return (i);
348  i++;
349  }
350  return (-1);
351 }
#define NULL
Definition: spdefs.h:121
MENU* GetCurrentMenu ( )

Definition at line 174 of file viewport.c.

176 {
177  if (Parameters.kpMenu == BASICMENU)
178  return (BasicMenu);
180  return (AmbiguityMenu);
181  return (NULL);
182 }
#define BASICMENU
Definition: sced.h:56
char kpMenu
Definition: sced.h:319
#define NULL
Definition: spdefs.h:121
struct kp Parameters
Definition: init.c:19
#define AMBIGUITYMENU
Definition: sced.h:57
MENU AmbiguityMenu[DefMenuSize]
Definition: scedintr.c:51
MENU * BasicMenu
Definition: scedintr.c:49
static void gp_mark ( )
static
static void gp_mark ( int  c,
int  Color,
int  x,
int  y,
int  delta,
int  orient 
)
static

Definition at line 857 of file viewport.c.

860 {
861  int x0, x1, y0, y1, y2;
862  struct ka AOI;
863 
864  delta /= 2;
865  x0 = x - delta;
866  x1 = x + delta;
867  y0 = y - delta;
868  y1 = y;
869  y2 = y + delta;
870 
871  AOI.kaLeft = x0;
872  AOI.kaRight = x1;
873  AOI.kaTop = y2;
874  AOI.kaBottom = y0;
875 
876  switch (orient) {
877  case MARK_NONE:
878  EraseBox(&AOI);
879  ShowLine(Color,x0,y2,x1,y2);
880  ShowLine(Color,x1,y2,x1,y0);
881  ShowLine(Color,x1,y0,x0,y0);
882  ShowLine(Color,x0,y0,x0,y2);
883  break;
884  case MARK_UP: /* up */
885  AOI.kaTop += delta;
886  EraseBox(&AOI);
887  ShowLine(Color,x0,y2,(x0+x1)/2,y2+delta);
888  ShowLine(Color,(x0+x1)/2,y2+delta,x1,y2);
889  ShowLine(Color,x1,y2,x1,y0);
890  ShowLine(Color,x1,y0,x0,y0);
891  ShowLine(Color,x0,y0,x0,y2);
892  break;
893  case MARK_RT: /* right */
894  AOI.kaRight += delta;
895  EraseBox(&AOI);
896  ShowLine(Color,x0,y2,x1,y2);
897  ShowLine(Color,x1,y2,x1+delta,y1);
898  ShowLine(Color,x1+delta,y1,x1,y0);
899  ShowLine(Color,x1,y0,x0,y0);
900  ShowLine(Color,x0,y0,x0,y2);
901  break;
902  case MARK_DN: /* down */
903  AOI.kaBottom -= delta;
904  EraseBox(&AOI);
905  ShowLine(Color,x0,y2,x1,y2);
906  ShowLine(Color,x1,y2,x1,y0);
907  ShowLine(Color,x1,y0,(x0+x1)/2,y0-delta);
908  ShowLine(Color,(x0+x1)/2,y0-delta,x0,y0);
909  ShowLine(Color,x0,y0,x0,y2);
910  break;
911  case MARK_LT: /* left */
912  AOI.kaLeft -= delta;
913  EraseBox(&AOI);
914  ShowLine(Color,x0,y2,x1,y2);
915  ShowLine(Color,x1,y2,x1,y0);
916  ShowLine(Color,x1,y0,x0,y0);
917  ShowLine(Color,x0,y0,x0-delta,y1);
918  ShowLine(Color,x0-delta,y1,x0,y2);
919  break;
920  }
921 
922  delta /= 2;
923  x0 += delta;
924  x1 -= delta;
925  y0 += delta;
926  y2 -= delta;
927 
928  switch (c) {
929  case MARK_GP1:
930  ShowLine(Color,x1,y2,x1,y0);
931  break;
932  case MARK_GP2:
933  ShowLine(Color,x0,y2,x1,y2);
934  ShowLine(Color,x1,y2,x1,y1);
935  ShowLine(Color,x1,y1,x0,y1);
936  ShowLine(Color,x0,y1,x0,y0);
937  ShowLine(Color,x0,y0,x1,y0);
938  break;
939  case MARK_GP3:
940  ShowLine(Color,x1,y2,x1,y0);
941  ShowLine(Color,x0,y2,x1,y2);
942  ShowLine(Color,x0,y1,x1,y1);
943  ShowLine(Color,x0,y0,x1,y0);
944  break;
945  case MARK_GP4:
946  ShowLine(Color,x1,y2,x1,y0);
947  ShowLine(Color,x0,y2,x0,y1);
948  ShowLine(Color,x0,y1,x1,y1);
949  break;
950  case MARK_GP5:
951  ShowLine(Color,x1,y2,x0,y2);
952  ShowLine(Color,x0,y2,x0,y1);
953  ShowLine(Color,x0,y1,x1,y1);
954  ShowLine(Color,x1,y1,x1,y0);
955  ShowLine(Color,x1,y0,x0,y0);
956  break;
957  case MARK_GP6:
958  ShowLine(Color,x0,y2,x0,y0);
959  ShowLine(Color,x0,y1,x1,y1);
960  ShowLine(Color,x1,y1,x1,y0);
961  ShowLine(Color,x1,y0,x0,y0);
962  break;
963  case MARK_GP7:
964  ShowLine(Color,x0,y2,x1,y2);
965  ShowLine(Color,x1,y2,x1,y0);
966  break;
967  case MARK_GP8:
968  ShowLine(Color,x0,y2,x1,y2);
969  ShowLine(Color,x0,y1,x1,y1);
970  ShowLine(Color,x0,y0,x1,y0);
971  ShowLine(Color,x1,y2,x1,y0);
972  ShowLine(Color,x0,y2,x0,y0);
973  break;
974  }
975 }
#define MARK_DN
Definition: scedmacs.h:29
#define MARK_LT
Definition: scedmacs.h:32
#define MARK_GP3
Definition: scedmacs.h:22
#define MARK_GP6
Definition: scedmacs.h:25
Definition: sced.h:111
#define MARK_GP4
Definition: scedmacs.h:23
#define MARK_UP
Definition: scedmacs.h:31
#define MARK_GP5
Definition: scedmacs.h:24
void Color()
void EraseBox()
long kaLeft
Definition: sced.h:112
Definition: cddefs.h:177
#define MARK_GP2
Definition: scedmacs.h:21
#define MARK_RT
Definition: scedmacs.h:30
void ShowLine()
#define MARK_GP7
Definition: scedmacs.h:26
#define MARK_GP8
Definition: scedmacs.h:27
#define MARK_GP1
Definition: scedmacs.h:20
#define MARK_NONE
Definition: scedmacs.h:28
static void mark_object ( )
static
static void mark_object ( struct o Pointer)
static

Definition at line 699 of file viewport.c.

702 {
703  struct ka AOI;
704  struct p *Path;
705  int Layer;
706  long Width;
707 
708 
709  if (Pointer->oType == CDWIRE) {
710  CDWire(Pointer,&Layer,&Width,&Path);
711  ShowWire(HighlightingColor,Width,Path);
712  }
713  else {
714  /*
715  * Show the object with an X through the bounding box.
716  */
717  CDBB(Parameters.kpCellDesc,Pointer,&AOI.kaLeft,&AOI.kaBottom,
718  &AOI.kaRight,&AOI.kaTop);
719  ShowLine(HighlightingColor,AOI.kaLeft,AOI.kaBottom,
720  AOI.kaRight,AOI.kaTop);
721  ShowLine(HighlightingColor,AOI.kaLeft,AOI.kaTop,
722  AOI.kaRight,AOI.kaBottom);
724  }
725 }
char oType
Definition: cddefs.h:148
struct s * kpCellDesc
Definition: sced.h:207
Definition: sced.h:111
void CDWire()
Definition: cddefs.h:215
void ShowWire()
struct kp Parameters
Definition: init.c:19
void ShowEmptyBox()
int Layer
Definition: cd.c:1908
#define CDWIRE
Definition: cddefs.h:47
int CDBB()
void ShowLine()
#define HighlightingColor
Definition: sced.h:74
void MenuDeselect ( char *  Selection)

Definition at line 229 of file viewport.c.

232 {
233  int Int1;
234 
236  if (Int1 >= 0) {
237  BasicMenu[Int1].mActive = False;
238  if (Parameters.kpMenu == BASICMENU)
240  }
242  if (Int1 >= 0) {
243  AmbiguityMenu[Int1].mActive = False;
246  }
247 }
short mActive
Definition: sced.h:365
void Selection()
static int get_menu_index()
#define BASICMENU
Definition: sced.h:56
static void display_menu_entry()
char kpMenu
Definition: sced.h:319
struct kp Parameters
Definition: init.c:19
#define AMBIGUITYMENU
Definition: sced.h:57
MENU AmbiguityMenu[DefMenuSize]
Definition: scedintr.c:51
MENU * BasicMenu
Definition: scedintr.c:49
#define False
Definition: scedstub.c:15
void MenuDeselectDev ( char *  Selection)

Definition at line 270 of file viewport.c.

273 {
274  int Int1,Int2;
275 
277  if (Int1 >= 0) {
278  for (Int2 = 0; ; Int2++)
279  if (BasicMenu[Int2].mEntry == NULL) break;
280  if (Int2 < MenuViewport.kaY)
281  Int2 = MenuViewport.kaY;
282  DeviceMenu[Int1].mActive = False;
283  display_menu_entry(DeviceMenu-Int2,Int1+Int2);
284  }
285 }
long kaY
Definition: sced.h:113
short mActive
Definition: sced.h:365
void Selection()
static int get_menu_index()
struct ka MenuViewport
Definition: init.c:18
static void display_menu_entry()
#define NULL
Definition: spdefs.h:121
MENU * DeviceMenu
Definition: scedintr.c:50
MENU * BasicMenu
Definition: scedintr.c:49
#define False
Definition: scedstub.c:15
void MenuSelect ( char *  Selection)

Definition at line 207 of file viewport.c.

210 {
211  int Int1;
212 
214  if (Int1 >= 0) {
215  BasicMenu[Int1].mActive = True;
216  if (Parameters.kpMenu == BASICMENU)
218  }
220  if (Int1 >= 0) {
221  AmbiguityMenu[Int1].mActive = True;
224  }
225 }
short mActive
Definition: sced.h:365
void Selection()
static int get_menu_index()
#define BASICMENU
Definition: sced.h:56
char kpMenu
Definition: sced.h:319
struct kp Parameters
Definition: init.c:19
#define True
Definition: scedstub.c:16
#define AMBIGUITYMENU
Definition: sced.h:57
MENU AmbiguityMenu[DefMenuSize]
Definition: scedintr.c:51
MENU * BasicMenu
Definition: scedintr.c:49
static void display_selected_entry()
void MenuSelectDev ( char *  Selection)

Definition at line 251 of file viewport.c.

254 {
255  int Int1,Int2;
256 
258  if (Int1 >= 0) {
259  for (Int2 = 0; ; Int2++)
260  if (BasicMenu[Int2].mEntry == NULL) break;
261  if (Int2 < MenuViewport.kaY)
262  Int2 = MenuViewport.kaY;
263  DeviceMenu[Int1].mActive = True;
264  display_selected_entry(DeviceMenu-Int2,Int1+Int2);
265  }
266 }
long kaY
Definition: sced.h:113
short mActive
Definition: sced.h:365
void Selection()
static int get_menu_index()
struct ka MenuViewport
Definition: init.c:18
#define NULL
Definition: spdefs.h:121
MENU * DeviceMenu
Definition: scedintr.c:50
#define True
Definition: scedstub.c:16
MENU * BasicMenu
Definition: scedintr.c:49
static void display_selected_entry()
static int my_strnicmp ( )
static
static int my_strnicmp ( char *  s1,
char *  s2,
int  n 
)
static

Definition at line 986 of file viewport.c.

991 {
992  char c, d;
993 
994  while (n--) {
995  c = *s1;
996  d = *s2;
997  if (c == '\0') return (-1);
998  if (d == '\0') return (1);
999  if (isupper(c)) c = tolower(c);
1000  if (isupper(d)) d = tolower(d);
1001  if (c != d) return (c-d);
1002  s1++;
1003  s2++;
1004  }
1005  return (0);
1006 }
Definition: cddefs.h:237
static double c
Definition: vectors.c:16
void OutlineText ( int  Left,
int  Bottom,
int  Right,
int  Top,
char  Type,
char  DisplayOrErase,
int  Pixel 
)

Definition at line 550 of file viewport.c.

554 {
555  /*
556  * Outline the box defined by LeftColumn, BottomRow, RightColumn, and
557  * TopRow in the color associated with Pixel.
558  */
559 
561  if (Bottom < 0) Bottom = 0;
562  Top = gi_maxy-(Top-1)*gi_fntheight;
563  if (Top > gi_maxy) Top = gi_maxy;
564  Left = (Left-1) * gi_fntwidth;
565  Right = (Right * gi_fntwidth) + 1;
566  if (Type == OUTLINE) {
567  ++Bottom;
568  --Top;
569  }
570  FBBox(Pixel,DisplayOrErase,Type,Left,Bottom,Right,Top-1);
571 }
#define gi_fntheight
Definition: scedmacs.h:57
long * Left
Definition: cd.c:1907
#define OUTLINE
Definition: scedmacs.h:14
long * Top
Definition: cd.c:1907
long * Right
Definition: cd.c:1907
#define FBBox(Pixel, DisplayOrErase, Type, L, B, R, T)
Definition: scedmacs.h:78
long * Bottom
Definition: cd.c:1907
#define gi_fntwidth
Definition: scedmacs.h:56
int char Type
Definition: actions.c:449
#define gi_maxy
Definition: scedmacs.h:59
void PToL ( struct ka Window,
long *  X,
long *  Y 
)

Definition at line 59 of file viewport.c.

64 {
65  if (Window == View->kvCoarseWindow) {
66  *X = .5+(*X - View->kvCoarseViewport->kaLeft)/
68  *X += Window->kaLeft;
69  *Y = .5+(*Y - View->kvCoarseViewport->kaBottom)/
71  *Y += Window->kaBottom;
72  }
73  elif (Window == View->kvFineWindow) {
74  *X = .5+(*X - View->kvFineViewport->kaLeft)/
76  *X += Window->kaLeft;
77  *Y = .5+(*Y - View->kvFineViewport->kaBottom)/
79  *Y += Window->kaBottom;
80  }
81  else {
82  *X = *Y = 0;
83  return;
84  }
85 }
struct ka * kvCoarseWindow
Definition: sced.h:149
double kvFineRatio
Definition: sced.h:154
long kaBottom
Definition: sced.h:112
double kvCoarseRatio
Definition: sced.h:155
struct ka * kvFineViewport
Definition: sced.h:148
long X
Definition: actions.c:450
struct ka * kvCoarseViewport
Definition: sced.h:150
#define elif
Definition: cdmacs.h:10
struct ka * kvFineWindow
Definition: sced.h:147
struct kv * View
Definition: init.c:17
long kaLeft
Definition: sced.h:112
long Y
Definition: actions.c:450
void RedrawPrompt ( )

Definition at line 512 of file viewport.c.

514 {
515  if (BackPrompt[0] == '\0') return;
519 }
void DevSetColor()
static char BackColor
Definition: viewport.c:437
#define ROW_COLUMN
Definition: scedmacs.h:15
struct kp Parameters
Definition: init.c:19
static char BackPrompt[200]
Definition: viewport.c:436
void FBText()
#define gi_numtextrows
Definition: scedmacs.h:60
int kpLastCursorColumn
Definition: sced.h:293
static void show_mark ( )
static
static void show_mark ( struct mark m,
int  Color 
)
static

Definition at line 802 of file viewport.c.

806 {
807  long X, Y;
808  int Delta;
809 
810  X = m->X;
811  Y = m->Y;
812  Delta = m->Delta;
813 
814  /* transform for PUSH */
815  TPoint(&X,&Y);
816 
817  switch (m->Type) {
818  case MARK_ARROW:
819  switch (m->Orient) {
820  default:
821  case MARK_UP:
822  ShowLine(Color,X,Y-Delta,X,Y+Delta);
823  ShowLine(Color,X-Delta,Y,X,Y+Delta);
824  ShowLine(Color,X+Delta,Y,X,Y+Delta);
825  break;
826  case MARK_RT:
827  ShowLine(Color,X-Delta,Y,X+Delta,Y);
828  ShowLine(Color,X,Y+Delta,X+Delta,Y);
829  ShowLine(Color,X,Y-Delta,X+Delta,Y);
830  break;
831  case MARK_DN:
832  ShowLine(Color,X,Y-Delta,X,Y+Delta);
833  ShowLine(Color,X-Delta,Y,X,Y-Delta);
834  ShowLine(Color,X+Delta,Y,X,Y-Delta);
835  break;
836  case MARK_LT:
837  ShowLine(Color,X-Delta,Y,X+Delta,Y);
838  ShowLine(Color,X,Y+Delta,X-Delta,Y);
839  ShowLine(Color,X,Y-Delta,X-Delta,Y);
840  break;
841  }
842  break;
843  case MARK_CROSS:
844  /* cross (no orientation) */
845  ShowLine(Color,X-Delta,Y,X+Delta,Y);
846  ShowLine(Color,X,Y-Delta,X,Y+Delta);
847  break;
848  default:
849  /* graphical post-processor marks */
850  gp_mark(m->Type,Color,X,Y,Delta,m->Orient);
851  break;
852  }
853 }
int Type
Definition: viewport.c:23
#define MARK_DN
Definition: scedmacs.h:29
void TPoint()
#define MARK_LT
Definition: scedmacs.h:32
#define MARK_UP
Definition: scedmacs.h:31
long Y
Definition: viewport.c:21
int Orient
Definition: viewport.c:24
long X
Definition: actions.c:450
void Color()
#define MARK_CROSS
Definition: scedmacs.h:18
static void gp_mark()
int Delta
Definition: viewport.c:22
#define MARK_RT
Definition: scedmacs.h:30
void ShowLine()
long X
Definition: viewport.c:20
long Y
Definition: actions.c:450
#define MARK_ARROW
Definition: scedmacs.h:19
void ShowCommandMenu ( )

Definition at line 121 of file viewport.c.

123 {
124  if (Parameters.kpMenu == BASICMENU) {
126  return;
127  }
130  return;
131  }
132 }
#define BASICMENU
Definition: sced.h:56
void ShowMenu(MENU *Menu)
Definition: viewport.c:136
char kpMenu
Definition: sced.h:319
struct kp Parameters
Definition: init.c:19
#define AMBIGUITYMENU
Definition: sced.h:57
MENU AmbiguityMenu[DefMenuSize]
Definition: scedintr.c:51
MENU * BasicMenu
Definition: scedintr.c:49
void ShowCurrentObject ( struct o Pointer,
char  DisplayOrErase 
)

Definition at line 642 of file viewport.c.

646 {
647  struct ka AOI;
648  static struct ks *ObjQ;
649  struct ks *q,*qq;
650 
651  if (Pointer == NULL) {
652  for (q = ObjQ; q; q = qq) {
653  qq = q->ksSucc;
654  if (DisplayOrErase == DISPLAY)
656  else {
657  CDBB(Parameters.kpCellDesc,q->ksPointer,&AOI.kaLeft,
658  &AOI.kaBottom,&AOI.kaRight,&AOI.kaTop);
659  EraseBox(&AOI);
660  ObjQ = NULL;
661  Redisplay(&AOI);
662  tfree(q);
663  }
664  }
666  DevUpdate();
667  return;
668  }
669 
670  if (DisplayOrErase == DISPLAY) {
671  mark_object(Pointer);
672  q = alloc(ks);
673  if (q == NULL) MallocFailed();
674  q->ksPointer = Pointer;
675  q->ksSucc = ObjQ;
676  ObjQ = q;
677  }
678  else {
679  for (qq = NULL,q = ObjQ; q; qq = q,q = q->ksSucc)
680  if (q->ksPointer == Pointer) {
681  if (qq)
682  qq->ksSucc = q->ksSucc;
683  else
684  ObjQ = q->ksSucc;
685  tfree(q);
686  break;
687  }
688  CDBB(Parameters.kpCellDesc,Pointer,&AOI.kaLeft,&AOI.kaBottom,
689  &AOI.kaRight,&AOI.kaTop);
690  EraseBox(&AOI);
691  Redisplay(&AOI);
692  }
694  DevUpdate();
695 }
void Redisplay()
int struct o * Pointer
Definition: cd.c:1311
struct ka * kvCoarseWindow
Definition: sced.h:149
struct o * ksPointer
Definition: sced.h:335
struct s * kpCellDesc
Definition: sced.h:207
static void mark_object()
Definition: sced.h:111
#define alloc(type)
Definition: cdmacs.h:21
void MallocFailed()
Definition: scedintr.c:857
#define tfree(x)
Definition: cdmacs.h:22
struct ks * ksSucc
Definition: sced.h:334
#define NULL
Definition: spdefs.h:121
struct kp Parameters
Definition: init.c:19
struct kv * View
Definition: init.c:17
void EraseBox()
#define DISPLAY
Definition: scedmacs.h:12
void DevUpdate()
Definition: display.c:359
void SetCurrentAOI()
Definition: sced.h:333
int CDBB()
void ShowFineViewport ( )

Definition at line 610 of file viewport.c.

612 {
616  }
617  else {
622  /* Show fine positioning window in coarse window. */
624  /* Redisplay in magnifying glass. */
628  }
629  DevUpdate();
630 }
void Redisplay()
#define SPLITSCREEN
Definition: sced.h:48
struct ka * kvCoarseWindow
Definition: sced.h:149
long kaRight
Definition: sced.h:112
#define FBEraseBox(L, B, R, T)
Definition: scedmacs.h:65
long kaBottom
Definition: sced.h:112
#define COARSEVIEWPORTONLY
Definition: sced.h:51
void EraseLargeCoarseViewport()
Definition: viewport.c:583
char kpRedisplayControl
Definition: sced.h:312
struct ka * kvFineViewport
Definition: sced.h:148
#define FINEVIEWPORTONLY
Definition: sced.h:50
struct kp Parameters
Definition: init.c:19
long kaTop
Definition: sced.h:112
void ShowEmptyBox()
struct ka * kvFineWindow
Definition: sced.h:147
struct kv * View
Definition: init.c:17
long kaLeft
Definition: sced.h:112
void DevUpdate()
Definition: display.c:359
#define HighlightingColor
Definition: sced.h:74
void ShowMarker ( char  DisplayOrErase,
int  Color,
long  X,
long  Y,
int  Delta,
int  Type,
int  Orient 
)

Definition at line 729 of file viewport.c.

737 {
738  struct t *TGen;
739  struct ka BB;
740  long X1,Y1,X2,Y2;
741  long DX, DY;
742 
743  /* SRW ** save markers for redraw after screen alteration */
744  static struct mark *mlist;
745  struct mark *mm, *mtmp;
746 
747  /* SRW ** display stored marks */
748  if (!Delta && DisplayOrErase == DISPLAY) {
749  for (mm = mlist; mm; mm = mm->next) {
750  show_mark(mm,Color);
751  }
752  ShowCurrentObject((struct o *)NULL,DISPLAY);
753  return;
754  }
755 
756  /* SRW ** constant size on screen */
759  else
761  Delta /= RESOLUTION;
762 
763  if (DisplayOrErase == DISPLAY) {
765 
766  /* add marker to list */
767  mm = alloc(mark);
768  if (!mm) MallocFailed();
769  mm->X = X;
770  mm->Y = Y;
771  mm->Delta = Delta;
772  mm->Type = Type;
773  mm->Orient = Orient;
774  mm->next = mlist;
775  mlist = mm;
776 
777  show_mark(mm,Color);
778  }
779  else {
780  /* remove from list */
781  for (mtmp = NULL,mm = mlist; mm; mtmp = mm,mm = mm->next) {
782  if (mm->X == X && mm->Y == Y) {
783  Delta = mm->Delta;
784  if (mm == mlist) mlist = mm->next;
785  else mtmp->next = mm->next;
786  tfree(mm);
787  break;
788  }
789  }
790  BB.kaLeft = X - Delta;
791  BB.kaRight = X + Delta;
792  BB.kaBottom = Y - Delta;
793  BB.kaTop = Y + Delta;
794  EraseBox(&BB);
795  Redisplay(&BB);
796  }
798 }
static void mlist()
int Type
Definition: viewport.c:23
struct mark * next
Definition: viewport.c:25
void Redisplay()
struct ka * kvCoarseWindow
Definition: sced.h:149
void DevSetColor()
#define COARSEVIEWPORTONLY
Definition: sced.h:51
Definition: viewport.c:19
Definition: sced.h:111
char kpRedisplayControl
Definition: sced.h:312
long Y
Definition: viewport.c:21
#define alloc(type)
Definition: cdmacs.h:21
void ShowCurrentObject(struct o *Pointer, char DisplayOrErase)
Definition: viewport.c:642
int Orient
Definition: viewport.c:24
void MallocFailed()
Definition: scedintr.c:857
long X
Definition: actions.c:450
#define tfree(x)
Definition: cdmacs.h:22
#define NULL
Definition: spdefs.h:121
struct kp Parameters
Definition: init.c:19
void Color()
struct ka * kvFineWindow
Definition: sced.h:147
#define RESOLUTION
Definition: sced.h:36
double kaHeight
Definition: sced.h:114
struct kv * View
Definition: init.c:17
void EraseBox()
#define DISPLAY
Definition: scedmacs.h:12
Definition: cddefs.h:142
void SetCurrentAOI()
int Delta
Definition: viewport.c:22
static void show_mark()
int char Type
Definition: actions.c:449
long X
Definition: viewport.c:20
Definition: cddefs.h:192
long Y
Definition: actions.c:450
void ShowMenu ( MENU Menu)

Definition at line 136 of file viewport.c.

139 {
140  int Int1,Int2;
141 
142  /*
143  * Erase the entire menu viewport.
144  */
147  /*
148  * Display Menu Table
149  */
150  for (Int1 = 0; ; Int1++) {
151  if (Menu[Int1].mEntry == NULL) break;
152  if (Menu[Int1].mActive)
153  display_selected_entry(Menu,Int1);
154  else
155  display_menu_entry(Menu,Int1);
156  }
157  if (Menu == BasicMenu) {
158  Int2 = Int1;
159  if (Int2 < MenuViewport.kaY)
160  Int2 = MenuViewport.kaY;
161  for (Int1 = 0; ; Int1++) {
162  if (DeviceMenu[Int1].mEntry == NULL) break;
163  if (DeviceMenu[Int1].mActive)
164  display_selected_entry(DeviceMenu-Int2,Int1+Int2);
165  else
166  display_menu_entry(DeviceMenu-Int2,Int1+Int2);
167  }
168  }
169  DevUpdate();
170 }
long kaY
Definition: sced.h:113
long kaRight
Definition: sced.h:112
long kaBottom
Definition: sced.h:112
#define ERASE
Definition: scedmacs.h:11
struct ka MenuViewport
Definition: init.c:18
static void display_menu_entry()
#define NULL
Definition: spdefs.h:121
long kaTop
Definition: sced.h:112
MENU * DeviceMenu
Definition: scedintr.c:50
long kaLeft
Definition: sced.h:112
void DevUpdate()
Definition: display.c:359
MENU * BasicMenu
Definition: scedintr.c:49
static void display_selected_entry()
#define FILL
Definition: scedmacs.h:13
void OutlineText(int Left, int Bottom, int Right, int Top, char Type, char DisplayOrErase, int Pixel)
Definition: viewport.c:550
void ShowPrompt ( char *  Prompt)

Definition at line 441 of file viewport.c.

444 {
446 }
#define PromptTextColor
Definition: sced.h:80
void ShowPromptWithColor(char *Prompt, int Color)
Definition: viewport.c:462
void ShowPromptAndWait ( char *  cp)

Definition at line 450 of file viewport.c.

453 {
454  putchar('\007');
455  fflush(stdout);
456  ShowPrompt(cp);
457  sleep(2);
458 }
void ShowPrompt(char *Prompt)
Definition: viewport.c:441
void ShowPromptWithColor ( char *  Prompt,
int  Color 
)

Definition at line 462 of file viewport.c.

466 {
467  /*
468  * Implements a basic scroller in a prompt window.
469  * Displays MORE when window is full and continues when
470  * user hits and key.
471  */
472  char *cp;
473  char *TypeIn;
474  char buffer[200];
475  int Int1;
476  int Row;
477 
478  Row = gi_numtextrows;
479  ErasePrompt();
481  BackColor = Color;
482  cp = Prompt;
483  Int1 = 0;
484  while (*cp != EOS) {
485  buffer[Int1] = *cp++;
486  if (buffer[Int1] == '\n')
487  buffer[Int1] = EOS;
488  Int1++;
489  if (*cp == EOS) {
490  buffer[Int1++] = EOS;
491  strcpy(BackPrompt,buffer);
492  FBText(ROW_COLUMN,Row,1,buffer);
493  DevUpdate();
494  Parameters.kpLastCursorColumn = strlen(buffer) + 1;
495  }
496  elif ((Int1 > gi_numtextcols - 8) Or (Int1 > 190)) {
497  sprintf(&buffer[Int1]," MORE");
498  strcpy(BackPrompt,buffer);
499  FBText(ROW_COLUMN,Row,1,buffer);
500  DevUpdate();
501  Parameters.kpLastCursorColumn = strlen(buffer);
502  (void)FBGetchar(ERASE);
503  ErasePrompt();
505  Int1 = 0;
506  }
507  }
508 }
#define Or
Definition: cdmacs.h:15
void ErasePrompt()
Definition: viewport.c:538
char * strcpy()
void DevSetColor()
#define ERASE
Definition: scedmacs.h:11
#define gi_numtextcols
Definition: scedmacs.h:61
static char BackColor
Definition: viewport.c:437
#define ROW_COLUMN
Definition: scedmacs.h:15
struct kp Parameters
Definition: init.c:19
void Color()
#define elif
Definition: cdmacs.h:10
short FBGetchar()
void DevUpdate()
Definition: display.c:359
static char BackPrompt[200]
Definition: viewport.c:436
#define EOS
Definition: cdmacs.h:9
void FBText()
#define gi_numtextrows
Definition: scedmacs.h:60
int kpLastCursorColumn
Definition: sced.h:293

Variable Documentation

char BackColor
static

Definition at line 437 of file viewport.c.

char BackPrompt[200]
static

Definition at line 436 of file viewport.c.