home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / grafix / boards / cybergfx4043.lha / cybershare / devdocs / examples / Real3DLibMain.c < prev   
Encoding:
C/C++ Source or Header  |  1995-03-04  |  7.1 KB  |  263 lines

  1. /* $Revision Header built automatically *************** (do not edit) ************
  2. **
  3. ** © Copyright by Frank Mariak
  4. **
  5. ** File             : MyData:SASC-DATA/RealDev/Real3DLibMain.c
  6. ** Created on       : Dienstag, 07.02.95 13:24:22
  7. ** Created by       : Frank Mariak
  8. ** Current revision : V40.1
  9. **
  10. **
  11. ** Purpose
  12. ** -------
  13. **     Real3D CyBERgraphics display driver
  14. **
  15. ** Revision V40.1
  16. ** --------------
  17. ** created on Samstag, 04.03.95 02:35:06  by  Frank Mariak.   LogMessage :
  18. **   - now supports all v2 library calls
  19. **
  20. ** Revision V1.0
  21. ** --------------
  22. ** created on Dienstag, 07.02.95 13:24:22  by  Frank Mariak.   LogMessage :
  23. **     --- Initial release ---
  24. **
  25. *********************************************************************************/
  26. #define REVISION "40.1"
  27. #define REVDATE  "04.03.95"
  28. #define REVTIME  "02:35:06"
  29. #define AUTHOR   "Frank Mariak"
  30. #define VERNUM   40
  31. #define REVNUM   1
  32.  
  33. #define PROGNAME    "CyBERgraphics Real3D RenderLibrary"
  34.  
  35. //
  36. //  includes
  37. //
  38. #define USE_BUILTIN_MATH
  39. #include <string.h>
  40. #include <exec/types.h>
  41. #include <exec/memory.h>
  42. #include <graphics/modeid.h>
  43. #include <intuition/intuitionbase.h>
  44. #include <intuition/intuition.h>
  45. #include <intuition/screens.h>
  46. #include <clib/exec_protos.h>
  47. #include <pragmas/exec_sysbase_pragmas.h>
  48. #include <clib/intuition_protos.h>
  49. #include <pragmas/intuition_pragmas.h>
  50. #include <cybergraphics/cybergraphics.h>
  51. #include <pragmas/cybergraphics_pragmas.h>
  52. #include <proto/intuition.h>
  53. #include <proto/graphics.h>
  54. #include <proto/asl.h>
  55.  
  56. //
  57. //  global data (read only or write once)
  58. //
  59. struct Library *SysBase;
  60. struct Library *CyberGfxBase;
  61.  
  62. static const char version[] = "\0$VER: " PROGNAME " " REVISION " (" REVDATE ") © 1995 Vision Factory Development";
  63.  
  64. APTR __asm __saveds R3DInitDspDrv(void);
  65. void __asm __saveds R3DFreeDspDrv(register __a0 APTR handle);
  66. void __asm __saveds R3DSetMode(register __a0 APTR handle);
  67. void __asm __saveds R3DGetSize(register __a0 APTR handle,register __a1 int *x,register __d0 int *y);
  68. void __asm __saveds R3DWriteLine(register __a0 APTR handle,register __a1 int *buffer,register __a2 int len,register __d0 int x,register __d1 int y);
  69. void __asm __saveds R3DReadLine(register __a0 APTR handle,register __a1 int *buffer,register __a2 int len,register __d0 int x,register __d1 int y);
  70. void __asm __saveds R3DClsScr(register __a0 APTR handle,register __a1 ULONG color);
  71. void __asm __saveds R3DCustomSave(register __a0 APTR handle,register __a1 char *name,register __a2 int x,register __d0 int y,register __d1 int w,register __d2 int h);
  72. int __asm __saveds R3DInitRen(register __a0  struct R3DHandle *handle);
  73. void __asm __saveds R3DEndRen(register __a0  struct R3DHandle *handle);
  74. int __asm __saveds R3DEndRow(register __a0  struct R3DHandle *handle, register __a1 int y);
  75. void __asm __saveds R3DGetAspect(register __a0  struct R3DHandle *handle,register __a1 int *w ,register __d0 int *h);
  76. int __asm __saveds R3DExtF(register __a0  struct R3DHandle *handle);
  77.  
  78.  
  79.  
  80.  
  81.  
  82. ULONG    DefDispID    = -1;
  83.  
  84. struct R3DHandle    {
  85.              struct Screen *RenderScr;
  86.              ULONG        Flags;
  87.             };
  88.  
  89.  
  90. APTR __asm __saveds R3DInitDspDrv()
  91. {
  92.  struct R3DHandle *R3DH;
  93.  
  94.  if(R3DH=AllocVec(sizeof(struct R3DHandle),MEMF_CLEAR|MEMF_PUBLIC))
  95.  {
  96.   if(DefDispID!=INVALID_ID)
  97.   {
  98.    ULONG Depth=GetCyberIDAttr(CYBRIDATTR_DEPTH,DefDispID);
  99.    if(R3DH->RenderScr=OpenScreenTags(NULL,        SA_Width,STDSCREENWIDTH,
  100.                             SA_Height,STDSCREENHEIGHT,
  101.                             SA_DisplayID,DefDispID,
  102.                             SA_Title,(UBYTE *)"CyBERgraphics Real3D Render Display",
  103.                             SA_Depth,Depth,
  104.                             TAG_DONE))
  105.    {
  106.     return((APTR)R3DH);
  107.    }
  108.    else
  109.    {
  110.     FreeVec(R3DH);
  111.     return(0L);
  112.    }
  113.   }
  114.   else
  115.   {
  116.    FreeVec(R3DH);
  117.    return(0L);
  118.   }
  119.  }
  120. }
  121.  
  122.  
  123. void __asm __saveds R3DFreeDspDrv(register __a0 struct R3DHandle *handle)
  124. {
  125.  if(handle->RenderScr) CloseScreen(handle->RenderScr);
  126.  FreeVec(handle);
  127. }
  128.  
  129.  
  130. void __asm __saveds R3DSetMode(register __a0 struct R3DHandle *handle)
  131. {
  132.  struct ScreenModeRequester    *AslReq;
  133.  if(AslReq=(struct ScreenModeRequester *)AllocAslRequestTags(ASL_ScreenModeRequest,TAG_DONE))
  134.  {
  135.   ULONG retval;
  136.   ScreenToFront(handle->RenderScr);
  137.   if(retval=AslRequestTags(AslReq,    ASLSM_Screen,handle->RenderScr,
  138.                     ASLSM_TitleText,(UBYTE *)"Please select Rendermode",
  139.                     ASLSM_PositiveText,(UBYTE *)"Use",
  140.                     ASLSM_NegativeText,(UBYTE *)"Cancel",
  141.                     ASLSM_InitialDisplayID,DefDispID,
  142.                     ASLSM_PropertyFlags,0,
  143.                     ASLSM_PropertyMask,0,
  144.                     ASLSM_MinDepth,15,
  145.                     ASLSM_MaxDepth,32,
  146.                     TAG_DONE))
  147.   {
  148.    if(AslReq->sm_DisplayID != INVALID_ID)
  149.    {
  150.     ULONG Depth=GetCyberIDAttr(CYBRIDATTR_DEPTH,AslReq->sm_DisplayID);
  151.     DefDispID=AslReq->sm_DisplayID;
  152.     if(handle->RenderScr) CloseScreen(handle->RenderScr);
  153.     handle->RenderScr=OpenScreenTags(NULL,        SA_DisplayID,DefDispID,
  154.                             SA_Title,(UBYTE *)"CyBERgraphics Real3D Render Display",
  155.                             SA_Depth,Depth,
  156.                             TAG_DONE);
  157.    }
  158.    FreeAslRequest(AslReq);
  159.   }
  160.  }
  161. }
  162.  
  163. void __asm __saveds R3DGetSize(register __a0 struct R3DHandle *handle,register __a1 int *x,register __d0 int *y)
  164. {
  165.  struct Screen *MyScreen;
  166.  
  167.  MyScreen=handle->RenderScr;
  168.  *x = MyScreen->Width;
  169.  *y = MyScreen->Height-MyScreen->BarHeight-1;
  170.  
  171. }
  172.  
  173. void __asm __saveds R3DWriteLine(register __a0 struct R3DHandle *handle,register __a1 int *buffer,register __a2 int len,register __d0 int x,register __d1 int y)
  174. {
  175.  if(handle)
  176.  {
  177.   struct Screen *rscr=handle->RenderScr;
  178.   WritePixelArray(buffer,0,0,len*4,&rscr->RastPort,x,y+rscr->BarHeight+1,len,1,RECTFMT_RGBA);
  179.  }
  180. }
  181.  
  182. void __asm __saveds R3DReadLine(register __a0 struct R3DHandle *handle,register __a1 int *buffer,register __a2 int len,register __d0 int x,register __d1 int y)
  183. {
  184.  if(handle)
  185.  {
  186.   struct Screen *rscr=handle->RenderScr;
  187.   ReadPixelArray(buffer,0,0,len*4,&rscr->RastPort,x,y+rscr->BarHeight+1,len,1,RECTFMT_RGBA);
  188.  }
  189. }
  190.  
  191. void __asm __saveds R3DClsScr(register __a0 struct R3DHandle *handle,register __a1 ULONG color)
  192. {
  193.  
  194.  if (handle->RenderScr)
  195.  {
  196.   struct Screen *rscr=handle->RenderScr;
  197.   EraseRect(&rscr->RastPort,0,rscr->BarHeight+1,rscr->Width,rscr->Height);
  198.  }
  199. }
  200.  
  201. void __asm __saveds R3DCustomSave(register __a0 APTR handle,register __a1 char *name,register __a2 int x,register __d0 int y,register __d1 int w,register __d2 int h)
  202. {
  203.  return(0L);
  204. }
  205.  
  206.  
  207.  
  208. int __asm __saveds R3DInitRen(register __a0  struct R3DHandle *handle)
  209. {
  210.  if (handle->RenderScr)
  211.  {
  212.   ScreenToFront(handle->RenderScr);
  213.  }
  214.    return(TRUE);
  215. }
  216.  
  217. void __asm __saveds R3DEndRen(register __a0  struct R3DHandle *handle)
  218. {
  219.  if (handle->RenderScr)
  220.  {
  221.   ScreenToBack(handle->RenderScr);
  222.  }
  223. }
  224.  
  225. int __asm __saveds R3DEndRow(register __a0  struct R3DHandle *handle, register __a1 int y)
  226. {   return(TRUE);
  227. }
  228.  
  229. void __asm __saveds R3DGetAspect(
  230. register __a0  struct R3DHandle *handle,
  231. register __a1 int *w ,
  232. register __d0 int *h)
  233. {   *h = *w = 1;
  234. }
  235.  
  236. int __asm __saveds R3DExtF(register __a0  struct R3DHandle *handle)
  237. {   return(NULL);
  238. }
  239.  
  240.  
  241. int __saveds __UserLibInit(void)
  242. {
  243.  SysBase = (*(struct Library **)4);
  244.  
  245.  if (CyberGfxBase = OpenLibrary("cybergraphics.library", 40))
  246.  {
  247.   if((DefDispID=BestCModeIDTags(    CYBRBIDTG_Depth,16,
  248.                     CYBRBIDTG_NominalWidth,640,
  249.                     CYBRBIDTG_NominalHeight,480,
  250.                     TAG_DONE))!=INVALID_ID)
  251.   {
  252.    return(0);
  253.   }
  254.   CloseLibrary(CyberGfxBase);
  255.   }
  256.  return(1);
  257. }
  258.  
  259. void __saveds __UserLibCleanup(void)
  260. {
  261. }
  262.  
  263.