Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
ADDRDSRECWINDOW(3)	     RDS PHYSICAL FUNCTIONS	      ADDRDSRECWINDOW(3)

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

SYNOPSIS
     #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 rec-
			 tangle.

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 some 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  con-
	    tains windows.

     To  know if a rectangle belongs to one or many windows, use the macro IsRd-
     sOneWindow 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

ASIM/LIP6			 October 1, 1997	      ADDRDSRECWINDOW(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=addrdsrecwindow&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help