bionic (3) addrdsrecwindow.3.gz

Provided by: alliance_5.1.1-1.1build1_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