home *** CD-ROM | disk | FTP | other *** search
- -> clonescreen.c, from RKRM libs.
-
- OPT MODULE, OSVERSION=37
-
- MODULE 'intuition/intuition', 'intuition/screens',
- 'graphics/text', 'graphics/modeid'
-
- EXPORT PROC openclonescreen(pub_screen_name,clone_title,depth=0,clone_pub_name=NIL)
- DEF my_screen=NIL:PTR TO screen, screen_modeID, pub_scr_font_name,
- font_name, font_name_size, pub_screen_font:PTR TO textattr,
- opened_font=NIL:PTR TO textfont, pub_screen:PTR TO screen,
- screen_drawinfo=NIL:PTR TO drawinfo, di_font:PTR TO textfont
-
- IF pub_screen:=LockPubScreen(pub_screen_name)
- IF screen_drawinfo:=GetScreenDrawInfo(pub_screen)
- di_font:=screen_drawinfo.font
- IF (screen_modeID:=GetVPModeID(pub_screen.viewport))<>INVALID_ID
- pub_scr_font_name:=Long(di_font+10) -> node.name
- font_name_size:=1+StrLen(pub_scr_font_name)
- IF font_name:=String(font_name_size)
- StrCopy(font_name,pub_scr_font_name)
- pub_screen_font:=[font_name,di_font.ysize,di_font.style,di_font.flags]:textattr
- IF opened_font:=OpenFont(pub_screen_font)
- IF my_screen:=OpenScreenTagList(NIL,
- [SA_WIDTH, pub_screen.width,
- SA_HEIGHT, pub_screen.height,
- SA_DEPTH, IF depth THEN depth ELSE screen_drawinfo.depth,
- SA_TYPE, IF clone_pub_name THEN PUBLICSCREEN ELSE CUSTOMSCREEN,
- SA_OVERSCAN, OSCAN_TEXT,
- SA_AUTOSCROLL, TRUE,
- SA_FONT, pub_screen_font,
- SA_PENS, screen_drawinfo.pens,
- SA_DISPLAYID, screen_modeID,
- SA_TITLE, clone_title,
- SA_PUBNAME, clone_pub_name,
- NIL])
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- FreeScreenDrawInfo(pub_screen,screen_drawinfo)
- ENDIF
- UnlockPubScreen(pub_screen_name,pub_screen)
- ENDIF
- IF my_screen=NIL THEN Raise("SCR")
- ENDPROC my_screen,opened_font
-
- EXPORT PROC closeclonescreen(screen,font,window=NIL)
- DEF r
- IF window THEN CloseWindow(window)
- IF screen THEN r:=CloseScreen(screen)
- IF font THEN CloseFont(font)
- ENDPROC r
-
- EXPORT PROC getcloneinfo(screen:PTR TO screen)
- DEF di:PTR TO drawinfo, depth=0
- IF di:=GetScreenDrawInfo(screen)
- depth:=di.depth
- FreeScreenDrawInfo(screen,di)
- ENDIF
- ENDPROC depth,screen.width,screen.height
-
- EXPORT PROC backdropwindow(screen:PTR TO screen,idcmp=0,flags=0)
- DEF wnd=NIL:PTR TO window
- IF (wnd:=OpenWindowTagList(NIL,
- [WA_LEFT,0,
- WA_TOP,0,
- WA_WIDTH,screen.width,
- WA_HEIGHT,screen.height,
- WA_IDCMP,idcmp,
- WA_FLAGS,flags OR $1900,
- WA_TITLE,'',
- WA_CUSTOMSCREEN,screen,
- NIL]))=NIL THEN Raise("WIN")
- stdrast:=wnd.rport
- ENDPROC wnd
-