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 >
C/C++ Source or Header  |  1996-05-17  |  5KB  |  185 lines

  1.  
  2. #define MAXLINE                4096    /*    最大ライン数    */
  3.  
  4. #define FLAT_SHADE        1
  5. #define GOURAUD_SHADE    2
  6.  
  7. #define    SHADE_SHIFT        22        /*  シェーディング情報のシフト数            */
  8. #define    SHADE_POINT        (4*1024*1024)
  9.                                 /*  シェーディング情報の小数点位置            */
  10.  
  11. #ifdef FULLCOLOR
  12.     typedef unsigned long    ColorCode ;
  13. #else
  14.     typedef unsigned short    ColorCode ;
  15. #endif
  16.  
  17. /*    デジタル微分処理用の構造体    */
  18. typedef struct    _DDA {
  19.         short    x ;            /*    現在のx座標        */
  20.         short    totalmod ;    /*    剰余の合計            */
  21.         short    dxdy ;        /*    微係数の整数部分    */
  22.         short    mod ;        /*    剰余                */
  23.         short    dy ;        /*    除数                */
  24.         short    dx ;        /*    xの変化値            */
  25.     }
  26.         DDA ;
  27.  
  28. /*    マッピングデータ    */
  29. typedef struct    _Map {
  30. #ifdef WINDOWS
  31.         int h, v, fullcolor;
  32. #else
  33. #ifdef FULLCOLOR
  34.         int         h:16, v:15, fullcolor:1;
  35. #else
  36.         short        h, v ;
  37. #endif
  38. #endif
  39. #ifdef REFMAP
  40.         short        wh, wv;
  41. #endif
  42.         Pointer(ColorCode*)        *buf ;
  43.         Pointer(Atr*)        atr ;
  44.     }
  45.         Map ;
  46.  
  47. /*    スムースシェーディングのデータ    */
  48. typedef struct    _ShadeTable {
  49.         Color    curcolor ;
  50.         Color    stepcolor ;
  51. #ifdef SPEC
  52.         Color    curspecular ;
  53.         Color    stepspecular ;
  54.  
  55.         Color    depthcolor;
  56.         long    depthrate;
  57.         long    stepdepthrate;
  58. #endif
  59. #ifdef REFMAP
  60.         Color    refcolor;
  61.         long currefdir[3];            /*direction vector, normalize SHADE_SHIFT*/
  62.         long steprefdir[3];
  63. #endif
  64.     }
  65.         ShadeTable ;
  66.  
  67. /*  マッピングデータ  */
  68. typedef    struct    _MapTable {
  69.         long    curuv[2] ;
  70.         long    stepuv[2] ;
  71.         long    stepstepuv[2];
  72.         Map        *map ;
  73.     }
  74.         MapTable ;
  75.  
  76. /* アトリビュートデータ  */
  77. typedef    struct    _AtrTable {
  78.         ShadeTable    shade ;
  79.         MapTable    map ;
  80.     }
  81.         AtrTable ;
  82.  
  83. /*    エッジリスト    */
  84. typedef struct    _EdgeList {
  85.         short        n ;            /*    残っているライン数        */
  86.         DDA            dxdy ;        /*    線の傾き                */
  87.         long        z ;            /*    この線のディプス値        */
  88.         long        dzdy ;        /*    Zの線方向の微係数        */
  89.         int            polyid ;    /*    辺の属するポリゴン        */
  90.         char        flag ;        /*  フラグ                    */
  91.         ColorCode    code ;        /*    カラーコード            */
  92.         char        traflag ;    /*    半透明フラグ            */
  93.         unsigned char    tra[3];    /*    半透明                    */
  94.         char        mapflag ;    /*  マッピングフラグ        */
  95.         Pointer(struct _EdgeList*)        next ;        /*    次へのポインタ            */
  96.         ShadeTable    shade ;        /*    シェーディングデータ    */
  97.         MapTable    map ;        /*  マッピングデータ        */
  98.     }
  99.         EdgeList ;
  100.  
  101. #ifndef GLIB
  102.     extern    int            XPixel, YPixel ;        /*    ピクセル数                */
  103.     extern    Float        PixelRatio ;            /*    ピクセルの縦横比        */
  104.     extern    Float        FrontClip ;                /*    前面クリッピング距離    */
  105.     extern    Pointer(EdgeList*)        EdgeBuf[MAXLINE] ;        /*    エッジリストのバッファ    */
  106.     extern    int            TraBack ;                /*    バックの透明オプション    */
  107.     extern    int            BackLoad ;                /*  背景読み込みオプション  */
  108.     extern    char        BackFile[F_NAME_LEN] ;    /*  背景ファイル名            */
  109.     extern    int            ShadingModel ;            /*    シェーディングモデル    */
  110.     extern    void        (*PictureOutput)(ColorCode*) ;    /*    画像出力関数            */
  111.     extern    void        (*LineOutput)(int,int,int,int) ;        /*    ライン出力関数            */
  112.     #ifdef    XC
  113.         extern    int        BackGroundJob ;            /*    バックグラウンドジョブ    */
  114.     #endif
  115.     #ifdef    REFMAP
  116.         extern int        RefMap;                    /*    環境マッピング            */
  117.         extern char        RefMapFile[6][F_NAME_LEN];
  118.                                                 /*    環境マッピングファイル            */
  119.         extern Map        *RefMapData[6];
  120.     #endif
  121.     #ifdef    BGMAKE
  122.         extern int        BgMake;
  123.         extern char        BgMakeFile[12][F_NAME_LEN];
  124.         extern Map        *BgMakeData[12];
  125.         extern Atr        *BgMakeAtr[12];
  126.     #endif
  127. #endif
  128.  
  129. /*
  130.     proto -e -f glib.c viewconv.c edgelist.c color.c > temp
  131.     proto -e -f display.c map.c back.c >> temp
  132. */
  133.  
  134. /*  glib.c  */
  135. extern    int        checkbuserror( void* );
  136.  
  137. /*  viewconv.c  */
  138. extern    long        ViewConv( Frame* );
  139.  
  140. /*  edgelist.c  */
  141. extern    void    InitEdgeList( void );
  142. extern    void    SetEdgeList( Point*, AtrTable*, int, Pointer(Atr*) );
  143.  
  144. /*  color.c  */
  145. extern    int    GetAtrTable( AtrTable*, Frame*, Poly*, Matrix, Matrix );
  146. extern    const    ColorCode    ColorToCode( Color );
  147. extern    ColorCode    GetColorCode( ShadeTable*, MapTable* );
  148. #ifdef SPEC
  149. extern    ColorCode    GetColorAllCode( ShadeTable*, MapTable* );
  150. extern    ColorCode    GetSpecularColorCode( ShadeTable* );
  151. #endif
  152. extern    void    ColorToShadeTable( ShadeTable*, Color );
  153. extern    void    ColorToShadeDepthTable( ShadeTable*, Color );
  154. extern    void    ColorToShadeSpecularTable( ShadeTable*, Color );
  155. extern    void    IncAtrTable( ShadeTable*, MapTable* );
  156. extern    void    AddAtrTable( ShadeTable*, MapTable*, int );
  157. extern    void    SetAtrStep( ShadeTable*, ShadeTable*, MapTable*, MapTable*, int );
  158. #ifdef EXTENDMAP
  159. extern    void    SetAtrStepMap( long, long, MapTable*, MapTable*, int );
  160. #endif
  161. #ifdef FULLCOLOR
  162. extern    ColorCode X68kcolorToColorCode( unsigned short );
  163. #endif
  164.  
  165. /*  display.c  */
  166. extern    void    Display( Frame*, int );
  167.  
  168. /*  map.c  */
  169. extern    int        MapInit( Pointer(Atr*) );
  170. extern    void    SetMapTable( AtrTable*, Pointer(Point*), int, Pointer(Atr*) );
  171. extern    unsigned short     getshort( FILE* );
  172. extern    unsigned long    getlong( FILE* );
  173.  
  174. /*  back.c  */
  175. extern    void    BackOpen( char* );
  176. extern    void    BackCopy( ColorCode* );
  177. extern    void    BackClose( void );
  178.  
  179. /*    star.c    */
  180. extern void StarInit(int stars, int dir, int step);
  181. extern void    StarStep(void);
  182. extern void Star(int stars, Matrix view, Float dist);
  183. extern void StarCopy(ColorCode *buf);
  184.  
  185.