Manual Reference Pages - ADDRDSRECWINDOW (3)
[Include document man1/alc_contents.mac]
addrdsrecwindow - adds a rectangle in the windowing of rds structure.
[Include document man1/alc_origin.1]
void addrdsrecwindow( Rectangle, 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').
To know if a rectangle belongs to one or many windows, use the macro IsRdsOneWindow defined in librwi.
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.
"Rds202: rdsalloc error, cant continue !"
its impossible to allocate the memory size desired
# define POINTER_LINKREC(R) \
(((UserStruct *)((char *)(R)+sizeof(rdsrec_list)))->LINKREC )
typedef struct UserStruct
Figure = addrdsfig( "core",sizeof ( UserStruct ) );
/* 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;
ScanRecWin = Rectangle->USER;
while ( ScanRecWin != NULL )
ScanWin = (rdswin_list *) (ScanRecWin)->WINDOW;
ScanRecWin = ScanRecWin->NEXT;
. . .
[Include document man1/alc_bug_report.1]
|ASIM/LIP6 ||ADDRDSRECWINDOW (3) ||October 1, 1997 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.