home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / source / gblanker3.5.src.lha / GSource / Garshneblanker.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-18  |  7.5 KB  |  289 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Michael D. Bayne
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include <pragmas/exec_pragmas.h>
  26. #include <pragmas/intuition_pragmas.h>
  27. #include <pragmas/gadtools_pragmas.h>
  28. #include <pragmas/graphics_pragmas.h>
  29. #include <pragmas/utility_pragmas.h>
  30.  
  31. #include "Garshneblanker.h"
  32.  
  33. struct Screen         *Scr = NULL;
  34. UBYTE                 *PubScreenName = NULL;
  35. APTR                   VisualInfo = NULL;
  36. struct Window         *BlankerWnd = NULL;
  37. struct Gadget         *BlankerGList = NULL;
  38. struct IntuiMessage    BlankerMsg;
  39. struct Gadget         *BlankerGadgets[10];
  40. UWORD                  BlankerLeft = 0;
  41. UWORD                  BlankerTop = 16;
  42. UWORD                  BlankerWidth = 316;
  43. UWORD                  BlankerHeight = 99;
  44. UBYTE                 *BlankerWdt = (UBYTE *)"Garshneblanker";
  45. struct TextAttr       *Font, Attr;
  46. UWORD                  FontX, FontY;
  47. UWORD                  OffX, OffY;
  48. struct TextFont       *BlankerFont = NULL;
  49.  
  50. UBYTE *CY_REPLACE0Labels[] = {
  51.     (UBYTE *)"Keep",
  52.     (UBYTE *)"Replace",
  53.     NULL };
  54.  
  55. UBYTE *CY_BLANKCORNER0Labels[] = {
  56.     (UBYTE *)"None",
  57.     (UBYTE *)"Upper Left",
  58.     (UBYTE *)"Upper Right",
  59.     (UBYTE *)"Lower Right",
  60.     (UBYTE *)"Lower Left",
  61.     NULL };
  62.  
  63. UBYTE *CY_DONTCORNER0Labels[] = {
  64.     (UBYTE *)"None",
  65.     (UBYTE *)"Upper Left",
  66.     (UBYTE *)"Upper Right",
  67.     (UBYTE *)"Lower Right",
  68.     (UBYTE *)"Lower Left",
  69.     NULL };
  70.  
  71. UWORD BlankerGTypes[] = {
  72.     BUTTON_KIND,
  73.     BUTTON_KIND,
  74.     BUTTON_KIND,
  75.     LISTVIEW_KIND,
  76.     BUTTON_KIND,
  77.     BUTTON_KIND,
  78.     BUTTON_KIND,
  79.     CYCLE_KIND,
  80.     CYCLE_KIND,
  81.     CYCLE_KIND
  82. };
  83.  
  84. struct NewGadget BlankerNGad[] = {
  85.     211, 80, 48, 15, (UBYTE *)"_Hide", NULL, GD_BT_HIDE, PLACETEXT_IN, NULL, (APTR)BT_HIDEClicked,
  86.     159, 80, 48, 15, (UBYTE *)"_Save", NULL, GD_BT_SAVE, PLACETEXT_IN, NULL, (APTR)BT_SAVEClicked,
  87.     263, 80, 48, 15, (UBYTE *)"_Quit", NULL, GD_BT_QUIT, PLACETEXT_IN, NULL, (APTR)BT_QUITClicked,
  88.     4, 4, 151, 90, NULL, NULL, GD_LV_BLANKERS, 0, NULL, (APTR)LV_BLANKERSClicked,
  89.     159, 4, 99, 15, (UBYTE *)"Module _Prefs", NULL, GD_BT_PREFS, PLACETEXT_IN, NULL, (APTR)BT_PREFSClicked,
  90.     262, 4, 49, 15, (UBYTE *)"_Info", NULL, GD_BT_INFO, PLACETEXT_IN, NULL, (APTR)BT_INFOClicked,
  91.     159, 23, 58, 15, (UBYTE *)"_Toggle", NULL, GD_BT_TOGGLE, PLACETEXT_IN, NULL, (APTR)BT_TOGGLEClicked,
  92.     221, 23, 90, 15, NULL, NULL, GD_CY_REPLACE, 0, NULL, (APTR)CY_REPLACEClicked,
  93.     198, 42, 113, 15, (UBYTE *)"_Blank", NULL, GD_CY_BLANKCORNER, PLACETEXT_LEFT, NULL, (APTR)CY_BLANKCORNERClicked,
  94.     198, 61, 113, 15, (UBYTE *)"_Don't", NULL, GD_CY_DONTCORNER, PLACETEXT_LEFT, NULL, (APTR)CY_DONTCORNERClicked
  95. };
  96.  
  97. ULONG BlankerGTags[] = {
  98.     (GT_Underscore), '_', (TAG_DONE),
  99.     (GT_Underscore), '_', (TAG_DONE),
  100.     (GT_Underscore), '_', (TAG_DONE),
  101.     (GTLV_ShowSelected), NULL, (TAG_DONE),
  102.     (GT_Underscore), '_', (TAG_DONE),
  103.     (GT_Underscore), '_', (TAG_DONE),
  104.     (GT_Underscore), '_', (TAG_DONE),
  105.     (GTCY_Labels), (ULONG)&CY_REPLACE0Labels[ 0 ], (TAG_DONE),
  106.     (GTCY_Labels), (ULONG)&CY_BLANKCORNER0Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE),
  107.     (GTCY_Labels), (ULONG)&CY_DONTCORNER0Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE)
  108. };
  109.  
  110. static UWORD ComputeX( UWORD value )
  111. {
  112.     return(( UWORD )((( FontX * value ) + 3 ) / 6 ));
  113. }
  114.  
  115. static UWORD ComputeY( UWORD value )
  116. {
  117.     return(( UWORD )((( FontY * value ) + 4 ) / 9 ));
  118. }
  119.  
  120. static void ComputeFont( UWORD width, UWORD height )
  121. {
  122.     Forbid();
  123.     Font = &Attr;
  124.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  125.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  126.     FontX = GfxBase->DefaultFont->tf_XSize;
  127.     Permit();
  128.  
  129.     OffX = Scr->WBorLeft;
  130.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  131.  
  132.     if ( width && height ) {
  133.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  134.             goto UseTopaz;
  135.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  136.             goto UseTopaz;
  137.     }
  138.     return;
  139.  
  140. UseTopaz:
  141.     Font->ta_Name = (STRPTR)"topaz.font";
  142.     FontX = FontY = Font->ta_YSize = 8;
  143. }
  144.  
  145. int SetupScreen( void )
  146. {
  147.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  148.         return( 1L );
  149.  
  150.     ComputeFont( 0, 0 );
  151.  
  152.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  153.         return( 2L );
  154.  
  155.     return( 0L );
  156. }
  157.  
  158. void CloseDownScreen( void )
  159. {
  160.     if ( VisualInfo ) {
  161.         FreeVisualInfo( VisualInfo );
  162.         VisualInfo = NULL;
  163.     }
  164.  
  165.     if ( Scr        ) {
  166.         UnlockPubScreen( NULL, Scr );
  167.         Scr = NULL;
  168.     }
  169. }
  170.  
  171. int HandleBlankerIDCMP( void )
  172. {
  173.     struct IntuiMessage    *m;
  174.     int            (*func)();
  175.     BOOL            running = TRUE;
  176.  
  177.     while( m = GT_GetIMsg( BlankerWnd->UserPort )) {
  178.  
  179.         CopyMem(( char * )m, ( char * )&BlankerMsg, (long)sizeof( struct IntuiMessage ));
  180.  
  181.         GT_ReplyIMsg( m );
  182.  
  183.         switch ( BlankerMsg.Class ) {
  184.  
  185.             case    IDCMP_REFRESHWINDOW:
  186.                 GT_BeginRefresh( BlankerWnd );
  187.                 GT_EndRefresh( BlankerWnd, TRUE );
  188.                 break;
  189.  
  190.             case    IDCMP_CLOSEWINDOW:
  191.                 running = BlankerCloseWindow();
  192.                 break;
  193.  
  194.             case    IDCMP_VANILLAKEY:
  195.                 running = BlankerVanillaKey();
  196.                 break;
  197.  
  198.             case    IDCMP_GADGETUP:
  199.             case    IDCMP_GADGETDOWN:
  200.                 func = ( void * )(( struct Gadget * )BlankerMsg.IAddress )->UserData;
  201.                 running = func();
  202.                 break;
  203.  
  204.             case    IDCMP_MENUPICK:
  205.                 break;
  206.         }
  207.     }
  208.     return( running );
  209. }
  210.  
  211. int OpenBlankerWindow( void )
  212. {
  213.     struct NewGadget    ng;
  214.     struct Gadget    *g;
  215.     UWORD        lc, tc;
  216.     UWORD        wleft = BlankerLeft, wtop = BlankerTop, ww, wh;
  217.  
  218.     ComputeFont( BlankerWidth, BlankerHeight );
  219.  
  220.     ww = ComputeX( BlankerWidth );
  221.     wh = ComputeY( BlankerHeight );
  222.  
  223.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  224.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  225.  
  226.     if ( ! ( BlankerFont = OpenDiskFont( Font )))
  227.         return( 5L );
  228.  
  229.     if ( ! ( g = CreateContext( &BlankerGList )))
  230.         return( 1L );
  231.  
  232.     for( lc = 0, tc = 0; lc < Blanker_CNT; lc++ ) {
  233.  
  234.         CopyMem((char * )&BlankerNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  235.  
  236.         ng.ng_VisualInfo = VisualInfo;
  237.         ng.ng_TextAttr   = Font;
  238.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  239.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  240.         ng.ng_Width      = ComputeX( ng.ng_Width );
  241.         ng.ng_Height     = ComputeY( ng.ng_Height);
  242.  
  243.         BlankerGadgets[ lc ] = g = CreateGadgetA((ULONG)BlankerGTypes[ lc ], g, &ng, ( struct TagItem * )&BlankerGTags[ tc ] );
  244.  
  245.         while( BlankerGTags[ tc ] ) tc += 2;
  246.         tc++;
  247.  
  248.         if ( NOT g )
  249.             return( 2L );
  250.     }
  251.  
  252.     if ( ! ( BlankerWnd = OpenWindowTags( NULL,
  253.                 WA_Left,    wleft,
  254.                 WA_Top,        wtop,
  255.                 WA_Width,    ww + OffX + Scr->WBorRight,
  256.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  257.                 WA_IDCMP,    BUTTONIDCMP|LISTVIEWIDCMP|CYCLEIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  258.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SIZEBBOTTOM|WFLG_SMART_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP,
  259.                 WA_Gadgets,    BlankerGList,
  260.                 WA_Title,    BlankerWdt,
  261.                 WA_ScreenTitle,    "Garshneblanker",
  262.                 WA_PubScreen,    Scr,
  263.                 TAG_DONE )))
  264.     return( 4L );
  265.  
  266.     GT_RefreshWindow( BlankerWnd, NULL );
  267.  
  268.     return( 0L );
  269. }
  270.  
  271. void CloseBlankerWindow( void )
  272. {
  273.     if ( BlankerWnd        ) {
  274.         CloseWindow( BlankerWnd );
  275.         BlankerWnd = NULL;
  276.     }
  277.  
  278.     if ( BlankerGList      ) {
  279.         FreeGadgets( BlankerGList );
  280.         BlankerGList = NULL;
  281.     }
  282.  
  283.     if ( BlankerFont ) {
  284.         CloseFont( BlankerFont );
  285.         BlankerFont = NULL;
  286.     }
  287. }
  288.  
  289.