home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / misc / emu / AROSdev.lha / AROS / rom / intuition / openscreen.c < prev    next >
C/C++ Source or Header  |  1997-01-27  |  3KB  |  151 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: openscreen.c,v 1.6 1997/01/27 00:36:41 ldp Exp $
  4.  
  5.     Desc: Intuition function OpenScreen()
  6.     Lang: english
  7. */
  8. #include "intuition_intern.h"
  9. #include <exec/memory.h>
  10. #include <proto/exec.h>
  11. #include <proto/graphics.h>
  12.  
  13. #ifndef DEBUG_OpenScreen
  14. #   define DEBUG_OpenScreen 0
  15. #endif
  16. #if DEBUG_OpenScreen
  17. #   undef DEBUG
  18. #   define DEBUG 1
  19. #endif
  20. #include <aros/debug.h>
  21.  
  22. /*****************************************************************************
  23.  
  24.     NAME */
  25. #include <intuition/screens.h>
  26. #include <proto/intuition.h>
  27.  
  28.     AROS_LH1(struct Screen *, OpenScreen,
  29.  
  30. /*  SYNOPSIS */
  31.     AROS_LHA(struct NewScreen *, newScreen, A0),
  32.  
  33. /*  LOCATION */
  34.     struct IntuitionBase *, IntuitionBase, 33, Intuition)
  35.  
  36. /*  FUNCTION
  37.  
  38.     INPUTS
  39.  
  40.     RESULT
  41.  
  42.     NOTES
  43.  
  44.     EXAMPLE
  45.  
  46.     BUGS
  47.  
  48.     SEE ALSO
  49.  
  50.     INTERNALS
  51.  
  52.     HISTORY
  53.     29-10-95    digulla automatically created from
  54.                 intuition_lib.fd and clib/intuition_protos.h
  55.  
  56. *****************************************************************************/
  57. {
  58.     AROS_LIBFUNC_INIT
  59.     AROS_LIBBASE_EXT_DECL(struct IntuitionBase *,IntuitionBase)
  60.     struct IntScreen * screen;
  61. #define COPY(x)     screen->Screen.x = newScreen->x
  62.  
  63.     D(bug("OpenScreen (%p = { Left=%d Top=%d Width=%d Height=%d Depth=%d })\n"
  64.     , newScreen
  65.     , newScreen->LeftEdge
  66.     , newScreen->TopEdge
  67.     , newScreen->Width
  68.     , newScreen->Height
  69.     , newScreen->Depth
  70.     ));
  71.  
  72.     screen = AllocMem (sizeof (struct IntScreen), MEMF_ANY | MEMF_CLEAR);
  73.  
  74.     if (screen)
  75.     {
  76.     if (!InitRastPort (&screen->Screen.RastPort))
  77.     {
  78.         FreeMem (screen, sizeof (struct IntScreen));
  79.         screen = NULL;
  80.     }
  81.     }
  82.  
  83.     if (screen)
  84.     {
  85.     COPY(LeftEdge);
  86.     COPY(TopEdge);
  87.     COPY(Width);
  88.     COPY(Height);
  89.     COPY(DetailPen);
  90.     COPY(BlockPen);
  91.     COPY(Font);
  92.     COPY(DefaultTitle);
  93.  
  94.     screen->Screen.Flags = newScreen->Type;
  95.  
  96.     screen->Screen.BitMap.Depth = newScreen->Depth;
  97.  
  98.     screen->Screen.BarHeight = 0;
  99.     screen->Screen.BarVBorder = 0;
  100.     screen->Screen.BarHBorder = 0;
  101.     screen->Screen.MenuVBorder = 0;
  102.     screen->Screen.MenuHBorder = 0;
  103.  
  104.     screen->Screen.WBorTop = 0;
  105.     screen->Screen.WBorLeft = 0;
  106.     screen->Screen.WBorRight = 0;
  107.     screen->Screen.WBorBottom = 0;
  108.  
  109.  
  110.     screen->Screen.RastPort.BitMap = &screen->Screen.BitMap;
  111.  
  112.     screen->Screen.Title = newScreen->DefaultTitle;
  113.  
  114.     screen->Screen.NextScreen = IntuitionBase->FirstScreen;
  115.     IntuitionBase->FirstScreen =
  116.         IntuitionBase->ActiveScreen = &screen->Screen;
  117.  
  118.     screen->DInfo.dri_Version = DRI_VERSION;
  119.     screen->DInfo.dri_NumPens = NUMDRIPENS;
  120.     screen->DInfo.dri_Pens = screen->Pens;
  121.     screen->DInfo.dri_Depth = newScreen->Depth;
  122.     screen->DInfo.dri_Resolution.X = 44;
  123.     screen->DInfo.dri_Resolution.Y = 44;
  124.     screen->DInfo.dri_Flags = 0;
  125.  
  126.     if (screen->Screen.Font)
  127.         screen->DInfo.dri_Font = OpenFont (screen->Screen.Font);
  128.  
  129.     if (!screen->DInfo.dri_Font)
  130.         screen->DInfo.dri_Font = GfxBase->DefaultFont;
  131.  
  132.     SetFont (&screen->Screen.RastPort, screen->DInfo.dri_Font);
  133.  
  134.     screen->Pens[DETAILPEN] = screen->Screen.DetailPen;
  135.     screen->Pens[BLOCKPEN]    = screen->Screen.BlockPen;
  136.     screen->Pens[TEXTPEN] = 1;
  137.     screen->Pens[SHINEPEN] = 2;
  138.     screen->Pens[SHADOWPEN] = 1;
  139.     screen->Pens[FILLPEN] = 3;
  140.     screen->Pens[FILLTEXTPEN] = 2;
  141.     screen->Pens[BACKGROUNDPEN] = 0;
  142.     screen->Pens[HIGHLIGHTTEXTPEN] = 1;
  143.     screen->Pens[BARDETAILPEN] = 1;
  144.     screen->Pens[BARBLOCKPEN] = 2;
  145.     screen->Pens[BARTRIMPEN] = 1;
  146.     }
  147.  
  148.     ReturnPtr ("OpenScreen", struct Screen *, &screen->Screen);
  149.     AROS_LIBFUNC_EXIT
  150. } /* OpenScreen */
  151.