home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / COMAL3-1.DMS / in.adf / Demos / ScreenDemo < prev   
Encoding:
Text File  |  1993-04-09  |  1.9 KB  |  85 lines

  1. PRINT
  2. PRINT
  3. PRINT TAB(5),"This demo shows how you can set up your own screen."
  4. PRINT
  5. PRINT TAB(5),"It utilizes the fact that the standard Comal window"
  6. PRINT TAB(5),"is opened after the scanning where all local modules"
  7. PRINT TAB(5),"are initialized."
  8. PRINT
  9. PRINT TAB(5),"You cannot make it as an external module!"
  10. PRINT TAB(5),"This is because external modules are only initialized"
  11. PRINT TAB(5),"once - when they are loaded."
  12. PRINT
  13. PRINT
  14. PRINT TAB(5),"Press any key to stop"
  15.  
  16. WHILE KEY$="" DO WAIT
  17.  
  18. MODULE SpecialScreen
  19.  
  20.   USE System
  21.   USE SystemCode
  22.   USE IntuitionScreen
  23.   USE View
  24.   USE TagItem
  25.   USE IntuitionLibrary
  26.  
  27.   DIM Screen OF POINTER TO Screen
  28.   DIM IOScreen OF POINTER TO Screen
  29.  
  30.   CreateScreen
  31.  
  32.   PROC CreateScreen
  33.     LOCAL NewScreen OF NewScreen
  34.  
  35.     NewScreen.Width:=640
  36.     NewScreen.Height:=256
  37.     NewScreen.Depth:=2
  38.     NewScreen.BlockPen:=1
  39.     NewScreen.ViewModes:=HIRES
  40.     NewScreen.Type:=$000F        // CUSTOMSCREEN
  41.     NewScreen.DefaultTitle:=ADR("Special!")
  42.  
  43.     IF SysLibVersion<36 THEN
  44.       Screen:=OpenScreen(ADR(NewScreen))
  45.     ELSE
  46.       LOCAL ScreenTags(0..1) OF TagItem
  47.       LOCAL Pens_3D OF USHORT
  48.  
  49.       Pens_3D:=$FFFF
  50.       ScreenTags(0).ti_Tag:=$8000003A  // SA_Pens
  51.       ScreenTags(0).ti_Data:=ADR(Pens_3D)
  52.       ScreenTags(1).ti_Tag:=TAG_DONE
  53.       Screen:=OpenScreenTagList(ADR(NewScreen),ADR(ScreenTags()))
  54.     ENDIF
  55.  
  56.     IF Screen THEN
  57.       IOScreen:=ComalStruc@.IO_Screen
  58.       ComalStruc@.IO_Screen:=Screen
  59.     ENDIF
  60.   ENDPROC CreateScreen
  61.  
  62.   PROC DeleteScreen
  63.     IF Screen THEN
  64.       CloseScreen(Screen)
  65.       Screen:=0
  66.       ComalStruc@.IO_Screen:=IOScreen
  67.     ENDIF
  68.   ENDPROC DeleteScreen
  69.  
  70.   PROC ScreenSignal(s OF LONG) SIGNAL
  71.     CASE s OF
  72.     WHEN SIG_STOP,SIG_END
  73.       IF Screen THEN
  74.         ScreenToBack(Screen)
  75.       ENDIF
  76.     WHEN SIG_CLOSE,SIG_DISCARD,SIG_CLEAR
  77.       DeleteScreen
  78.     OTHERWISE
  79.       // No action
  80.     ENDCASE
  81.   ENDPROC ScreenSignal
  82.  
  83. ENDMODULE SpecialScreen
  84.  
  85.