#pragma src "/usr/inferno/prefab" typedef struct PElement PElement; typedef struct PCompound PCompound; typedef struct Memimage Memimage; enum { Dirty, Clean }; enum Elementtype /* same as in prefab.m */ { EIcon, EText, ETitle, EHorizontal, EVertical, ESeparator, NEtypes }; enum Adjust /* same as in prefab.m */ { /* first arg: size of elements */ Adjpack = 10, /* leave alone, pack tightly */ Adjequal = 11, /* make equal */ Adjfill = 12, /* make equal, filling available space */ /* second arg: position of element within space */ Adjleft = 20, Adjup = 20, Adjcenter = 21, Adjright = 22, Adjdown = 22 }; enum { Maxchars = 128 /* maximum # chars in a word */ }; struct PElement { Prefab_Element e; Point drawpt; Prefab_Compound*highlight; List* first; List* last; List* vfirst; List* vlast; int nkids; int newline; int pkind; /* for error check against e.kind */ }; struct PCompound { Prefab_Compound c; Display* display; }; extern Type* TLayout; extern Type* TElement; extern Type* TCompound; PCompound* iconbox(Prefab_Environ*, Draw_Point, String*, Draw_Image*, Draw_Image*); PCompound* textbox(Prefab_Environ*, Draw_Rect, String*, String*); PCompound* layoutbox(Prefab_Environ*, Draw_Rect, String*, List*); PCompound* box(Prefab_Environ*, Draw_Point, Prefab_Element*, Prefab_Element*); PElement* separatorelement(Prefab_Environ*, Draw_Rect, Draw_Image*, Draw_Image*); PElement* iconelement(Prefab_Environ*, Draw_Rect, Draw_Image*, Draw_Image*); PElement* textelement(Prefab_Environ*, String*, Draw_Rect, enum Elementtype); PElement* layoutelement(Prefab_Environ*, List*, Draw_Rect, enum Elementtype); PElement* elistelement(Prefab_Environ*, Prefab_Element*, enum Elementtype); PElement* appendelist(Prefab_Element*, Prefab_Element*); void drawcompound(Prefab_Compound*); void redrawcompound(Image*, Rectangle, Prefab_Compound*); void refreshcompound(Image*, Rectangle, void*); void drawelement(Prefab_Element*, Image*, Rectangle, int, int); void translateelement(Prefab_Element*, Point); void adjustelement(Prefab_Element*, int, int); void highlightelement(Prefab_Element*, Image*, Prefab_Compound*, int); void clipelement(Prefab_Element*, Rectangle); void scrollelement(Prefab_Element*, Point, int*); int showelement(Prefab_Element*, Prefab_Element*); void edge(Prefab_Environ*, Image*, Draw_Rect, Draw_Rect); int fitrect(Rectangle*, Rectangle); Draw_Rect edgerect(Prefab_Environ*, Draw_Point, Draw_Rect*); List* prefabwrap(void*); List* listoflayout(Prefab_Style*, String*, int); extern PElement* lookupelement(Prefab_Element*); extern PCompound* lookupcompound(Prefab_Compound*); extern PElement* checkelement(Prefab_Element*); extern PCompound* checkcompound(Prefab_Compound*); extern int badenviron(Prefab_Environ*, int); extern PElement* mkelement(Prefab_Environ*, enum Elementtype); extern Point iconsize(Image*); extern void localrefreshcompound(Memimage*, Rectangle, void*);