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 (); }
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 ); }
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; }
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 */ } }
/***************************************** * 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); }