Provided by: alliance_5.0-20120515-6_amd64 bug

NAME

       addrdsrecwindow - adds a rectangle in the windowing of rds structure.

SYNOPSYS

       #include "rwinnn.h"
        void addrdsrecwindow( Rectangle, RdsWindow )
           rdsrec_list ∗Rectangle;
           rdswindow   ∗RdsWindow;

PARAMETER

       Rectangle           The rectangle to add to the windowing.

       RdsWindow           The head of the windowing which has to contain the rectangle.

DESCRIPTION

       The addrdsrecwindow function inserts a rdsrec_list rectangle structure in the windowing of
       the rds structure. The rectangle is added in one or many windows of the table (it  depends
       on  his  dimensions).  The  field  ´USER´ of the rectangle is used to point to the list of
       windows which contains the rectangle. So, the field ´USER´ has to be  saved  in  an  added
       structure  to the rdsrec_list structure if librfm functions are used because somes use the
       field ´USER´ to link rectangles (see librds about field ´USER´).

       Note   If the rectangle is contained in only one window, then the field ´USER´ points to a
              "rdswin_list" window structure.
              If  the  rectangle  is  contained  in  many  windows,  the field ´USER´ points to a
              "rdsrecwin_list" structure which is a list which contains windows.

       To know if a rectangle belongs to one  or  many  windows,  use  the  macro  IsRdsOneWindow
       defined in librwi.

RETURN VALUE

       none

ERRORS

       "Rds202: rdsalloc error, can't continue !"
              it's impossible to allocate the memory size desired

EXAMPLE

               #include "mutnnn.h"
               #include "rdsnnn.h"
               #include "rwinnn.h"
               #include "rtlnnn.h"
               # define POINTER_LINKREC(R)                               \
                                                                         \
                 (((UserStruct ∗)((char ∗)(R)+sizeof(rdsrec_list)))->LINKREC )
               typedef struct UserStruct
                 {
                   void ∗LINKREC;
                 } UserStruct;
               main()
                 {
                   rdsfig_list ∗Figure;
                   rdsrec_list ∗Rectangle;
                   rdswindow ∗RdsWindow;
                   rdswin_list ∗ScanWin;
                   rdsrecwin_list ∗ScanRecWin;
                    mbkenv();
                    rdsenv();
                    loadrdsparam();
                    Figure = addrdsfig( "core",sizeof ( UserStruct ) );
                    Rectangle =
                      addrdsfigrec(Figure,"Alu1",RDS_ALU1,2,4,5,1);
                    /∗ Using the field ´USER´ ∗/
                    Rectangle->USER = Rectangle;
                   . . . .
                   RdsWindow = allocrdswindow();
                   RdsWindow->XMIN = -200;
                   RdsWindow->YMIN = -200;
                   RdsWindow->XMAX =  200;
                   RdsWindow->YMAX =  200;
                   RdsWindow->DX   =  4;
                   RdsWindow->DY   =  4;
                   RdsWindow->SIDE =  100;
                   RdsWindow->SIZE =  RdsWindow->DX  RdsWindow->DY ;
                   RdsWindow->WINTAB = allocrdswin( RdsWindow->SIZE );
                   /∗ Save the field ´USER´ of the rectangle ∗/
                   POINTER_LINKREC(Rectangle) = Rectangle->USER;
                   /∗ ∗/ addrdsrecwindow( Rectangle, RdsWindow );
                   /∗ windows associated to a rectangle are pointed by the
                      field ´USER´ of the rectangle ∗/
                   /∗ getting windows (pointer ∗ScanWin) of a rectangle ∗/
                   if ( IsRdsOneWindow(Rectangle) )
                    {
                      ScanWin = (rdswin_list ∗) Rectangle->USER;
                    }
                   else
                    {
                      ScanRecWin = Rectangle->USER;
                      while ( ScanRecWin != NULL )
                       {
                         ScanWin = (rdswin_list ∗) (ScanRecWin)->WINDOW;
                         ScanRecWin = ScanRecWin->NEXT;
                       }
                    }
                   . . .
                 }

SEE ALSO

       librwi, delrdsrecwindow