🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: net.micro.atari16
1 messages
1 total messages Started by Jwahar R. Bammi Sat, 22 Mar 1986 04:28
ProGEM part 4 of 6
#301
Author: Jwahar R. Bammi
Date: Sat, 22 Mar 1986 04:28
975 lines
29572 bytes
#!/bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #!/bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	apndx1.prf
#	apndx2.prf
#	apndx3.prf
#	apndx4.prf
# This archive created: Fri Mar 21 22:40:57 1986
# By:	Jwahar R. Bammi ()
export PATH; PATH=/bin:$PATH
echo shar: extracting "'apndx1.prf'" '(5146 characters)'
if test -f 'apndx1.prf'
then
	echo shar: over-writing existing file "'apndx1.prf'"
fi
sed 's/^X//' << \SHAR_EOF > 'apndx1.prf'
X.!****************************************************************************
X.! 
X.! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
X.!
X.! ** Professional GEM ** by Tim Oren
X.!
X.! Proff File by ST enthusiasts at
X.! Case Western Reserve University
X.! Cleveland, Ohio
X.! uucp : decvax!cwruecmp!bammi
X.! csnet: bammi@case
X.! arpa : bammi%case@csnet-relay
X.! compuserve: 71515,155
X.!
X.!****************************************************************************
X.!
X.!			Begin Appendix 1
X.!
X.!***************************************************************************
X.!
X.!
X.AP I Sample Code for Part II
X/* >>>>>>>>>>>>>>>>>>>>>>>>> Sample Redraw Code <<<<<<<<<<<<<<<<<<<<<<<<<<< */
X
XVOID
Xdo_redraw(wh, area)		/* wh = window handle from msg[3] */
XWORD	wh;		/* area = pointer to redraw rect- */
XGRECT	*area;		/*   tangle in msg[4] thru msg[7] */
X{
X	GRECT	box;
X	
X	graf_mouse(M_OFF, 0x0L);
X	wind_update(BEG_UPDATE);
X	
X	wind_get(wh, WF_FIRSTXYWH, &box.g_x, &box.g_y, &box.g_w, &box.g_h);
X	while ( box.g_w && box.g_h )
X	{
X		if (rc_intersect(full, &box))	  /* Full is entire screen */
X		    if (rc_intersect(area, &box))
X		    {
X			    if (wh == w1_handle)	  /* Test for window 1 handle */
X			    {		  /* AES redraw example	      */
X				    objc_draw(w1_tree, ROOT, MAX_DEPTH, box.g_x, 
X					      box.g_y, box.g_w, box.g_h);
X			    }
X			    else if (wh == w2_handle) /* Test for window 2 handle */
X			    {		  /* VDI redraw example	      */
X				    set_clip(TRUE, &box);
X				    /*  Put VDI drawing calls here */
X			    }
X			    /* add more windows here */
X		    }
X		wind_get(wh, WF_NEXTXYWH, &box.g_x, &box.g_y, &box.g_w, 
X			 &box.g_h);
X	}
X	
X	wind_update(END_UPDATE);
X	graf_mouse(M_ON, 0x0L);
X}
X.bp
X/* >>>>>>>>>>>>>>>>>>>>>>>> Utilities used in do_redraw <<<<<<<<<<<<<<<<<<<< */
X
XVOID
Xset_clip(clip_flag, area)	/* set clip to specified area	*/
XWORD	clip_flag;
XGRECT	*area;
X{
X	WORD	pxy[4];
X	
X	grect_to_array(area, pxy);
X	vs_clip(vdi_handle, clip_flag, pxy);
X}
X
XVOID
Xgrect_to_array(area, array)	/* convert x,y,w,h to upr lt x,y and	*/
XGRECT	*area;		/*		      lwr rt x,y	*/
XWORD	*array;
X{
X	*array++ = area->g_x;
X	*array++ = area->g_y;
X	*array++ = area->g_x + area->g_w - 1;
X	*array = area->g_y + area->g_h - 1;
X}
X
XWORD
Xrc_intersect(p1, p2)		/* compute intersect of two rectangles	*/
XGRECT	*p1, *p2;
X{
X	WORD	tx, ty, tw, th;
X	
X	tw = min(p2->g_x + p2->g_w, p1->g_x + p1->g_w);
X	th = min(p2->g_y + p2->g_h, p1->g_y + p1->g_h);
X	tx = max(p2->g_x, p1->g_x);
X	ty = max(p2->g_y, p1->g_y);
X	p2->g_x = tx;
X	p2->g_y = ty;
X	p2->g_w = tw - tx;
X	p2->g_h = th - ty;
X	return( (tw > tx) && (th > ty) );
X}
X.bp
X/* >>>>>>>>>>>>>>>>>>>>>>> "Self-redraw" Utility <<<<<<<<<<<<<<<<<<<<<<<<< */
X
XVOID
Xsend_redraw(wh, p)
XWORD	wh;
XGRECT	*p;
X{
X	WORD	msg[8];
X	
X	msg[0] = WM_REDRAW;		/* Defined in GEMBIND.H	    */
X	msg[1] = gl_apid;		/* As returned by appl_init */
X	msg[2] = 0;
X	msg[3] = wh;			/* Handle of window to redraw */
X	msg[4] = p->g_x;
X	msg[5] = p->g_y;
X	msg[6] = p->g_w;
X	msg[7] = p->g_h;
X	appl_write(gl_apid, 16, &msg);	/* Use ADDR(msg) for portability */
X}
X.bp
X/* >>>>>>>>>>>>>>>>>>>> Utilities for Window Requests <<<<<<<<<<<<<<<<<< */
X
XVOID
Xrc_constrain(pc, pt)
XGRECT		*pc;
XGRECT		*pt;
X{
X	if (pt->g_x < pc->g_x)
X	    pt->g_x = pc->g_x;
X	if (pt->g_y < pc->g_y)
X	    pt->g_y = pc->g_y;
X	if ((pt->g_x + pt->g_w) > (pc->g_x + pc->g_w))
X	    pt->g_x = (pc->g_x + pc->g_w) - pt->g_w;
X	if ((pt->g_y + pt->g_h) > (pc->g_y + pc->g_h))
X	    pt->g_y = (pc->g_y + pc->g_h) - pt->g_h;
X}
X
XWORD
Xalign(x,n)		/* Snap position x to an n-bit grid         */ 
XWORD 	x, n;   /* Use n = 16 for horizontal word alignment */
X{
X	x += (n >> 2) - 1;		/* Round and... */
X	x = n * (x / n);		/* remove residue */
X	return (x);
X}	
X.bp
X/* >>>>>>>>>>>>>>>>>>>>>>> Window full utility <<<<<<<<<<<<<<<<<<<<<<< */
X
XVOID
Xhndl_full(wh)		/* depending on current window state, make window    */
XWORD	wh;	/*   full size -or- return to previous shrunken size */
X{		/* graf_ calls are optional special effects.	     */
X	GRECT	prev;
X	GRECT	curr;
X	GRECT	full;
X	
X	wind_get(wh, WF_CXYWH, &curr.g_x, &curr.g_y, &curr.g_w, &curr.g_h);
X	wind_get(wh, WF_PXYWH, &prev.g_x, &prev.g_y, &prev.g_w, &prev.g_h);
X	wind_get(wh, WF_FXYWH, &full.g_x, &full.g_y, &full.g_w, &full.g_h);
X	if ( rc_equal(&curr, &full) )
X	{		/* Is full, change to previous 		*/
X		graf_shrinkbox(prev.g_x, prev.g_y, prev.g_w, prev.g_h,
X			       full.g_x, full.g_y, full.g_w, full.g_h);
X		wind_set(wh, WF_CXYWH, prev.g_x, prev.g_y, prev.g_w, prev.g_h);
X		/* put send_redraw here if you need it */
X	}
X	else
X	{		/* is not full, so set to full		*/
X		graf_growbox(curr.g_x, curr.g_y, curr.g_w, curr.g_h,
X			     full.g_x, full.g_y, full.g_w, full.g_h);
X		wind_set(wh, WF_CXYWH, full.g_x, full.g_y, full.g_w, full.g_h);
X	}
X}
X
XWORD
Xrc_equal(p1, p2)		/* tests for two rectangles equal	*/
XGRECT	*p1, *p2;
X{
X	if ((p1->g_x != p2->g_x) ||
X	    (p1->g_y != p2->g_y) ||
X	    (p1->g_w != p2->g_w) ||
X	    (p1->g_h != p2->g_h))
X	    return(FALSE);
X	return(TRUE);
X}
X.!
X.!****************************************************************************
X.!
X.!			End Appendix 1
X.!
X.!****************************************************************************
SHAR_EOF
if test 5146 -ne "`wc -c 'apndx1.prf'`"
then
	echo shar: error transmitting "'apndx1.prf'" '(should have been 5146 characters)'
fi
echo shar: extracting "'apndx2.prf'" '(2869 characters)'
if test -f 'apndx2.prf'
then
	echo shar: over-writing existing file "'apndx2.prf'"
fi
sed 's/^X//' << \SHAR_EOF > 'apndx2.prf'
X.!****************************************************************************
X.! 
X.! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
X.!
X.! ** Professional GEM ** by Tim Oren
X.!
X.! Proff File by ST enthusiasts at
X.! Case Western Reserve University
X.! Cleveland, Ohio
X.! uucp : decvax!cwruecmp!bammi
X.! csnet: bammi@case
X.! arpa : bammi%case@csnet-relay
X.! compuserve: 71515,155
X.!
X.!****************************************************************************
X.!
X.!			Begin Appendix 2
X.!
X.!***************************************************************************
X.!
X.!
X.AP II Sample Code for Part III
X/*
X>>>>>>>>>>>>>>>>>>>>>>> Basic Dialog Handler <<<<<<<<<<<<<<<<<<<<<<<
X*/
X
XWORD
Xhndl_dial(tree, def, x, y, w, h)
XLONG	tree;
XWORD	def;
XWORD	x, y, w, h;
X{
X	WORD	xdial, ydial, wdial, hdial, exitobj;
X
X	form_center(tree, &xdial, &ydial, &wdial, &hdial);
X	form_dial(0, x, y, w, h, xdial, ydial, wdial, hdial);
X	form_dial(1, x, y, w, h, xdial, ydial, wdial, hdial);
X	objc_draw(tree, ROOT, MAX_DEPTH, xdial, ydial, wdial, hdial);
X	exitobj = form_do(tree, def) & 0x7FFF;
X	form_dial(2, x, y, w, h, xdial, ydial, wdial, hdial);
X	form_dial(3, x, y, w, h, xdial, ydial, wdial, hdial);
X	return (exitobj);
X}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>>> Object rectangle utility <<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X
XVOID
Xobjc_xywh(tree, obj, p)		/* get x,y,w,h for specified object	*/
XLONG	tree;
XWORD	obj;
XGRECT	*p;
X{
X	objc_offset(tree, obj, &p->g_x, &p->g_y);
X	p->g_w = LWGET(OB_WIDTH(obj));
X	p->g_h = LWGET(OB_HEIGHT(obj));
X}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>>> Object flag utilities <<<<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X
XVOID
Xundo_obj(tree, which, bit)	/* clear specified bit in object state	*/
XLONG	tree;
XWORD	which, bit;
X{
X	WORD	state;
X
X	state = LWGET(OB_STATE(which));
X	LWSET(OB_STATE(which), state & ~bit);
X}
X
XVOID
Xdesel_obj(tree, which)		/* turn off selected bit of spcfd object*/
XLONG	tree;
XWORD	which;
X{
X	undo_obj(tree, which, SELECTED);
X}
X
XVOID
Xdo_obj(tree, which, bit)	/* set specified bit in object state	*/
XLONG	tree;
XWORD	which, bit;
X{
X	WORD	state;
X
X	state = LWGET(OB_STATE(which));
X	LWSET(OB_STATE(which), state | bit);
X}
X
XVOID
Xsel_obj(tree, which)		/* turn on selected bit of spcfd object	*/
XLONG	tree;
XWORD	which;
X{
X	do_obj(tree, which, SELECTED);
X}
X
XBOOLEAN
Xstatep(tree, which, bit)
XLONG	tree;
XWORD	which;
XWORD	bit;
X{
X	return ( (LWGET(OB_STATE(which)) & bit) != 0);
X}
X
XBOOLEAN
Xselectp(tree, which)
XLONG	tree;
XWORD	which;
X{
X	return statep(tree, which, SELECTED);
X}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>> Sample radio buttons after dialog <<<<<<<<<<<<<<<<<<<<
X*/
X
X
XWORD
Xencode(tree, ob1st, num)
XLONG	tree;
XWORD	ob1st, num;
X{
X	for (; num--; )
X		if (selectp(ob1st+num))
X			return(num);
X	return (-1);
X}
X.!
X.!****************************************************************************
X.!
X.!			End Appendix 3
X.!
X.!****************************************************************************
SHAR_EOF
if test 2869 -ne "`wc -c 'apndx2.prf'`"
then
	echo shar: error transmitting "'apndx2.prf'" '(should have been 2869 characters)'
fi
echo shar: extracting "'apndx3.prf'" '(11344 characters)'
if test -f 'apndx3.prf'
then
	echo shar: over-writing existing file "'apndx3.prf'"
fi
sed 's/^X//' << \SHAR_EOF > 'apndx3.prf'
X.!****************************************************************************
X.! 
X.! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
X.!
X.! ** Professional GEM ** by Tim Oren
X.!
X.! Proff File by ST enthusiasts at
X.! Case Western Reserve University
X.! Cleveland, Ohio
X.! uucp : decvax!cwruecmp!bammi
X.! csnet: bammi@case
X.! arpa : bammi%case@csnet-relay
X.! compuserve: 71515,155
X.!
X.!****************************************************************************
X.!
X.!			Begin Appendix 3
X.!
X.!***************************************************************************
X.!
X.!
X.AP III Sample Code for Part IV 
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>> Sample C output file from RCS <<<<<<<<<<<<<<<<<<<<
X*/
X					/* (Comments added)	*/
XBYTE *rs_strings[] = {			/* ASCII data		*/
X"Title String",	
X"Exit",
X"Centered Text",
X"",
X"",
X"Butt",
X"Tokyo",
X"",
X"Time: __:__:__",
X"999999",
X"",
X"Time: __:__:__  ",
X"999999",
X"New York"};
X
XWORD IMAG0[] = {				/* Bitmap for G_IMAGE */
X0x7FF, 0xFFFF, 0xFF80, 0xC00, 
X0x0, 0xC0, 0x183F, 0xF03F, 
X0xF060, 0x187F, 0xF860, 0x1860, 
X0x187F, 0xF860, 0x1860, 0x187F, 
X0xF860, 0x1860, 0x187F, 0xF860, 
X0x1860, 0x187F, 0xF860, 0x1860, 
X0x187F, 0xF860, 0x1860, 0x187F, 
X0xF860, 0x1860, 0x187F, 0xF860, 
X0x1860, 0x187F, 0xF860, 0x1860, 
X0x187F, 0xF860, 0x1860, 0x187F, 
X0xF860, 0x1860, 0x183F, 0xF03F, 
X0xF060, 0xC00, 0x0, 0xC0, 
X0x7FF, 0xFFFF, 0xFF80, 0x0, 
X0x0, 0x0, 0x3F30, 0xC787, 
X0x8FE0, 0xC39, 0xCCCC, 0xCC00, 
X0xC36, 0xCFCC, 0xF80, 0xC30, 
X0xCCCD, 0xCC00, 0x3F30, 0xCCC7, 
X0xCFE0, 0x0, 0x0, 0x0};
X
XWORD IMAG1[] = {				/* Mask for first icon */
X0x0, 0x0, 0x0, 0x0, 
X0x7FFE, 0x0, 0x1F, 0xFFFF, 
X0xFC00, 0xFF, 0xFFFF, 0xFF00, 
X0x3FF, 0xFFFF, 0xFFC0, 0xFFF, 
X0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
X0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
X0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
X0xFFFC, 0xFFF, 0xFFFF, 0xFFF0, 
X0x3FF, 0xFFFF, 0xFFC0, 0xFF, 
X0xFFFF, 0xFF00, 0x1F, 0xFFFF, 
X0xF800, 0x0, 0x7FFE, 0x0};
X
XWORD IMAG2[] = {				/* Data for first icon */
X0x0, 0x0, 0x0, 0x0, 
X0x3FFC, 0x0, 0xF, 0xC003, 
X0xF000, 0x78, 0x180, 0x1E00, 
X0x180, 0x180, 0x180, 0x603, 
X0x180, 0xC060, 0x1C00, 0x6, 
X0x38, 0x3000, 0x18C, 0xC, 
X0x60C0, 0x198, 0x306, 0x6000, 
X0x1B0, 0x6, 0x4000, 0x1E0, 
X0x2, 0xC000, 0x1C0, 0x3, 
X0xCFC0, 0x180, 0x3F3, 0xC000, 
X0x0, 0x3, 0x4000, 0x0, 
X0x2, 0x6000, 0x0, 0x6, 
X0x60C0, 0x0, 0x306, 0x3000, 
X0x0, 0xC, 0x1C00, 0x0, 
X0x38, 0x603, 0x180, 0xC060, 
X0x180, 0x180, 0x180, 0x78, 
X0x180, 0x1E00, 0xF, 0xC003, 
X0xF000, 0x0, 0x3FFC, 0x0};
X
XWORD IMAG3[] = {			/* Mask for second icon */
X0x0, 0x0, 0x0, 0x0, 
X0x7FFE, 0x0, 0x1F, 0xFFFF, 
X0xFC00, 0xFF, 0xFFFF, 0xFF00, 
X0x3FF, 0xFFFF, 0xFFC0, 0xFFF, 
X0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
X0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
X0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
X0xFFFC, 0xFFF, 0xFFFF, 0xFFF0, 
X0x3FF, 0xFFFF, 0xFFC0, 0xFF, 
X0xFFFF, 0xFF00, 0x1F, 0xFFFF, 
X0xF800, 0x0, 0x7FFE, 0x0};
X
XWORD IMAG4[] = {			/* Data for second icon */
X0x0, 0x0, 0x0, 0x0, 
X0x3FFC, 0x0, 0xF, 0xC003, 
X0xF000, 0x78, 0x180, 0x1E00, 
X0x180, 0x180, 0x180, 0x603, 
X0x180, 0xC060, 0x1C00, 0x6, 
X0x38, 0x3000, 0x18C, 0xC, 
X0x60C0, 0x198, 0x306, 0x6000, 
X0x1B0, 0x6, 0x4000, 0x1E0, 
X0x2, 0xC000, 0x1C0, 0x3, 
X0xCFC0, 0x180, 0x3F3, 0xC000, 
X0x0, 0x3, 0x4000, 0x0, 
X0x2, 0x6000, 0x0, 0x6, 
X0x60C0, 0x0, 0x306, 0x3000, 
X0x0, 0xC, 0x1C00, 0x0, 
X0x38, 0x603, 0x180, 0xC060, 
X0x180, 0x180, 0x180, 0x78, 
X0x180, 0x1E00, 0xF, 0xC003, 
X0xF000, 0x0, 0x3FFC, 0x0};
X
XLONG rs_frstr[] = {			/* Free string index - unused */
X0};
X
XBITBLK rs_bitblk[] = {			/* First entry is index to image data */
X0L, 6, 24, 0, 0, 0};
X
XLONG rs_frimg[] = {			/* Free image index - unused */
X0};
X
XICONBLK rs_iconblk[] = {		
X1L, 2L, 10L, 4096,0,0, 0,0,48,24, 9,24,30,8,	/* First pointer is mask */
X3L, 4L, 17L, 4864,0,0, 0,0,48,24, 0,24,48,8};	/* Second is data, third */
X						/* is to title string	 */
XTEDINFO rs_tedinfo[] = {
X2L, 3L, 4L, 3, 6, 2, 0x1180, 0x0, -1, 14,1,	/* First pointer is text */
X7L, 8L, 9L, 3, 6, 2, 0x2072, 0x0, -3, 11,1,	/* Second is template	 */
X11L, 12L, 13L, 3, 6, 0, 0x1180, 0x0, -1, 1,15,	/* Third is validation	 */
X14L, 15L, 16L, 3, 6, 1, 0x1173, 0x0, 0, 1,17};
X
XOBJECT rs_object[] = {
X-1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 18,12,	/* Pointers are to: */
X2, -1, -1, G_STRING, NONE, NORMAL, 0x0L, 3,1, 12,1,	/* rs_strings	*/
X3, -1, -1, G_BUTTON, 0x7, NORMAL, 0x1L, 5,9, 8,1,	/* rs_strings	*/
X0, 4, 4, G_BOX, NONE, NORMAL, 0xFF1172L, 3,3, 12,5,
X3, -1, -1, G_IMAGE, LASTOB, NORMAL, 0x0L, 3,1, 6,3,	/* rs_bitblk	*/
X-1, 1, 6, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 23,12,	
X2, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 0,1, 23,1,	/* rs_tedinfo	*/
X6, 3, 5, G_IBOX, NONE, NORMAL, 0x1100L, 6,3, 11,5,
X4, -1, -1, G_BUTTON, 0x11, NORMAL, 0x5L, 0,0, 11,1,	/* rs_strings	*/
X5, -1, -1, G_BUTTON, 0x11, NORMAL, 0x6L, 0,2, 11,1,	/* rs_strings	*/
X2, -1, -1, G_BOXCHAR, 0x11, NORMAL, 0x43FF1400L, 0,4, 11,1,
X0, -1, -1, G_BOXTEXT, 0x27, NORMAL, 0x1L, 5,9, 13,1,	/* rs_tedinfo	*/
X-1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 32,11,
X2, -1, -1, G_ICON, NONE, NORMAL, 0x0L, 4,1, 6,4,	/* rs_iconblk	*/
X3, -1, -1, G_FTEXT, EDITABLE, NORMAL, 0x2L, 12,2, 14,1,	/* rs_tedinfo	*/
X0, 4, 4, G_FBOXTEXT, 0xE, NORMAL, 0x3L, 3,5, 25,4,	/* rs_tedinfo	*/
X3, -1, -1, G_ICON, LASTOB, NORMAL, 0x1L, 1,0, 6,4};	/* rs_iconblk	*/
X
XLONG rs_trindex[] = {			/* Points to start of trees in */
X0L,					/* rs_object		       */
X5L,
X12L};
X
Xstruct foobar {				/* Temporary structure used by    */
X	WORD	dummy;			/* RSCREATE when setting up image */
X	WORD	*image;			/* pointers.			  */
X	} rs_imdope[] = {
X0, &IMAG0[0],
X0, &IMAG1[0],
X0, &IMAG2[0],
X0, &IMAG3[0],
X0, &IMAG4[0]};
X					/* Counts of structures defined */
X#define NUM_STRINGS 18
X#define NUM_FRSTR 0
X#define NUM_IMAGES 5
X#define NUM_BB 1
X#define NUM_FRIMG 0
X#define NUM_IB 2
X#define NUM_TI 4
X#define NUM_OBS 17
X#define NUM_TREE 3
X
XBYTE pname[] = "DEMO.RSC";
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Title change utility <<<<<<<<<<<<<<<<<<<<<
X*/
X	VOID
Xset_text(tree, obj, str)
X	LONG	tree, str;
X	WORD	obj;
X	{
X	LONG	obspec;
X
X	obspec = LLGET(OB_SPEC(obj));		/* Get TEDINFO address  */
X	LLSET(TE_PTEXT(obspec), str);		/* Set new text pointer */
X	LWSET(TE_TXTLEN(obspec), LSTRLEN(str)); /* Set new length	*/
X	}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>> Text edit code segment <<<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X	LONG	tree, obspec;
X	BYTE	text[41];
X
X	rsrc_gaddr(R_TREE, DIALOG, &tree);	/* Get tree address  */
X	obspec = LLGET(OB_SPEC(EDITOBJ));	/* Get TEDINFO address  */
X	LLSET(TE_PTEXT(obspec), ADDR(str));	/* Set new text pointer */
X	LWSET(TE_TXTLEN(obspec), 41); 		/* Set max length	*/
X	text[0] = '\0';				/* Make empty string */
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>> Sample 68K only source code <<<<<<<<<<<<<<<<<<<<<<
X*/
X	VOID
Xset_text(tree, obj, str)
X	OBJECT	*tree;
X	WORD	obj;
X	BYTE	*str;
X	{
X	TEDINFO	*obspec;
X
X	obspec = (TEDINFO *) (tree + obj)->ob_spec;
X						/* Get TEDINFO address  */
X	obspec->te_ptext = str;			/* Set new text pointer */
X	obspec->te_txtlen = strlen(str);	/* Set new length	*/
X	}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>>>> Symbol definitions <<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X						/* Window parts */
X#define NAME 0x0001
X#define CLOSER 0x0002
X#define FULLER 0x0004
X#define MOVER 0x0008
X#define INFO 0x0010
X#define SIZER 0x0020
X#define UPARROW 0x0040
X#define DNARROW 0x0080
X#define VSLIDE 0x0100
X#define LFARROW 0x0200
X#define RTARROW 0x0400
X#define HSLIDE 0x0800
X
X#define WF_KIND 1				/* wind_get/set parameters */
X#define WF_NAME 2
X#define WF_INFO 3
X#define WF_WXYWH 4
X#define WF_CXYWH 5
X#define WF_PXYWH 6
X#define WF_FXYWH 7
X#define WF_HSLIDE 8
X#define WF_VSLIDE 9
X#define WF_TOP 10
X#define WF_FIRSTXYWH 11
X#define WF_NEXTXYWH 12
X#define WF_NEWDESK 14
X#define WF_HSLSIZ 15
X#define WF_VSLSIZ 16
X						/* window messages	*/
X#define WM_REDRAW 20
X#define WM_TOPPED 21
X#define WM_CLOSED 22
X#define WM_FULLED 23
X#define WM_ARROWED 24
X#define WM_HSLID 25
X#define WM_VSLID 26
X#define WM_SIZED 27
X#define WM_MOVED 28
X#define WM_NEWTOP 29
X						/* arrow messages	*/
X#define WA_UPPAGE 0
X#define WA_DNPAGE 1
X#define WA_UPLINE 2
X#define WA_DNLINE 3
X#define WA_LFPAGE 4
X#define WA_RTPAGE 5
X#define WA_LFLINE 6
X#define WA_RTLINE 7
X
X#define R_TREE 0				/* Redraw definitions 	*/
X#define ROOT 0
X#define MAX_DEPTH 8
X						/* update flags		*/
X#define	END_UPDATE 0
X#define	BEG_UPDATE 1
X#define	END_MCTRL  2
X#define	BEG_MCTRL  3
X						/* Mouse state changes   */
X#define M_OFF 256
X#define M_ON 257
X						/* Object flags		 */
X#define NONE       0x0
X#define SELECTABLE 0x1
X#define DEFAULT    0x2
X#define EXIT       0x4
X#define EDITABLE   0x8
X#define RBUTTON   0x10
X						/* Object states	*/
X#define SELECTED  0x1
X#define CROSSED   0x2
X#define CHECKED   0x4
X#define DISABLED  0x8
X#define OUTLINED 0x10
X#define SHADOWED 0x20
X
X#define G_BOX     20
X#define G_TEXT    21
X#define G_BOXTEXT 22
X#define G_IMAGE   23
X#define G_IBOX    25
X#define G_BUTTON  26
X#define G_BOXCHAR 27
X#define G_STRING  28
X#define G_FTEXT   29
X#define G_FBOXTEXT 30
X#define G_ICON    31
X#define G_TITLE   32
X						/* Data structures	*/
Xtypedef struct grect
X	{
X	int	g_x;
X	int	g_y;
X	int	g_w;
X	int	g_h;
X	} GRECT;
X
Xtypedef struct object
X	{
X	int		ob_next;	/* -> object's next sibling	*/
X	int		ob_head;	/* -> head of object's children */
X	int		ob_tail;	/* -> tail of object's children */
X	unsigned int	ob_type;	/* type of object- BOX, CHAR,...*/
X	unsigned int	ob_flags;	/* flags			*/
X	unsigned int	ob_state;	/* state- SELECTED, OPEN, ...	*/
X	long		ob_spec;	/* "out"- -> anything else	*/
X	int		ob_x;		/* upper left corner of object	*/
X	int		ob_y;		/* upper left corner of object	*/
X	int		ob_width;	/* width of obj			*/
X	int		ob_height;	/* height of obj		*/
X	} OBJECT;
X
Xtypedef struct text_edinfo
X	{
X	long		te_ptext;	/* ptr to text (must be 1st)	*/
X	long		te_ptmplt;	/* ptr to template		*/
X	long		te_pvalid;	/* ptr to validation chrs.	*/
X	int		te_font;	/* font				*/
X	int		te_junk1;	/* junk word			*/
X	int		te_just;	/* justification- left, right...*/
X	int		te_color;	/* color information word	*/
X	int		te_junk2;	/* junk word			*/
X	int		te_thickness;	/* border thickness		*/
X	int		te_txtlen;	/* length of text string	*/
X	int		te_tmplen;	/* length of template string	*/
X	} TEDINFO;
X
X					/* "Portable" data definitions */
X#define OB_NEXT(x) (tree + (x) * sizeof(OBJECT) + 0)
X#define OB_HEAD(x) (tree + (x) * sizeof(OBJECT) + 2)
X#define OB_TAIL(x) (tree + (x) * sizeof(OBJECT) + 4)
X#define OB_TYPE(x) (tree + (x) * sizeof(OBJECT) + 6)
X#define OB_FLAGS(x) (tree + (x) * sizeof(OBJECT) + 8)
X#define OB_STATE(x) (tree + (x) * sizeof(OBJECT) + 10)
X#define OB_SPEC(x) (tree + (x) * sizeof(OBJECT) + 12)
X#define OB_X(x) (tree + (x) * sizeof(OBJECT) + 16)
X#define OB_Y(x) (tree + (x) * sizeof(OBJECT) + 18)
X#define OB_WIDTH(x) (tree + (x) * sizeof(OBJECT) + 20)
X#define OB_HEIGHT(x) (tree + (x) * sizeof(OBJECT) + 22)
X
X#define TE_PTEXT(x)  (x)
X#define TE_TXTLEN(x)  (x + 24)
X.!
X.!****************************************************************************
X.!
X.!			End Appendix 3
X.!
X.!****************************************************************************
SHAR_EOF
if test 11344 -ne "`wc -c 'apndx3.prf'`"
then
	echo shar: error transmitting "'apndx3.prf'" '(should have been 11344 characters)'
fi
echo shar: extracting "'apndx4.prf'" '(5968 characters)'
if test -f 'apndx4.prf'
then
	echo shar: over-writing existing file "'apndx4.prf'"
fi
sed 's/^X//' << \SHAR_EOF > 'apndx4.prf'
X.!****************************************************************************
X.! 
X.! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
X.!
X.! ** Professional GEM ** by Tim Oren
X.!
X.! Proff File by ST enthusiasts at
X.! Case Western Reserve University
X.! Cleveland, Ohio
X.! uucp : decvax!cwruecmp!bammi
X.! csnet: bammi@case
X.! arpa : bammi%case@csnet-relay
X.! compuserve: 71515,155
X.!
X.!****************************************************************************
X.!
X.!			Begin Appendix 4
X.!
X.!***************************************************************************
X.!
X.!
X.AP IV Sample Code for Part V 
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>>> Sample object trees <<<<<<<<<<<<<<<<<<<<<<<<
X*/
X
XOBJECT rs_object[] = {
X-1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 18,12,	/* Tree # 1 */
X2, -1, -1, G_STRING, NONE, NORMAL, 0x0L, 3,1, 12,1,	
X3, -1, -1, G_BUTTON, 0x7, NORMAL, 0x1L, 5,9, 8,1,	
X0, 4, 4, G_BOX, NONE, NORMAL, 0xFF1172L, 3,3, 12,5,
X3, -1, -1, G_IMAGE, LASTOB, NORMAL, 0x0L, 3,1, 6,3,	
X-1, 1, 6, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 23,12,  /* Tree # 2 */
X2, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 0,1, 23,1,	
X6, 3, 5, G_IBOX, NONE, NORMAL, 0x1100L, 6,3, 11,5,
X4, -1, -1, G_BUTTON, 0x11, NORMAL, 0x5L, 0,0, 11,1,	
X5, -1, -1, G_BUTTON, 0x11, NORMAL, 0x6L, 0,2, 11,1,	
X2, -1, -1, G_BOXCHAR, 0x11, NORMAL, 0x43FF1400L, 0,4, 11,1,
X0, -1, -1, G_BOXTEXT, 0x27, NORMAL, 0x1L, 5,9, 13,1,	
X-1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 32,11,  /* Tree # 3 */
X2, -1, -1, G_ICON, NONE, NORMAL, 0x0L, 4,1, 6,4,	
X3, -1, -1, G_FTEXT, EDITABLE, NORMAL, 0x2L, 12,2, 14,1,	
X0, 4, 4, G_FBOXTEXT, 0xE, NORMAL, 0x3L, 3,5, 25,4,	
X3, -1, -1, G_ICON, LASTOB, NORMAL, 0x1L, 1,0, 6,4};	
X.bp 
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>> Object tree walk utility <<<<<<<<<<<<<<<<<<<<<<
X*/ 
X        VOID
Xmap_tree(tree, this, last, routine)
X        LONG            tree;
X        WORD            this, last;
X        WORD            (*routine)();
X        {
X        WORD            tmp1;
X 
X        tmp1 = this;            /* Initialize to impossible value: */
X                                /* TAIL won't point to self!       */
X                                /* Look until final node, or off   */
X                                /* the end of tree                 */ 
X        while (this != last && this != NIL)
X                                /* Did we 'pop' into this node     */
X                                /* for the second time?            */
X                if (LWGET(OB_TAIL(this)) != tmp1)
X                        {
X                        tmp1 = this;    /* This is a new node       */
X                        this = NIL;
X                                        /* Apply operation, testing  */
X                                        /* for rejection of sub-tree */
X                        if ((*routine)(tree, tmp1))
X                                this = LWGET(OB_HEAD(tmp1));
X                                        /* Subtree path not taken,   */
X                                        /* so traverse right         */ 
X                        if (this == NIL)
X                                this = LWGET(OB_NEXT(tmp1));
X                        }
X                else                    /* Revisiting parent:        */
X                                        /* No operation, move right  */
X                        {
X                        tmp1 = this;
X                        this = LWGET(OB_NEXT(tmp1));
X                        }
X        }
X.bp
X/*
X>>>>>>>>>>>>>>>>>> Sample routine to use with map_tree() <<<<<<<<<<<<<<<
X*/ 
X	VOID
Xundo_obj(tree, which, bit)	/* clear specified bit in object state	*/
X	LONG	tree;
X	WORD	which, bit;
X	{
X	WORD	state;
X
X	state = LWGET(OB_STATE(which));
X	LWSET(OB_STATE(which), state & ~bit);
X	}
X
X	VOID
Xdesel_obj(tree, which)		/* turn off selected bit of spcfd object*/
X	LONG	tree;
X	WORD	which;
X	{
X	undo_obj(tree, which, SELECTED);
X	return (TRUE);
X	}
X.bp
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>> Sample .ICN Files <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
X>>>>>>>>>> Save everything between >>><<< lines as CLOCK.ICN <<<<<<<<<<<<<<
X*/
X
X/* GEM Icon Definition: */
X#define ICON_W 0x0030
X#define ICON_H 0x0018
X#define DATASIZE 0x0048
XUWORD clock[DATASIZE] =
X{ 0x0000, 0x0000, 0x0000, 0x0000, 
X  0x3FFC, 0x0000, 0x000F, 0xC003, 
X  0xF000, 0x0078, 0x0180, 0x1E00, 
X  0x0180, 0x0180, 0x0180, 0x0603, 
X  0x0180, 0xC060, 0x1C00, 0x0006, 
X  0x0038, 0x3000, 0x018C, 0x000C, 
X  0x60C0, 0x0198, 0x0306, 0x6000, 
X  0x01B0, 0x0006, 0x4000, 0x01E0, 
X  0x0002, 0xC000, 0x01C0, 0x0003, 
X  0xCFC0, 0x0180, 0x03F3, 0xC000, 
X  0x0000, 0x0003, 0x4000, 0x0000, 
X  0x0002, 0x6000, 0x0000, 0x0006, 
X  0x60C0, 0x0000, 0x0306, 0x3000, 
X  0x0000, 0x000C, 0x1C00, 0x0000, 
X  0x0038, 0x0603, 0x0180, 0xC060, 
X  0x0180, 0x0180, 0x0180, 0x0078, 
X  0x0180, 0x1E00, 0x000F, 0xC003, 
X  0xF000, 0x0000, 0x3FFC, 0x0000
X};
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCK.ICN <<<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X.bp
X/*
X>>>>>>>>> Save everything between >>>><<<<< lines as CLOCKM.ICN <<<<<<<<<<
X*/
X
X/* GEM Icon Definition: */
X#define ICON_W 0x0030
X#define ICON_H 0x0018
X#define DATASIZE 0x0048
XUWORD clockm[DATASIZE] =
X{ 0x0000, 0x0000, 0x0000, 0x0000, 
X  0x7FFE, 0x0000, 0x001F, 0xFFFF, 
X  0xFC00, 0x00FF, 0xFFFF, 0xFF00, 
X  0x03FF, 0xFFFF, 0xFFC0, 0x0FFF, 
X  0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
X  0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
X  0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
X  0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
X  0xFFFC, 0x0FFF, 0xFFFF, 0xFFF0, 
X  0x03FF, 0xFFFF, 0xFFC0, 0x00FF, 
X  0xFFFF, 0xFF00, 0x001F, 0xFFFF, 
X  0xF800, 0x0000, 0x7FFE, 0x0000
X};
X/*
X>>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCKM.ICN <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
X*/
X.!
X.!****************************************************************************
X.!
X.!			End Appendix 4
X.!
X.!****************************************************************************
SHAR_EOF
if test 5968 -ne "`wc -c 'apndx4.prf'`"
then
	echo shar: error transmitting "'apndx4.prf'" '(should have been 5968 characters)'
fi
#	End of shell archive
exit 0

-- 
					Jwahar R. Bammi
			       Usenet:  .....!decvax!cwruecmp!bammi
			        CSnet:  bammi@case
				 Arpa:  bammi%case@csnet-relay
			   CompuServe:  71515,155
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads