/****
 *
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 * @(#)sh_PAT.h 5.12 88/11/09 Copyright 1988 Sun Micro
 *
 * PAT.H PATTERN object information
 *
 ****/
#ifndef	_SH_CLASS_PAT
extern float	sh_pat_ofs;

/*
 * PAT_TYPE  PATTERN object type attribute values
 */
#define	PAT_RANGE	0	/* textured line range */
#define	PAT_RANGE_FLOAT	0	/* textured line range */
#define	PAT_RANGE_FRACT	1	/* textured line range */

typedef Unsgn8 PAT_type;

/*
 * PATTERN object attributes
 */
typedef enum
  {
   PAT_TYPE,		/* type of pattern */
   PAT_OFFSET,		/* offset of pattern */
   PAT_DATA,		/* pattern data area */
   PAT_SIZE,		/* pattern size */
  } PAT_attr;

#define	PAT_ATTRS ((int) PAT_DATA)

/*
 * External PATTERN operators
 *
 * Create_Pat(type, data)	create PATTERN object
 * Destroy_Pat(pat)		destroy pattern
 * Get_Pat(pat, attr)		get pattern attribute
 * Set_Pat(pat, attr, val)	set pattern attribute
 * Read_Pat(pat, data, type)	read pattern data
 * Write_Pat(pat, data, type)	write pattern data
 * Print_Pat(pat)		print pattern
 */
#define	PAT_OP_Destroy	0
#define	PAT_OP_Init	1
#define	PAT_OP_Get	2
#define	PAT_OP_Set	3
#define	PAT_OP_Print	4
#define	PAT_OP_Read	5
#define	PAT_OP_Write	6
#define	PAT_OPERS	7

#define	Create_Pat(t, d) ((PATTERN) Create_Obj(CLASS_PAT, t, d))
#define	Temp_Pat(t, d)	 ((PATTERN) Temp_Obj(CLASS_PAT, t, d))
#define	Destroy_Pat(p)	 Destroy_Obj(p)
#define	Read_Pat(p,d,t)  ((PATTERN) GetOper_Obj(p, PAT_OP_Read)(p,d,t))
#define	Write_Pat(p,d,t) ((PATTERN) GetOper_Obj(p, PAT_OP_Write)(p,d,t))
#define	Print_Pat(p) 	 ((void) GetOper_Obj(p, PAT_OP_Print)(p))
#define	Set_Pat(p,a,v)	 ((void) GetOper_Obj(p, PAT_OP_Set)(p,a,v))

/*
 * Pattern "Get" macros
 * Fetching the pattern attributes are implemented with macros
 */
#define Get_Pat(p,a) 		CAT(a,get)((PATTERN) p)
#define PAT_OFFSETget(p)	((p)->PAT_OFFSET)
#define PAT_TYPEget(p)		((p)->PAT_TYPE)
#define PAT_SIZEget(p)		((p)->PAT_SIZE)
#define PAT_DATAget(p)		((p)->PAT_DATA)

struct class_PAT
  {
#include "sh_PAT.ah"
  };

#define	_SH_CLASS_PAT
#endif	/* _SH_CLASS_PAT */
