#include "term.h" /* Dynamic Intuition Text functions */ struct IntuiText *NewIText(text, left, top) char *text; int left, top; { struct IntuiText *newtext = NULL; newtext = (struct IntuiText *)AllocMem(sizeof(*newtext), MEMF_PUBLIC | MEMF_CLEAR); newtext->IText = (UBYTE *)text; newtext->FrontPen = 0; newtext->BackPen = 1; newtext->DrawMode = JAM2; newtext->LeftEdge = left; newtext->TopEdge = top; newtext->ITextFont = NULL; newtext->NextText = NULL; return(newtext); } struct IntuiText *AddIText(IText, text) struct IntuiText *IText; char *text; { struct IntuiText *newtext = NULL; newtext = (struct IntuiText *)AllocMem(sizeof(*newtext), MEMF_PUBLIC | MEMF_CLEAR); newtext->IText = (UBYTE *)text; newtext->FrontPen = IText->FrontPen; newtext->BackPen = IText->BackPen; newtext->DrawMode = IText->DrawMode; newtext->LeftEdge = IText->LeftEdge; newtext->TopEdge = IText->TopEdge + 11; newtext->ITextFont = IText->ITextFont; newtext->NextText = NULL; IText->NextText = newtext; return(newtext); } DisposeIText(IText) struct IntuiText *IText; { struct IntuiText *current, *next; current = IText; for(next = current->NextText; current != NULL; next = next->NextText){ FreeMem(current,sizeof(*current)); current = next; } } /* Dynamic Menu Constructor Functions */ #define InterMenuWidth 15 struct Menu *NewMenu(menuname, width, height) char *menuname; int width, height; { struct Menu *menu = NULL; menu = (struct Menu *)AllocMem(sizeof(*menu), MEMF_PUBLIC | MEMF_CLEAR); menu->NextMenu = NULL; menu->LeftEdge = 0; menu->TopEdge = 0; menu->Width = width; menu->Height = height; menu->Flags = MENUENABLED; menu->MenuName = menuname; menu->FirstItem = NULL; return(menu); } struct Menu *AddMenu(menus, MenuName, width, height) struct Menu *menus; char *MenuName; int width, height; { struct Menu *newmenu; newmenu = NewMenu(MenuName, width, height); newmenu->LeftEdge = menus->LeftEdge + menus->Width + InterMenuWidth; menus->NextMenu = newmenu; return(newmenu); } struct MenuItem *NewMenuItem(name, width, height) char *name; int width, height; { struct MenuItem *newitem = NULL; struct IntuiText *NewIText(), *newtext = NULL; newitem = (struct MenuItem *)AllocMem(sizeof(*newitem), MEMF_PUBLIC | MEMF_CLEAR); newtext = NewIText(name,0,1); newitem->NextItem = NULL; newitem->ItemFill = (APTR) newtext; newitem->LeftEdge = 0; newitem->TopEdge = 0; newitem->Width = width; newitem->Height = height; newitem->Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP; newitem->MutualExclude = 0; newitem->SelectFill = NULL; newitem->Command = 0; newitem->SubItem = NULL; newitem->NextSelect = 0; return(newitem); } struct MenuItem *AddNewMenuItem(menu, name, width, height) struct Menu *menu; char *name; int width, height; { struct MenuItem *newitem, *NewMenuItem(); newitem = NewMenuItem(name, width, height); menu->FirstItem = newitem; return(newitem); } struct MenuItem *AddItem(items, name) struct MenuItem *items; char *name; { struct MenuItem *newitem, *NewMenuItem(); newitem = NewMenuItem(name, items->Width, items->Height); newitem->TopEdge = items->TopEdge + items->Height; newitem->LeftEdge = items->LeftEdge; items->NextItem = newitem; return(newitem); } struct MenuItem *AddNewSubItem(item, name, width, height) struct MenuItem *item; char *name; int width, height; { struct MenuItem *newitem, *NewMenuItem(); newitem = NewMenuItem(name, width, height); item->SubItem = newitem; newitem->LeftEdge = item->Width; return(newitem); } DisposeItem(item) struct MenuItem *item; { DisposeIText((struct ItuiText *)item->ItemFill); FreeMem(item,sizeof(*item)); } DisposeItems(items) struct MenuItem *items; { struct MenuItem *current, *next; current = items; for(next = current->NextItem; current != NULL; next = next->NextItem){ DisposeItem(current); current = next; } } DisposeMenu(menu) struct Menu *menu; { DisposeItems(menu->FirstItem); FreeMem(menu,sizeof(*menu)); } DisposeMenus(menus) struct Menu *menus; { struct Menu *current, *next; current = menus; for(next = current->NextMenu; current != NULL; next = next->NextMenu){ DisposeMenu(current); current = next; } }