home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / dev / e / amiga_e / src / tools / clonescreen / clonescreen.e next >
Text File  |  1992-09-02  |  3KB  |  76 lines

  1. -> clonescreen.c, from RKRM libs.
  2.  
  3. OPT MODULE, OSVERSION=37
  4.  
  5. MODULE 'intuition/intuition', 'intuition/screens',
  6.        'graphics/text', 'graphics/modeid'
  7.  
  8. EXPORT PROC openclonescreen(pub_screen_name,clone_title,depth=0,clone_pub_name=NIL)
  9.   DEF my_screen=NIL:PTR TO screen, screen_modeID, pub_scr_font_name,
  10.       font_name, font_name_size, pub_screen_font:PTR TO textattr,
  11.       opened_font=NIL:PTR TO textfont, pub_screen:PTR TO screen,
  12.       screen_drawinfo=NIL:PTR TO drawinfo, di_font:PTR TO textfont
  13.  
  14.   IF pub_screen:=LockPubScreen(pub_screen_name)
  15.     IF screen_drawinfo:=GetScreenDrawInfo(pub_screen)
  16.       di_font:=screen_drawinfo.font
  17.       IF (screen_modeID:=GetVPModeID(pub_screen.viewport))<>INVALID_ID
  18.         pub_scr_font_name:=Long(di_font+10)  -> node.name
  19.         font_name_size:=1+StrLen(pub_scr_font_name)
  20.         IF font_name:=String(font_name_size)
  21.           StrCopy(font_name,pub_scr_font_name)
  22.           pub_screen_font:=[font_name,di_font.ysize,di_font.style,di_font.flags]:textattr
  23.           IF opened_font:=OpenFont(pub_screen_font)
  24.             IF my_screen:=OpenScreenTagList(NIL,
  25.               [SA_WIDTH,      pub_screen.width,
  26.                SA_HEIGHT,     pub_screen.height,
  27.                SA_DEPTH,      IF depth THEN depth ELSE screen_drawinfo.depth,
  28.                SA_OVERSCAN,   OSCAN_TEXT,
  29.                SA_AUTOSCROLL, TRUE,
  30.                SA_FONT,       pub_screen_font,
  31.                SA_PENS,       screen_drawinfo.pens,
  32.                SA_DISPLAYID,  screen_modeID,
  33.                SA_TITLE,      clone_title,
  34.                SA_PUBNAME,    clone_pub_name,
  35.                NIL])
  36.             ENDIF
  37.           ENDIF
  38.         ENDIF
  39.       ENDIF
  40.       FreeScreenDrawInfo(pub_screen,screen_drawinfo)
  41.     ENDIF
  42.     UnlockPubScreen(pub_screen_name,pub_screen)
  43.   ENDIF
  44.   IF my_screen=NIL THEN Raise("SCR")
  45. ENDPROC my_screen,opened_font
  46.  
  47. EXPORT PROC closeclonescreen(screen,font,window=NIL)
  48.   DEF r
  49.   IF window THEN CloseWindow(window)
  50.   IF screen THEN r:=CloseScreen(screen)
  51.   IF font THEN CloseFont(font)
  52. ENDPROC r
  53.  
  54. EXPORT PROC getcloneinfo(screen:PTR TO screen)
  55.   DEF di:PTR TO drawinfo, depth=0
  56.   IF di:=GetScreenDrawInfo(screen)
  57.     depth:=di.depth
  58.     FreeScreenDrawInfo(screen,di)
  59.   ENDIF
  60. ENDPROC depth,screen.width,screen.height
  61.  
  62. EXPORT PROC backdropwindow(screen:PTR TO screen,idcmp=0,flags=0)
  63.   DEF wnd=NIL:PTR TO window
  64.   IF (wnd:=OpenWindowTagList(NIL,
  65.     [WA_LEFT,0,
  66.      WA_TOP,0,
  67.      WA_WIDTH,screen.width,
  68.      WA_HEIGHT,screen.height,
  69.      WA_IDCMP,idcmp,
  70.      WA_FLAGS,flags OR $1900,
  71.      WA_TITLE,'',
  72.      WA_CUSTOMSCREEN,screen,
  73.      NIL]))=NIL THEN Raise("WIN")
  74.   stdrast:=wnd.rport
  75. ENDPROC wnd
  76.