DOKK / manpages / debian 10 / alliance / addrdsrecwindow.3.en
ADDRDSRECWINDOW(3) RDS PHYSICAL FUNCTIONS ADDRDSRECWINDOW(3)

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

See the file buster/alliance/alc_origin.1.en.gz.

#include "rwinnn.h"

void addrdsrecwindow( Rectangle, RdsWindow )
rdsrec_list ∗Rectangle;
rdswindow ∗RdsWindow;

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

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´).

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.

none

"Rds202: rdsalloc error, can't continue !"

it's impossible to allocate the memory size desired


#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;
}
}
. . .
}

librwi, delrdsrecwindow

See the file buster/alliance/alc_bug_report.1.en.gz.

October 1, 1997 ASIM/LIP6