1 /*------------------------------------------------------------\
2 |                                                             |
3 | This file is part of the Alliance CAD System Copyright      |
4 | (C) Laboratoire LIP6 - D�partement ASIM Universite P&M Curie|
5 |                                                             |
6 | Home page      : http://www-asim.lip6.fr/alliance/          |
7 | E-mail         : mailto:alliance-users@asim.lip6.fr       |
8 |                                                             |
9 | This progam is  free software; you can redistribute it      |
10 | and/or modify it under the  terms of the GNU General Public |
11 | License as  published by the Free Software Foundation;      |
12 | either version 2 of the License, or (at your option) any    |
13 | later version.                                              |
14 |                                                             |
15 | Alliance VLSI  CAD System  is distributed  in the hope that |
16 | it  will be useful, but WITHOUT  ANY WARRANTY;              |
17 | without even the  implied warranty of MERCHANTABILITY or    |
18 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General       |
19 | Public License for more details.                            |
20 |                                                             |
21 | You should have received a copy  of the GNU General Public  |
22 | License along with the GNU C Library; see the file COPYING. |
23 | If not, write to the Free Software Foundation, Inc.,        |
24 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                     |
25 |                                                             |
26 \------------------------------------------------------------*/
27 
28 /*------------------------------------------------------------\
29 |                                                             |
30 | Tool    :                   GRAAL                           |
31 |                                                             |
32 | File    :                   Map.c                           |
33 |                                                             |
34 | Author  :                Jacomme Ludovic                    |
35 |                                                             |
36 | Date    :                  28.03.95                         |
37 |                                                             |
38 \------------------------------------------------------------*/
39 
40 /*------------------------------------------------------------\
41 |                                                             |
42 |                         Include Files                       |
43 |                                                             |
44 \------------------------------------------------------------*/
45 
46 # include <stdio.h>
47 # include <Xm/Xm.h>
48 # include <Xm/Form.h>
49 # include <Xm/Frame.h>
50 # include <Xm/PushB.h>
51 # include <Xm/DrawingA.h>
52 
53 # include "mut.h"
54 # include "mph.h"
55 # include "rds.h"
56 # include "rpr.h"
57 # include "GSB.h"
58 # include "GRM.h"
59 # include "GTB.h"
60 # include "GMX.h"
61 # include "GMV.h"
62 
63 # include "GMV_map.h"
64 
65 /*------------------------------------------------------------\
66 |                                                             |
67 |                           Constants                         |
68 |                                                             |
69 \------------------------------------------------------------*/
70 /*------------------------------------------------------------\
71 |                                                             |
72 |                            Types                            |
73 |                                                             |
74 \------------------------------------------------------------*/
75 /*------------------------------------------------------------\
76 |                                                             |
77 |                          Variables                          |
78 |                                                             |
79 \------------------------------------------------------------*/
80 
81    GraalPanelItem GraalViewMapPanel =
82 
83          {
84            "Map",
85            1,
86            0,
87            GRAAL_VIEW_MAP_X,
88            GRAAL_VIEW_MAP_Y,
89            190,
90            200,
91            1,
92            1,
93            (Widget)NULL,
94            (Widget)NULL,
95            (Widget)NULL,
96            (Widget)NULL,
97            0,
98            (GraalPanelButtonItem *)NULL
99          };
100 
101    int GraalViewMapDefaultValues[ 5 ] =
102 
103          {
104            GRAAL_VIEW_MAP_X,
105            GRAAL_VIEW_MAP_Y,
106            190, 200, 0
107          };
108 
109 /*------------------------------------------------------------\
110 |                                                             |
111 |                      Graphic Map Window                     |
112 |                                                             |
113 \------------------------------------------------------------*/
114 
115   Widget     GraalMapWindow;
116   Widget     GraalMapButtonCompute;
117   Widget     GraalMapButtonClose;
118 
119   Dimension  GraalMapDx    = 0;
120   Dimension  GraalMapDy    = 0;
121 
122   static char GraalFirstEnterMap = GRAAL_TRUE;
123   static char GraalFirstExpose   = GRAAL_TRUE;
124 
125 /*------------------------------------------------------------\
126 |                                                             |
127 |                         Lambda Map                          |
128 |                                                             |
129 \------------------------------------------------------------*/
130 
131   float      GraalLambdaMapStep;
132 
133   long       GraalLambdaMapX;
134   long       GraalLambdaMapY;
135   long       GraalLambdaMapDx;
136   long       GraalLambdaMapDy;
137 
138   long       GraalBoundMapX;
139   long       GraalBoundMapY;
140   long       GraalBoundMapDx;
141   long       GraalBoundMapDy;
142 
143   long       GraalPixelMapX;
144   long       GraalPixelMapY;
145 
146 /*------------------------------------------------------------\
147 |                                                             |
148 |                            Expose                           |
149 |                                                             |
150 \------------------------------------------------------------*/
151 /*------------------------------------------------------------\
152 |                                                             |
153 |                          Translation                        |
154 |                                                             |
155 \------------------------------------------------------------*/
156 
157   static String GraalMapEventTranslation =
158 
159     "<Btn1Up>:      CallbackMapEvent( 0 )\n\
160      <Btn2Up>:      CallbackMapEvent( 1 )\n\
161      <Btn3Up>:      CallbackMapEvent( 2 )";
162 
163 /*------------------------------------------------------------\
164 |                                                             |
165 |                           Functions                         |
166 |                                                             |
167 \------------------------------------------------------------*/
168 /*------------------------------------------------------------\
169 |                                                             |
170 |                         Event Callback                      |
171 |                                                             |
172 \------------------------------------------------------------*/
173 /*------------------------------------------------------------\
174 |                                                             |
175 |                        CallbackCloseMap                     |
176 |                                                             |
177 \------------------------------------------------------------*/
178 
CallbackCloseMap(MyWidget,ClientData,CallData)179 void CallbackCloseMap( MyWidget, ClientData, CallData )
180 
181      Widget  MyWidget;
182      caddr_t ClientData;
183      caddr_t CallData;
184 {
185   rdsbegin();
186 
187   GraalExitPanel( &GraalViewMapPanel );
188 
189   rdsend();
190 }
191 
192 /*------------------------------------------------------------\
193 |                                                             |
194 |                        CallbackMapCompute                   |
195 |                                                             |
196 \------------------------------------------------------------*/
197 
CallbackMapCompute(MyWidget,ClientData,CallData)198 void CallbackMapCompute( MyWidget, ClientData, CallData )
199 
200      Widget  MyWidget;
201      caddr_t ClientData;
202      caddr_t CallData;
203 {
204   rdsbegin();
205 
206   GraalComputeAndDisplayMap();
207 
208   rdsend();
209 }
210 
211 /*------------------------------------------------------------\
212 |                                                             |
213 |                       CallbackMapEvent                      |
214 |                                                             |
215 \------------------------------------------------------------*/
216 
CallbackMapEvent(MyWidget,Event,Args,Argc)217 void CallbackMapEvent ( MyWidget, Event, Args, Argc )
218 
219      Widget        MyWidget;
220      XButtonEvent *Event;
221      String       *Args;
222      int          *Argc;
223 {
224   char      MouseEvent;
225   long      X;
226   long      Y;
227 
228   rdsbegin();
229 
230   MouseEvent   = Args[ 0 ][ 0 ] - '0';
231 
232   X = Event->x;
233   Y = GraalMapDy - Event->y;
234 
235   X = X + GraalPixelMapX;
236   Y = Y + GraalPixelMapY;
237 
238   if ( X < 0 )
239   {
240     X = ((float)(X) / GraalLambdaMapStep) - 0.5 ;
241   }
242   else
243   {
244     X = ((float)(X) / GraalLambdaMapStep) + 0.5 ;
245   }
246 
247   if ( Y < 0 )
248   {
249     Y = ((float)(Y) / GraalLambdaMapStep) - 0.5 ;
250   }
251   else
252   {
253     Y = ((float)(Y) / GraalLambdaMapStep) + 0.5 ;
254   }
255 
256   switch ( MouseEvent )
257   {
258     case GRAAL_B1UP   :
259     case GRAAL_B2UP   :
260     case GRAAL_B3UP   :
261 
262      GraalZoomCenter( X, Y );
263 
264      break;
265   }
266 
267   rdsend();
268 }
269 
270 /*------------------------------------------------------------\
271 |                                                             |
272 |                     CallbackMapResize                       |
273 |                                                             |
274 \------------------------------------------------------------*/
275 
CallbackMapResize(MyWidget,ClientData,CallData)276 void CallbackMapResize( MyWidget, ClientData, CallData )
277 
278      Widget                       MyWidget;
279      XtPointer                    ClientData;
280      XmDrawingAreaCallbackStruct *CallData;
281 {
282   if ( ! GraalFirstExpose )
283   {
284     rdsbegin();
285 
286     GraalSetMouseCursor( GraalGraphicWindow, GRAAL_WATCH_CURSOR  );
287     GraalResizeMapWindow();
288     GraalSetMouseCursor( GraalGraphicWindow, GRAAL_NORMAL_CURSOR );
289 
290     rdsend();
291   }
292 }
293 
294 /*------------------------------------------------------------\
295 |                                                             |
296 |                     CallbackMapExpose                       |
297 |                                                             |
298 \------------------------------------------------------------*/
299 
CallbackMapExpose(MyWidget,ClientData,CallData)300 void CallbackMapExpose( MyWidget, ClientData, CallData )
301 
302      Widget                       MyWidget;
303      XtPointer                    ClientData;
304      XmDrawingAreaCallbackStruct *CallData;
305 {
306   rdsbegin();
307 
308   if ( GraalFirstExpose )
309   {
310     GraalFirstExpose = GRAAL_FALSE;
311 
312     GraalInitializeMapWindow();
313   }
314 
315   GraalRefreshMapWindow();
316 
317   rdsend();
318 }
319 
320 /*------------------------------------------------------------\
321 |                                                             |
322 |                     Initialize Functions                    |
323 |                                                             |
324 \------------------------------------------------------------*/
325 /*------------------------------------------------------------\
326 |                                                             |
327 |                     GraalsnitializeMapWindow                |
328 |                                                             |
329 \------------------------------------------------------------*/
330 
GraalInitializeMapWindow()331 void GraalInitializeMapWindow()
332 
333 {
334   rdsbegin();
335 
336   XtVaGetValues( GraalMapWindow,
337                  XmNwidth , &GraalMapDx,
338                  XmNheight, &GraalMapDy,
339                  NULL
340                );
341 
342   GraalInitializeLambdaMap();
343 
344   rdsend();
345 }
346 
347 /*------------------------------------------------------------\
348 |                                                             |
349 |                     Graphic Window Functions                |
350 |                                                             |
351 \------------------------------------------------------------*/
352 /*------------------------------------------------------------\
353 |                                                             |
354 |                       GraalRefreshMapWindow                 |
355 |                                                             |
356 \------------------------------------------------------------*/
357 
GraalRefreshMapWindow()358 void GraalRefreshMapWindow()
359 {
360   rdsbegin();
361 
362   GraalClearMapWindow();
363   GraalDisplayLambdaMap();
364 
365   rdsend();
366 }
367 
368 /*------------------------------------------------------------\
369 |                                                             |
370 |                       GraalClearMapWindow                   |
371 |                                                             |
372 \------------------------------------------------------------*/
373 
GraalClearMapWindow()374 void GraalClearMapWindow()
375 
376 {
377   XFillRectangle( XtDisplay( GraalMapWindow ),
378                   XtWindow( GraalMapWindow ),
379                   GraalBackgroundGC,
380                   0, 0, GraalMapDx, GraalMapDy );
381 }
382 
383 /*------------------------------------------------------------\
384 |                                                             |
385 |                       GraalResizeMapWindow                  |
386 |                                                             |
387 \------------------------------------------------------------*/
388 
GraalResizeMapWindow()389 void GraalResizeMapWindow()
390 
391 {
392   rdsbegin();
393 
394   XtVaGetValues( GraalMapWindow,
395                  XmNwidth,  &GraalMapDx,
396                  XmNheight, &GraalMapDy,
397                  NULL
398                );
399 
400   GraalComputeAndDisplayMap();
401 
402   rdsend();
403 }
404 
405 /*------------------------------------------------------------\
406 |                                                             |
407 |                   GraalInitializeMapEvent                   |
408 |                                                             |
409 \------------------------------------------------------------*/
410 
GraalInitializeMapEvent()411 void GraalInitializeMapEvent()
412 
413 {
414   XtActionsRec NewActions;
415 
416   rdsbegin();
417 
418   XtVaSetValues( GraalMapWindow,
419                  XmNtranslations,
420                  XtParseTranslationTable( GraalMapEventTranslation ),
421                  NULL
422                );
423 
424   NewActions.string = "CallbackMapEvent";
425   NewActions.proc   =  CallbackMapEvent;
426 
427   XtAppAddActions( GraalApplication, &NewActions, 1 );
428 
429   XtAddCallback( GraalMapWindow,
430                  XmNresizeCallback,
431                  CallbackMapResize, NULL );
432 
433   XtAddCallback( GraalMapWindow,
434                  XmNexposeCallback,
435                  CallbackMapExpose, NULL );
436 
437   rdsend();
438 }
439 
440 /*------------------------------------------------------------\
441 |                                                             |
442 |                     Lambda Map Functions                    |
443 |                                                             |
444 \------------------------------------------------------------*/
445 /*------------------------------------------------------------\
446 |                                                             |
447 |                GraalInitializeLambdaMap                     |
448 |                                                             |
449 \------------------------------------------------------------*/
450 
GraalInitializeLambdaMap()451 void GraalInitializeLambdaMap()
452 
453 {
454   rdsbegin();
455 
456   if ( ! GraalComputeBound() )
457   {
458     GraalBoundMapX  = GRAAL_DEFAULT_MAP_X;
459     GraalBoundMapY  = GRAAL_DEFAULT_MAP_Y;
460     GraalBoundMapDx = GRAAL_DEFAULT_MAP_DX;
461     GraalBoundMapDy = GRAAL_DEFAULT_MAP_DY;
462   }
463   else
464   {
465     GraalBoundMapX  = GraalBoundXmin / GRAAL_RDS_LAMBDA;
466     GraalBoundMapY  = GraalBoundYmin / GRAAL_RDS_LAMBDA;
467     GraalBoundMapDx = GraalBoundXmax / GRAAL_RDS_LAMBDA;
468     GraalBoundMapDy = GraalBoundYmax / GRAAL_RDS_LAMBDA;
469     GraalBoundMapDx = GraalBoundMapDx - GraalBoundMapX;
470     GraalBoundMapDy = GraalBoundMapDy - GraalBoundMapY;
471   }
472 
473   GraalLambdaMapX  = GraalBoundMapX  - 2;
474   GraalLambdaMapY  = GraalBoundMapY  - 2;
475   GraalLambdaMapDx = GraalBoundMapDx + 4;
476   GraalLambdaMapDy = GraalBoundMapDy + 4;
477 
478   GraalComputeLambdaMap();
479 
480   rdsend();
481 }
482 
483 /*------------------------------------------------------------\
484 |                                                             |
485 |                 GraalComputeLambdaMap                       |
486 |                                                             |
487 \------------------------------------------------------------*/
488 
GraalComputeLambdaMap()489 void GraalComputeLambdaMap()
490 
491 {
492   long  Delta;
493   float StepX;
494   float StepY;
495 
496   rdsbegin();
497 
498   StepX = (float)(GraalMapDx) / (float)(GraalLambdaMapDx);
499   StepY = (float)(GraalMapDy) / (float)(GraalLambdaMapDy);
500 
501   if ( StepX < StepY )
502   {
503     GraalLambdaMapStep = StepX;
504     Delta              = GraalLambdaMapDy;
505     GraalLambdaMapDy   = 1 + ( GraalMapDy / StepX );
506     Delta              = ( GraalLambdaMapDy - Delta ) >> 1;
507     GraalLambdaMapY    = GraalLambdaMapY - Delta;
508   }
509   else
510   {
511     GraalLambdaMapStep = StepY;
512     Delta              = GraalLambdaMapDx;
513     GraalLambdaMapDx   = 1 + ( GraalMapDx / StepY );
514     Delta              = ( GraalLambdaMapDx - Delta ) >> 1;
515     GraalLambdaMapX    = GraalLambdaMapX - Delta;
516   }
517 
518   GraalPixelMapX = (float)(GraalLambdaMapX) * GraalLambdaMapStep;
519   GraalPixelMapY = (float)(GraalLambdaMapY) * GraalLambdaMapStep;
520 
521   rdsend();
522 }
523 
524 /*------------------------------------------------------------\
525 |                                                             |
526 |                      GraalDisplayLambdaMap                  |
527 |                                                             |
528 \------------------------------------------------------------*/
529 
GraalDisplayLambdaMap()530 void GraalDisplayLambdaMap()
531 {
532   long X1;
533   long Y1;
534   long X2;
535   long Y2;
536 
537   rdsbegin();
538 
539   X1 = (float)( GraalBoundMapX                   ) * GraalLambdaMapStep;
540   Y1 = (float)( GraalBoundMapY                   ) * GraalLambdaMapStep;
541   X2 = (float)( GraalBoundMapX + GraalBoundMapDx ) * GraalLambdaMapStep;
542   Y2 = (float)( GraalBoundMapY + GraalBoundMapDy ) * GraalLambdaMapStep;
543 
544   X1 = X1 - GraalPixelMapX;
545   X2 = X2 - GraalPixelMapX;
546   Y1 = Y1 - GraalPixelMapY;
547   Y2 = Y2 - GraalPixelMapY;
548 
549   XDrawRectangle( XtDisplay( GraalMapWindow ),
550                   XtWindow( GraalMapWindow ),
551                   GraalLargeTextGC,
552                   X1, GraalMapDy - Y2,
553                   X2 - X1, Y2 - Y1 );
554 
555   X1 = GraalLambdaGridX + ( GraalLambdaGridDx >> 1 );
556   Y1 = GraalLambdaGridY + ( GraalLambdaGridDy >> 1 );
557   X1 = (float)( X1 ) * GraalLambdaMapStep;
558   Y1 = (float)( Y1 ) * GraalLambdaMapStep;
559 
560   X1 = X1 - GraalPixelMapX;
561   Y1 = Y1 - GraalPixelMapY;
562   Y1 = GraalMapDy - Y1;
563 
564   if ( ( X1 > 0          ) &&
565        ( Y1 > 0          ) &&
566        ( X1 < GraalMapDx ) &&
567        ( Y1 < GraalMapDy ) )
568   {
569     XDrawLine( XtDisplay( GraalMapWindow ),
570                XtWindow( GraalMapWindow ),
571                GraalLargeTextGC,
572                X1 - 2, Y1,
573                X1 + 2, Y1  );
574 
575     XDrawLine( XtDisplay( GraalMapWindow ),
576                XtWindow( GraalMapWindow ),
577                GraalLargeTextGC,
578                X1, Y1 - 2,
579                X1, Y1 + 2  );
580   }
581 
582   rdsend();
583 }
584 
585 /*------------------------------------------------------------\
586 |                                                             |
587 |                      GraalBuildPanelMap                     |
588 |                                                             |
589 \------------------------------------------------------------*/
590 
GraalBuildPanelMap()591 void GraalBuildPanelMap()
592 {
593   Arg Args[3];
594 
595   rdsbegin();
596 
597   XtSetArg( Args[0], XmNshadowType    , XmSHADOW_ETCHED_IN      );
598   XtSetArg( Args[1], XmNdeleteResponse, XmDO_NOTHING            );
599   XtSetArg( Args[2], XmNtitle         , GraalViewMapPanel.TITLE );
600 
601   GraalViewMapPanel.PANEL =
602 
603     XmCreateFormDialog( GraalMainWindow, "GraalViewMapPanel", Args, 3);
604 
605   XtAddCallback( GraalViewMapPanel.PANEL, XmNdestroyCallback,
606                  GraalDestroyDialogCallback, NULL  );
607 
608   GraalViewMapPanel.PANEL_FORM =
609 
610     XtVaCreateManagedWidget( "GraalViewMapPanelForm",
611                              xmFormWidgetClass,
612                              GraalViewMapPanel.PANEL,
613                              XmNtopAttachment    , XmATTACH_FORM,
614                              XmNbottomAttachment , XmATTACH_FORM,
615                              XmNleftAttachment   , XmATTACH_FORM,
616                              XmNrightAttachment  , XmATTACH_FORM,
617                              XmNfractionBase     , 100,
618                              NULL
619                            );
620 
621   GraalViewMapPanel.FRAME =
622 
623     XtVaCreateManagedWidget( "GraalViewMapFrame",
624                              xmFrameWidgetClass,
625                              GraalViewMapPanel.PANEL_FORM,
626                              XmNtopAttachment    , XmATTACH_FORM,
627                              XmNbottomAttachment , XmATTACH_FORM,
628                              XmNleftAttachment   , XmATTACH_FORM,
629                              XmNrightAttachment  , XmATTACH_FORM,
630                              NULL
631                            );
632 
633   GraalViewMapPanel.FORM =
634 
635     XtVaCreateManagedWidget( "GraalViewMapForm",
636                              xmFormWidgetClass,
637                              GraalViewMapPanel.FRAME,
638                              XmNtopAttachment    , XmATTACH_FORM,
639                              XmNbottomAttachment , XmATTACH_FORM,
640                              XmNleftAttachment   , XmATTACH_FORM,
641                              XmNrightAttachment  , XmATTACH_FORM,
642                              XmNfractionBase     , 100,
643                              NULL
644                            );
645 
646   GraalMapButtonCompute =
647 
648     XtVaCreateManagedWidget( "Compute",
649                              xmPushButtonWidgetClass,
650                              GraalViewMapPanel.FORM,
651                              XmNleftAttachment   , XmATTACH_POSITION,
652                              XmNleftPosition     , 1,
653                              XmNrightAttachment  , XmATTACH_POSITION,
654                              XmNrightPosition    , 44,
655                              XmNtopAttachment    , XmATTACH_POSITION,
656                              XmNtopPosition      , 89,
657                              XmNbottomAttachment , XmATTACH_POSITION,
658                              XmNbottomPosition   , 99,
659                              NULL
660                            );
661   GraalMapButtonClose =
662 
663     XtVaCreateManagedWidget( "Close",
664                              xmPushButtonWidgetClass,
665                              GraalViewMapPanel.FORM,
666                              XmNleftAttachment   , XmATTACH_POSITION,
667                              XmNleftPosition     , 45,
668                              XmNrightAttachment  , XmATTACH_POSITION,
669                              XmNrightPosition    , 99,
670                              XmNtopAttachment    , XmATTACH_POSITION,
671                              XmNtopPosition      , 89,
672                              XmNbottomAttachment , XmATTACH_POSITION,
673                              XmNbottomPosition   , 99,
674                              NULL
675                            );
676 
677   GraalMapWindow =
678 
679     XtVaCreateManagedWidget( "GraalMapWindow",
680                              xmDrawingAreaWidgetClass,
681                              GraalViewMapPanel.FORM,
682                              XmNleftAttachment   , XmATTACH_POSITION,
683                              XmNleftPosition     , 1,
684                              XmNrightAttachment  , XmATTACH_POSITION,
685                              XmNrightPosition    , 99,
686                              XmNtopAttachment    , XmATTACH_POSITION,
687                              XmNtopPosition      , 1,
688                              XmNbottomAttachment , XmATTACH_POSITION,
689                              XmNbottomPosition   , 88,
690                              XmNbackground       , 1,
691                              XmNforeground       , 0,
692                              NULL
693                            );
694 
695   XtAddCallback( GraalMapButtonCompute,
696                  XmNactivateCallback,
697                  CallbackMapCompute, NULL );
698 
699   XtAddCallback( GraalMapButtonClose,
700                  XmNactivateCallback,
701                  CallbackCloseMap, NULL );
702 
703   XtVaSetValues( GraalViewMapPanel.PANEL,
704                  XmNheight, GraalViewMapPanel.HEIGHT,
705                  XmNwidth , GraalViewMapPanel.WIDTH,
706                  XmNx     , GraalViewMapPanel.X,
707                  XmNy     , GraalViewMapPanel.Y,
708                  NULL );
709 
710   rdsend();
711 }
712 
713 /*------------------------------------------------------------\
714 |                                                             |
715 |                     GraalEnterMapPanel                      |
716 |                                                             |
717 \------------------------------------------------------------*/
718 
GraalEnterMapPanel()719 void GraalEnterMapPanel()
720 
721 {
722   rdsbegin();
723 
724   GraalFirstEnterMap = GRAAL_FALSE;
725 
726   GraalEnterPanel( &GraalViewMapPanel );
727 
728   rdsend();
729 }
730 
731 /*------------------------------------------------------------\
732 |                                                             |
733 |                     GraalComputeAndDisplayMap               |
734 |                                                             |
735 \------------------------------------------------------------*/
736 
GraalComputeAndDisplayMap()737 void GraalComputeAndDisplayMap()
738 
739 {
740 
741   if ( ! GraalFirstEnterMap )
742   {
743     rdsbegin();
744 
745     GraalInitializeLambdaMap();
746     GraalClearMapWindow();
747     GraalDisplayLambdaMap();
748 
749     rdsend();
750   }
751 }
752