示例#1
1
void amiga_init (char *dir)
{
  if ((DefaultPubScreen = LockPubScreen (0)) == 0)
    exit (1);
  screen_ratio (DefaultPubScreen);

  char prog_name[256];
  static char font_name[MAXFONTPATH];
  char *font_desc, *name_ptr;
  static WORD pens[] =
  {-1};
  static struct TextAttr font =
  {NULL, 0, FS_NORMAL, 0};
  int window = 0;

  if (Icon == NULL)
  {
    if (GetProgramName (prog_name, 256))
      Icon = GetDiskObject (prog_name);
  }

  if (Icon)
  {
    if (FindToolType (Icon->do_ToolTypes, "WINDOW"))
      window = 1;
    if (font_desc = FindToolType (Icon->do_ToolTypes, "FONT"))
    {
      strcpy (font_name, font_desc);
      if (name_ptr = strrchr (font_name, '/'))
      {
	font.ta_Name = font_name;
	font.ta_YSize = atoi (name_ptr + 1);
	strcpy (name_ptr, ".font");
      }
    }
    if (font.ta_Name)
      Font = OpenDiskFont (&font);
  }
  if (Font == NULL)
  {
    font.ta_Name = "topaz.font";
    font.ta_YSize = 8;
    Font = OpenFont (&font);
  }

  if (window == 0)
  {
    if ((Screen = OpenScreenTags (0,
				  SA_Pens, pens,
				  SA_DisplayID, GetVPModeID (&DefaultPubScreen->ViewPort),
				  SA_Overscan, OSCAN_TEXT,
				  SA_Depth, 2,
				  SA_Type, CUSTOMSCREEN | AUTOSCROLL,
				  SA_Font, &font,
				  SA_Title, TitleBar, TAG_DONE)) == 0)
      exit (1);
  }

  if ((Window = OpenWindowTags (0,
				WA_Left, 0,
				WA_Top, Screen ? 2 : DefaultPubScreen->BarHeight + 1,
				WA_Width, Screen ? Screen->Width : ScreenWidth,
				WA_Height, Screen ? Screen->Height - 2 : ScreenHeight - DefaultPubScreen->BarHeight - 1,
				WA_SmartRefresh, 1,
				WA_NewLookMenus, 1,
				WA_AutoAdjust, 1,
				WA_Borderless, Screen ? 1 : 0,
				WA_Backdrop, Screen ? 1 : 0,
				WA_Activate, 1,
				WA_CloseGadget, Screen ? 0 : 1,
				WA_DragBar, Screen ? 0 : 1,
				WA_DepthGadget, Screen ? 0 : 1,
				WA_SizeGadget, Screen ? 0 : 1,
				WA_SizeBBottom, Screen ? 0 : 1,
				WA_Title, TitleBar,
				WA_ScreenTitle, TitleBar,
				WA_IDCMP, IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_MENUPICK | IDCMP_CLOSEWINDOW | IDCMP_CHANGEWINDOW,
				Screen ? WA_CustomScreen : WA_PubScreen, Screen ? Screen : DefaultPubScreen,
				TAG_DONE)) == 0)
    exit (1);

  ThisProcess = (struct Process *)FindTask(0);
  OldWindowPtr = ThisProcess->pr_WindowPtr;
  ThisProcess->pr_WindowPtr = Window;

  if ((Visual = GetVisualInfo (Window->WScreen, TAG_DONE)) == 0)
    exit (1);
  if ((Menus = CreateMenus (NewMenus, GTMN_NewLookMenus, TRUE, TAG_DONE)) == 0)
    exit (1);
  LayoutMenus (Menus, Visual, GTMN_NewLookMenus, TRUE, TAG_DONE);
  SetMenuStrip (Window, Menus);

  if ((GameReq = alloc_freq (dir)) == 0)
    exit (1);
  if ((SaveReq = alloc_freq (dir)) == 0)
    exit (1);
  if ((ScriptReq = alloc_freq (dir)) == 0)
    exit (1);

  RastPort = Window->RPort;
  SetDrMd (RastPort, JAM2);
  SetAPen (RastPort, 1);
  SetBPen (RastPort, 0);
  SetFont (RastPort, Font);
  DisplayHeight = ((Window->Height - Window->BorderTop - Window->BorderBottom) / RastPort->TxHeight) - 1;
  PreviousHeight = DisplayHeight;

  reset_cursor ();
}
示例#2
0
int main(int argc, char **argv)
{
  if ((GTDragBase = OpenLibrary("gtdrag.library",3)) != 0)
  {
    if (GTD_AddApp("dragtest",GTDA_NewStyle,TRUE,TAG_END))
    {
      if ((scr = LockPubScreen(NULL)) != 0)
      {
        vi = GetVisualInfo(scr,TAG_END);
        fontheight = scr->Font->ta_YSize;
        init();

        if ((win = initWindow()) != 0)
        {
          processMsg();
          CloseWindow(win);
        }
        FreeGadgets(glist);

        cleanup();
        FreeVisualInfo(vi);
        UnlockPubScreen(NULL,scr);
      }
      GTD_RemoveApp();
    }
    CloseLibrary(GTDragBase);
  }
  return 0;
}
int SetupScreen( void )
{
	if ( ! ( Scr = LockPubScreen( PubScreenName )))
		return( 1L );

	ComputeFont( 0, 0 );

	if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
		return( 2L );

	return( 0L );
}
示例#4
0
static int vsid_menu_create(void)
{
    struct Screen* pubscreen = NULL;
    int i, j;

    pubscreen = LockPubScreen(NULL);

    if (pubscreen == NULL) {
        return -1;
    }

    if (!(VisualInfo = GetVisualInfo(pubscreen, TAG_DONE))) {
        return -1;
    }

    for (i = 0, j = 0; vsid_ui_translation_menu[i].nm_Type != NM_END; i++) {
        vsid_ui_menu[j].nm_Type = vsid_ui_translation_menu[i].nm_Type;
        vsid_ui_menu[j].nm_CommKey = vsid_ui_translation_menu[i].nm_CommKey;
        vsid_ui_menu[j].nm_Flags = vsid_ui_translation_menu[i].nm_Flags;
        vsid_ui_menu[j].nm_MutualExclude = vsid_ui_translation_menu[i].nm_MutualExclude;
        vsid_ui_menu[j].nm_UserData = vsid_ui_translation_menu[i].nm_UserData;
        switch (vsid_ui_translation_menu[i].nm_Label) {
            case 0:
                vsid_ui_menu[j++].nm_Label = (STRPTR)NM_BARLABEL;
                break;
            default:
                vsid_ui_menu[j++].nm_Label = translate_text(vsid_ui_translation_menu[i].nm_Label);
                break;
        }
    }
    vsid_ui_menu[i].nm_Type = NM_END;
    vsid_ui_menu[i].nm_CommKey = NULL;
    vsid_ui_menu[i].nm_Flags = 0;
    vsid_ui_menu[i].nm_MutualExclude = 0L;
    vsid_ui_menu[i].nm_UserData = NULL;
    vsid_ui_menu[i].nm_Label = NULL;

    if (!(vsid_menu = CreateMenus(vsid_ui_menu, GTMN_FrontPen, 0L, TAG_DONE))) {
        return -1;
    }

    LayoutMenus(vsid_menu, VisualInfo, GTMN_NewLookMenus, TRUE, TAG_DONE);

    SetMenuStrip(vsid_window, vsid_menu);

    vsid_menu_update();

    UnlockPubScreen(NULL, pubscreen);

    return 0;
}
示例#5
0
static struct Menu *createViewerDisplayMenu(struct Screen *screen, const int previousItemEnabled, const int nextItemEnabled)
{
    /* Get some visual info required to properly generate the menu layout */
    APTR vi = GetVisualInfo(screen, TAG_END);
    
    if(vi == NULL)
    {
	fprintf(stderr, "Cannot obtain visual info!\n");
	return NULL;
    }
    else
    {
	/* Create a menu */
	
	struct NewMenu newMenu[] = {
	    {NM_TITLE, "Picture", 0, 0, 0, 0},
	    {NM_ITEM, "Open...", "O", 0, 0, 0},
	    {NM_ITEM, "Previous", "P", previousItemEnabled ? 0 : NM_ITEMDISABLED, 0, 0},
	    {NM_ITEM, "Next", "N", nextItemEnabled ? 0 : NM_ITEMDISABLED, 0, 0},
	    {NM_ITEM, "Hide Title", "S", CHECKIT | MENUTOGGLE, 0, 0},
	    {NM_ITEM, "Cycle", "C", CHECKIT | MENUTOGGLE, 0, 0},
	    {NM_ITEM, "Quit", "Q", 0, 0, 0},
	    {NM_END, NULL, 0, 0, 0, 0}
	};
	
	struct Menu *menu = CreateMenus(newMenu, GTMN_FullMenu, TRUE, TAG_END);
	
	if(menu != NULL)
	{
	    /* Properly layout the menu items */
	    if(!LayoutMenus(menu, vi, TAG_END))
	    {
		fprintf(stderr, "Cannot calculate menu layout!\n");
		FreeMenus(menu);
		menu = NULL;
	    }
	}
	
	FreeVisualInfo(vi); /* Cleanup */
	
	return menu; /* Return generated menu */
    }
}
示例#6
0
/*****************************************
* Opens up the window & sets the gadgets *
*****************************************/
int setup_window(void)
{
    struct Gadget *g;
    struct NewGadget ng;
    UWORD offy;
    ULONG drawtags[20];
    static const char *keyb_langs[] =
    {
	"US",
	"DE",
	"SE",
	"FR",
	"IT",
	NULL
    };
    scr = LockPubScreen(NULL);
    if (!scr)
	return (0);
    VisInfo = GetVisualInfo(scr, TAG_DONE);
    if (!VisInfo)
	return (0);
    offy = scr->WBorTop + scr->RastPort.TxHeight + 1;

    /* Create buttons */
    g = CreateContext(&glist);
    if (!g)
	return (0);

    ng.ng_TextAttr = &topaz8;
    ng.ng_VisualInfo = VisInfo;
    ng.ng_Flags = PLACETEXT_IN;
    ng.ng_LeftEdge = 284;
    ng.ng_TopEdge = offy + 86;
    ng.ng_Width = 96;
    ng.ng_Height = 15;
    ng.ng_GadgetText = (UBYTE *) "Hard Reset";
    ng.ng_GadgetID = GAD_RESET;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 105;
    ng.ng_GadgetText = (UBYTE *) "Debug";
    ng.ng_GadgetID = GAD_DEBUG;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 135;
    ng.ng_GadgetText = (UBYTE *) "Quit UAE";
    ng.ng_GadgetID = GAD_EXITEMU;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    /* Eject buttons */
    ng.ng_LeftEdge = 262;
    ng.ng_TopEdge = offy + 11;
    ng.ng_Width = 70;
    ng.ng_GadgetID = GAD_EJECT_DF0;
    ng.ng_GadgetText = (UBYTE *) "Eject";
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 28;
    ng.ng_GadgetID = GAD_EJECT_DF1;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 45;
    ng.ng_GadgetID = GAD_EJECT_DF2;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 62;
    ng.ng_GadgetID = GAD_EJECT_DF3;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    /* Insert buttons */
    ng.ng_LeftEdge = 332;
    ng.ng_TopEdge = offy + 11;
    ng.ng_GadgetID = GAD_INSERT_DF0;
    ng.ng_GadgetText = (UBYTE *) "Insert";
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 28;
    ng.ng_GadgetID = GAD_INSERT_DF1;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 45;
    ng.ng_GadgetID = GAD_INSERT_DF2;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    ng.ng_TopEdge = offy + 62;
    ng.ng_GadgetID = GAD_INSERT_DF3;
    g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE);

    /* Sound & Joystick buttons */
    ng.ng_LeftEdge = 133;
    ng.ng_TopEdge = 97;
    ng.ng_GadgetID = GAD_SOUND;
    ng.ng_GadgetText = (UBYTE *) "Sound:";
    ng.ng_Flags = PLACETEXT_LEFT;
    g = CreateGadget(CHECKBOX_KIND, g, &ng, GTCB_Checked, config.do_output_sound ? 1 : 0, TAG_DONE);

    ng.ng_TopEdge = 114;
    ng.ng_GadgetID = GAD_JOYSTICK;
    ng.ng_GadgetText = (UBYTE *) "Fake Joystick:";
    g = CreateGadget(CHECKBOX_KIND, g, &ng, GTCB_Checked, config.do_fake_joystick ? 1 : 0, TAG_DONE);

    ng.ng_TopEdge = 129;
    ng.ng_GadgetID = GAD_LANGUAGE;
    ng.ng_GadgetText = (UBYTE *) "Language:";
    g = CreateGadget(CYCLE_KIND, g, &ng,
		     GTCY_Labels, (ULONG) keyb_langs,
		     GTCY_Active, config.keyboard,
		     TAG_DONE);

    ng.ng_TopEdge = 146;
    ng.ng_GadgetID = GAD_FRAMERATE;
    ng.ng_GadgetText = (UBYTE *) "Framerate:";
    g = CreateGadget(INTEGER_KIND, g, &ng, GTIN_Number, config.framerate, TAG_DONE);

    newwindow.Title = "UAE-Control";
    newwindow.Width = 419;
    newwindow.Height = 171;
    newwindow.LeftEdge = 20;
    newwindow.TopEdge = 20;
    newwindow.FirstGadget = glist;
    newwindow.Screen = scr;	/* Store screen ptr */
    window = OpenWindow(&newwindow);
    if (!window)
	return (0);

    /* Draw texts etc... */
    SetAPen(window->RPort, 1);
    SetDrMd(window->RPort, JAM2);
    Move(window->RPort, 19, offy + 11 + 10);
    Text(window->RPort, (UBYTE *) "DF0:", 4);
    Move(window->RPort, 19, offy + 28 + 10);
    Text(window->RPort, (UBYTE *) "DF1:", 4);
    Move(window->RPort, 19, offy + 45 + 10);
    Text(window->RPort, (UBYTE *) "DF2:", 4);
    Move(window->RPort, 19, offy + 62 + 10);
    Text(window->RPort, (UBYTE *) "DF3:", 4);

    drawtags[0] = GT_VisualInfo;
    drawtags[1] = (ULONG) VisInfo;
    drawtags[2] = GTBB_Recessed;
    drawtags[3] = 1;
    drawtags[4] = TAG_DONE;
    DrawBevelBoxA(window->RPort, 14, offy + 10, 390, 17, (struct TagItem *) &drawtags);
    DrawBevelBoxA(window->RPort, 14, offy + 27, 390, 17, (struct TagItem *) &drawtags);
    DrawBevelBoxA(window->RPort, 14, offy + 44, 390, 17, (struct TagItem *) &drawtags);
    DrawBevelBoxA(window->RPort, 14, offy + 61, 390, 17, (struct TagItem *) &drawtags);

    print_drive_status();

    return (1);
}