home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
REND.LZH
/
REND
/
GLIB.H
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-17
|
5KB
|
185 lines
#define MAXLINE 4096 /* 最大ライン数 */
#define FLAT_SHADE 1
#define GOURAUD_SHADE 2
#define SHADE_SHIFT 22 /* シェーディング情報のシフト数 */
#define SHADE_POINT (4*1024*1024)
/* シェーディング情報の小数点位置 */
#ifdef FULLCOLOR
typedef unsigned long ColorCode ;
#else
typedef unsigned short ColorCode ;
#endif
/* デジタル微分処理用の構造体 */
typedef struct _DDA {
short x ; /* 現在のx座標 */
short totalmod ; /* 剰余の合計 */
short dxdy ; /* 微係数の整数部分 */
short mod ; /* 剰余 */
short dy ; /* 除数 */
short dx ; /* xの変化値 */
}
DDA ;
/* マッピングデータ */
typedef struct _Map {
#ifdef WINDOWS
int h, v, fullcolor;
#else
#ifdef FULLCOLOR
int h:16, v:15, fullcolor:1;
#else
short h, v ;
#endif
#endif
#ifdef REFMAP
short wh, wv;
#endif
Pointer(ColorCode*) *buf ;
Pointer(Atr*) atr ;
}
Map ;
/* スムースシェーディングのデータ */
typedef struct _ShadeTable {
Color curcolor ;
Color stepcolor ;
#ifdef SPEC
Color curspecular ;
Color stepspecular ;
Color depthcolor;
long depthrate;
long stepdepthrate;
#endif
#ifdef REFMAP
Color refcolor;
long currefdir[3]; /*direction vector, normalize SHADE_SHIFT*/
long steprefdir[3];
#endif
}
ShadeTable ;
/* マッピングデータ */
typedef struct _MapTable {
long curuv[2] ;
long stepuv[2] ;
long stepstepuv[2];
Map *map ;
}
MapTable ;
/* アトリビュートデータ */
typedef struct _AtrTable {
ShadeTable shade ;
MapTable map ;
}
AtrTable ;
/* エッジリスト */
typedef struct _EdgeList {
short n ; /* 残っているライン数 */
DDA dxdy ; /* 線の傾き */
long z ; /* この線のディプス値 */
long dzdy ; /* Zの線方向の微係数 */
int polyid ; /* 辺の属するポリゴン */
char flag ; /* フラグ */
ColorCode code ; /* カラーコード */
char traflag ; /* 半透明フラグ */
unsigned char tra[3]; /* 半透明 */
char mapflag ; /* マッピングフラグ */
Pointer(struct _EdgeList*) next ; /* 次へのポインタ */
ShadeTable shade ; /* シェーディングデータ */
MapTable map ; /* マッピングデータ */
}
EdgeList ;
#ifndef GLIB
extern int XPixel, YPixel ; /* ピクセル数 */
extern Float PixelRatio ; /* ピクセルの縦横比 */
extern Float FrontClip ; /* 前面クリッピング距離 */
extern Pointer(EdgeList*) EdgeBuf[MAXLINE] ; /* エッジリストのバッファ */
extern int TraBack ; /* バックの透明オプション */
extern int BackLoad ; /* 背景読み込みオプション */
extern char BackFile[F_NAME_LEN] ; /* 背景ファイル名 */
extern int ShadingModel ; /* シェーディングモデル */
extern void (*PictureOutput)(ColorCode*) ; /* 画像出力関数 */
extern void (*LineOutput)(int,int,int,int) ; /* ライン出力関数 */
#ifdef XC
extern int BackGroundJob ; /* バックグラウンドジョブ */
#endif
#ifdef REFMAP
extern int RefMap; /* 環境マッピング */
extern char RefMapFile[6][F_NAME_LEN];
/* 環境マッピングファイル */
extern Map *RefMapData[6];
#endif
#ifdef BGMAKE
extern int BgMake;
extern char BgMakeFile[12][F_NAME_LEN];
extern Map *BgMakeData[12];
extern Atr *BgMakeAtr[12];
#endif
#endif
/*
proto -e -f glib.c viewconv.c edgelist.c color.c > temp
proto -e -f display.c map.c back.c >> temp
*/
/* glib.c */
extern int checkbuserror( void* );
/* viewconv.c */
extern long ViewConv( Frame* );
/* edgelist.c */
extern void InitEdgeList( void );
extern void SetEdgeList( Point*, AtrTable*, int, Pointer(Atr*) );
/* color.c */
extern int GetAtrTable( AtrTable*, Frame*, Poly*, Matrix, Matrix );
extern const ColorCode ColorToCode( Color );
extern ColorCode GetColorCode( ShadeTable*, MapTable* );
#ifdef SPEC
extern ColorCode GetColorAllCode( ShadeTable*, MapTable* );
extern ColorCode GetSpecularColorCode( ShadeTable* );
#endif
extern void ColorToShadeTable( ShadeTable*, Color );
extern void ColorToShadeDepthTable( ShadeTable*, Color );
extern void ColorToShadeSpecularTable( ShadeTable*, Color );
extern void IncAtrTable( ShadeTable*, MapTable* );
extern void AddAtrTable( ShadeTable*, MapTable*, int );
extern void SetAtrStep( ShadeTable*, ShadeTable*, MapTable*, MapTable*, int );
#ifdef EXTENDMAP
extern void SetAtrStepMap( long, long, MapTable*, MapTable*, int );
#endif
#ifdef FULLCOLOR
extern ColorCode X68kcolorToColorCode( unsigned short );
#endif
/* display.c */
extern void Display( Frame*, int );
/* map.c */
extern int MapInit( Pointer(Atr*) );
extern void SetMapTable( AtrTable*, Pointer(Point*), int, Pointer(Atr*) );
extern unsigned short getshort( FILE* );
extern unsigned long getlong( FILE* );
/* back.c */
extern void BackOpen( char* );
extern void BackCopy( ColorCode* );
extern void BackClose( void );
/* star.c */
extern void StarInit(int stars, int dir, int step);
extern void StarStep(void);
extern void Star(int stars, Matrix view, Float dist);
extern void StarCopy(ColorCode *buf);