/* * ICON2C.C */ #define VERSION "1.1" static char versiontag[]= "$VER: $Id: icon2c.c,v 1.1 1994/01/15 09:45:40 tf Exp $"; /****** Icon2C ****************************************** * * NAME * Icon2C -- Generate C sourcecode from an icon image (V36) * * SYNOPSIS * Icon2C NAME/A,QUIET/S,TO/K * * FUNCTION * Icon2C reads in given ".info" file and writes out well documented * and directly compilable C code. This code if compiled with a symbol * TEST defined (usual compiler option: -DTEST) will generate an * executable which writes back the icon image file to disk. This * allows you to modify any icon image to your own needs. * * INPUTS * NAME - name of the icon image file. A trailing ".info" * is optional but not required. * QUIET - If this switch is set then Icon2C will not print any * warnings. * TO - specifies the output file. If not specified the * standard output stream will be used. * * EXAMPLE * ;generate C code for the disk icon of the disk in DF0: * icon2c df0:disk quiet to ram:diskicon.c * * DISCLAIMER * This file is part of the Icon2C and OptIcon distribution. * * Icon2C and OptIcon are free software; you can redistribute them * and/or modify them under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 1 of * the License, or (at your option) any later version. * * Icon2C and Opticon are distributed in the hope that they will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with these programs; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * SEE ALSO * PatchIcons, OptIcon * ****************************************************************************** * * Compile w/ -DDEBUG to output more information at runtime */ #include #include #include #include #include #include #include #include #include #include #ifdef __GNUC__ /* suggest parentheses around assignment used as truth value */ #define if(assignment) if( (assignment) ) #endif /* __GNUC__ */ extern struct Library *OpenLibrary(STRPTR, ULONG); extern void CloseLibrary(struct Library *); extern struct RDArgs *ReadArgs(STRPTR, LONG *, struct RDArgs *); extern LONG IoErr(void); extern BOOL PrintFault(LONG, STRPTR); extern void FreeArgs(struct RDArgs *); extern struct DiskObject *GetDiskObject(char *); extern void FreeDiskObject(struct DiskObject *); struct IconBase *IconBase; char *whoami, *iname; /* argv[0], icon filename w/o ".info" */ int quiet= 0; FILE *fout; void pout(const char *fmt, ...) { va_list argp; va_start(argp,fmt); vfprintf(fout,fmt,argp); va_end(argp); } void warn(const char *fmt, ...) { if(!quiet) { va_list argp; va_start(argp,fmt); fprintf(stderr,"%s: %s.info: ",whoami, iname); vfprintf(stderr,(char *)fmt,argp); fprintf(stderr,"\n"); fflush(stderr); va_end(argp); } } void display_version_information(void) { static char license[]= "Icon2C is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published\n" "by the Free Software Foundation; either version 1 of the License,\n" "or (at your option) any later version.\n" "\n" "Icon2C is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with Icon2C; see the file COPYING. If not, write to the\n" "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n" ; puts("Icon2C Version " VERSION " (compiled " __DATE__ ", " __TIME__ ")\n" "(c)Copyright 1994 by Tobias Ferber, ukjg@dkauni2.bitnet\n"); puts(license); } #define oops(field,value) warn("unexpected value 0x%lx for %s",value,field) #define DISKOBJECT_NAME "icon" #define GADGETRENDER_NAME "gr" #define SELECTRENDER_NAME "sr" #define GADGET_NAME "g" #define TTARRAY_NAME "tt" /* ToolTypes array */ #define DRAWERDATA_NAME "dd" #define BEGIN_CODE(s) pout( \ "/*\n * code generated from \"%s.info\"\n */\n\n" \ "#include \n" \ "#include \n" \ "#include \n\n" \ ,s) #define END_CODE pout( \ "\n\n#ifdef TEST\n" \ "#include \n" \ "#include \n" \ "#include \n\n" \ "extern struct Library *OpenLibrary(STRPTR, ULONG);\n" \ "extern void CloseLibrary(struct Library *);\n" \ "extern LONG IoErr(void);\n" \ "extern BOOL PrintFault(LONG, STRPTR);\n" \ "extern BOOL PutDiskObject(char *, struct DiskObject *);\n\n" \ "struct IconBase *IconBase;\n\n" \ "main(int argc, char **argv)\n{\n" \ " if(argc == 2)\n" \ " {\n" \ " if( (IconBase= (struct IconBase *)OpenLibrary(ICONNAME,36)) )\n" \ " {\n" \ " if( !PutDiskObject(argv[1],&icon) )\n" \ " PrintFault(IoErr(),argv[1]);\n" \ " CloseLibrary(IconBase);\n" \ " }\n" \ " else printf(\"%%s: no %%s.\\n\",*argv,ICONNAME);\n" \ " }\n" \ " else printf(\"usage: %%s \\n\",*argv);\n" \ " exit( IoErr() );\n" \ "}\n" \ "#endif /* TEST */\n" \ ) #define BEGIN_STRUCT(s,n) pout("\nstruct %s %s = {\n",s,n) #define END_STRUCT pout("};\n") #define BEGIN_FIELD pout("\t") #define P_CONST(s) pout("%s",s) #define P_NUMVAL(n) pout("%ld",n) #define P_HEXVAL(x) pout("0x%lx",x) #define P_STRVAL(s) if(s) { pout("\""); if(*s) pout("%s",s); pout("\""); } else pout("NULL") #define END_FIELD(f) if(f && *f) pout(",\t/* %s */\n",f); else pout(",\n") #ifdef DEBUG void p_strN(int n, char *s) { if(s) { putchar('\"'); while(*s && 0Flags & GFLG_EXTENDED) ? "ExtGadget" : "Gadget"), name); BEGIN_FIELD; P_CONST("NULL"); if(g->NextGadget) pout(" /* 0x%lx */",g->NextGadget); END_FIELD("NextGadget"); BEGIN_FIELD; P_NUMVAL(g->LeftEdge); END_FIELD("LeftEdge"); BEGIN_FIELD; P_NUMVAL(g->TopEdge); END_FIELD("TopEdge"); BEGIN_FIELD; P_NUMVAL(g->Width); END_FIELD("Width"); BEGIN_FIELD; P_NUMVAL(g->Height); END_FIELD("Height"); BEGIN_FIELD; { UWORD f= g->Flags; if(f) { /* */ if(f & GADGBACKFILL) { P_CONST("GADGBACKFILL"); f &= ~GADGBACKFILL; if(f) P_CONST("|"); } /* */ /*if(f & GFLG_GADGHIGHBITS) { P_CONST("GFLG_GADGHIGHBITS"); f &= ~GFLG_GADGHIGHBITS; if(f) P_CONST("|"); }*/ if(f & GFLG_GADGHCOMP) { P_CONST("GFLG_GADGHCOMP"); f &= ~GFLG_GADGHCOMP; if(f) P_CONST("|"); } if(f & GFLG_GADGHBOX) { P_CONST("GFLG_GADGHBOX"); f &= ~GFLG_GADGHBOX; if(f) P_CONST("|"); } if(f & GFLG_GADGHIMAGE) { P_CONST("GFLG_GADGHIMAGE"); f &= ~GFLG_GADGHIMAGE; if(f) P_CONST("|"); } if(f & GFLG_GADGHNONE) { P_CONST("GFLG_GADGHNONE"); f &= ~GFLG_GADGHNONE; if(f) P_CONST("|"); } if(f & GFLG_GADGIMAGE) { P_CONST("GFLG_GADGIMAGE"); f &= ~GFLG_GADGIMAGE; if(f) P_CONST("|"); } if(f & GFLG_RELBOTTOM) { P_CONST("GFLG_RELBOTTOM"); f &= ~GFLG_RELBOTTOM; if(f) P_CONST("|"); } if(f & GFLG_RELRIGHT) { P_CONST("GFLG_RELRIGHT"); f &= ~GFLG_RELRIGHT; if(f) P_CONST("|"); } if(f & GFLG_RELWIDTH) { P_CONST("GFLG_RELWIDTH"); f &= ~GFLG_RELWIDTH; if(f) P_CONST("|"); } if(f & GFLG_RELHEIGHT) { P_CONST("GFLG_RELHEIGHT"); f &= ~GFLG_RELHEIGHT; if(f) P_CONST("|"); } if(f & GFLG_RELSPECIAL) { P_CONST("GFLG_RELSPECIAL"); f &= ~GFLG_RELSPECIAL; if(f) P_CONST("|"); } if(f & GFLG_SELECTED) { P_CONST("GFLG_SELECTED"); f &= ~GFLG_SELECTED; if(f) P_CONST("|"); } if(f & GFLG_DISABLED) { P_CONST("GFLG_DISABLED"); f &= ~GFLG_DISABLED; if(f) P_CONST("|"); } if(f & GFLG_LABELMASK) { P_CONST("GFLG_LABELMASK"); f &= ~GFLG_LABELMASK; if(f) P_CONST("|"); } if(f & GFLG_LABELITEXT) { P_CONST("GFLG_LABELITEXT"); f &= ~GFLG_LABELITEXT; if(f) P_CONST("|"); } if(f & GFLG_LABELSTRING) { P_CONST("GFLG_LABELSTRING"); f &= ~GFLG_LABELSTRING; if(f) P_CONST("|"); } if(f & GFLG_LABELIMAGE) { P_CONST("GFLG_LABELIMAGE"); f &= ~GFLG_LABELIMAGE; if(f) P_CONST("|"); } if(f & GFLG_TABCYCLE) { P_CONST("GFLG_TABCYCLE"); f &= ~GFLG_TABCYCLE; if(f) P_CONST("|"); } if(f & GFLG_STRINGEXTEND) { P_CONST("GFLG_STRINGEXTEND"); f &= ~GFLG_STRINGEXTEND; if(f) P_CONST("|"); } if(f & GFLG_IMAGEDISABLE) { P_CONST("GFLG_IMAGEDISABLE"); f &= ~GFLG_IMAGEDISABLE; if(f) P_CONST("|"); } if(f & GFLG_EXTENDED) { P_CONST("GFLG_EXTENDED"); f &= ~GFLG_EXTENDED; if(f) P_CONST("|"); } if(f) P_NUMVAL(f); } else P_CONST("NULL"); } END_FIELD("Flags"); BEGIN_FIELD; { UWORD a= g->Activation; if(a) { if(a & GFLG_LABELITEXT) { P_CONST("GFLG_LABELITEXT"); a &= ~GFLG_LABELITEXT; if(a) P_CONST("|"); } if(a & GACT_RELVERIFY) { P_CONST("GACT_RELVERIFY"); a &= ~GACT_RELVERIFY; if(a) P_CONST("|"); } if(a & GACT_IMMEDIATE) { P_CONST("GACT_IMMEDIATE"); a &= ~GACT_IMMEDIATE; if(a) P_CONST("|"); } if(a & GACT_ENDGADGET) { P_CONST("GACT_ENDGADGET"); a &= ~GACT_ENDGADGET; if(a) P_CONST("|"); } if(a & GACT_FOLLOWMOUSE) { P_CONST("GACT_FOLLOWMOUSE"); a &= ~GACT_FOLLOWMOUSE; if(a) P_CONST("|"); } if(a & GACT_RIGHTBORDER) { P_CONST("GACT_RIGHTBORDER"); a &= ~GACT_RIGHTBORDER; if(a) P_CONST("|"); } if(a & GACT_LEFTBORDER) { P_CONST("GACT_LEFTBORDER"); a &= ~GACT_LEFTBORDER; if(a) P_CONST("|"); } if(a & GACT_TOPBORDER) { P_CONST("GACT_TOPBORDER"); a &= ~GACT_TOPBORDER; if(a) P_CONST("|"); } if(a & GACT_BOTTOMBORDER) { P_CONST("GACT_BOTTOMBORDER"); a &= ~GACT_BOTTOMBORDER; if(a) P_CONST("|"); } if(a & GACT_BORDERSNIFF) { P_CONST("GACT_BORDERSNIFF"); a &= ~GACT_BORDERSNIFF; if(a) P_CONST("|"); } if(a & GACT_TOGGLESELECT) { P_CONST("GACT_TOGGLESELECT"); a &= ~GACT_TOGGLESELECT; if(a) P_CONST("|"); } if(a & GACT_BOOLEXTEND) { P_CONST("GACT_BOOLEXTEND"); a &= ~GACT_BOOLEXTEND; if(a) P_CONST("|"); } if(a & GACT_STRINGLEFT) { P_CONST("GACT_STRINGLEFT"); a &= ~GACT_STRINGLEFT; if(a) P_CONST("|"); } if(a & GACT_STRINGCENTER) { P_CONST("GACT_STRINGCENTER"); a &= ~GACT_STRINGCENTER; if(a) P_CONST("|"); } if(a & GACT_STRINGRIGHT) { P_CONST("GACT_STRINGRIGHT"); a &= ~GACT_STRINGRIGHT; if(a) P_CONST("|"); } if(a & GACT_LONGINT) { P_CONST("GACT_LONGINT"); a &= ~GACT_LONGINT; if(a) P_CONST("|"); } if(a & GACT_ALTKEYMAP) { P_CONST("GACT_ALTKEYMAP"); a &= ~GACT_ALTKEYMAP; if(a) P_CONST("|"); } if(a & GACT_STRINGEXTEND) { P_CONST("GACT_STRINGEXTEND"); a &= ~GACT_STRINGEXTEND; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a) P_NUMVAL(a); } else P_CONST("NULL"); } END_FIELD("Activation"); BEGIN_FIELD; { UWORD t= g->GadgetType; if(t) { if(t & GTYP_GADGETTYPE) { P_CONST("GTYP_GADGETTYPE"); t &= ~GTYP_GADGETTYPE; if(t) P_CONST("|"); } if(t & GTYP_SYSGADGET) { P_CONST("GTYP_SYSGADGET"); t &= ~GTYP_SYSGADGET; if(t) P_CONST("|"); } if(t & GTYP_SCRGADGET) { P_CONST("GTYP_SCRGADGET"); t &= ~GTYP_SCRGADGET; if(t) P_CONST("|"); } if(t & GTYP_GZZGADGET) { P_CONST("GTYP_GZZGADGET"); t &= ~GTYP_GZZGADGET; if(t) P_CONST("|"); } if(t & GTYP_REQGADGET) { P_CONST("GTYP_REQGADGET"); t &= ~GTYP_REQGADGET; if(t) P_CONST("|"); } if(t & GTYP_SIZING) { P_CONST("GTYP_SIZING"); t &= ~GTYP_SIZING; if(t) P_CONST("|"); } if(t & GTYP_WDRAGGING) { P_CONST("GTYP_WDRAGGING"); t &= ~GTYP_WDRAGGING; if(t) P_CONST("|"); } if(t & GTYP_SDRAGGING) { P_CONST("GTYP_SDRAGGING"); t &= ~GTYP_SDRAGGING; if(t) P_CONST("|"); } if(t & GTYP_WUPFRONT) { P_CONST("GTYP_WUPFRONT"); t &= ~GTYP_WUPFRONT; if(t) P_CONST("|"); } if(t & GTYP_SUPFRONT) { P_CONST("GTYP_SUPFRONT"); t &= ~GTYP_SUPFRONT; if(t) P_CONST("|"); } if(t & GTYP_WDOWNBACK) { P_CONST("GTYP_WDOWNBACK"); t &= ~GTYP_WDOWNBACK; if(t) P_CONST("|"); } if(t & GTYP_SDOWNBACK) { P_CONST("GTYP_SDOWNBACK"); t &= ~GTYP_SDOWNBACK; if(t) P_CONST("|"); } if(t & GTYP_CLOSE) { P_CONST("GTYP_CLOSE"); t &= ~GTYP_CLOSE; if(t) P_CONST("|"); } if(t & GTYP_BOOLGADGET) { P_CONST("GTYP_BOOLGADGET"); t &= ~GTYP_BOOLGADGET; if(t) P_CONST("|"); } if(t & GTYP_GADGET0002) { P_CONST("GTYP_GADGET0002"); t &= ~GTYP_GADGET0002; if(t) P_CONST("|"); } if(t & GTYP_PROPGADGET) { P_CONST("GTYP_PROPGADGET"); t &= ~GTYP_PROPGADGET; if(t) P_CONST("|"); } if(t & GTYP_STRGADGET) { P_CONST("GTYP_STRGADGET"); t &= ~GTYP_STRGADGET; if(t) P_CONST("|"); } if(t & GTYP_CUSTOMGADGET) { P_CONST("GTYP_CUSTOMGADGET"); t &= ~GTYP_CUSTOMGADGET; if(t) P_CONST("|"); } if(t & GTYP_GTYPEMASK) { P_CONST("GTYP_GTYPEMASK"); t &= ~GTYP_GTYPEMASK; if(t) P_CONST("|"); } if(t) P_NUMVAL(t); } else P_CONST("NULL"); } END_FIELD("GadgetType"); BEGIN_FIELD; if(g->GadgetRender) P_CONST("(APTR)&" GADGETRENDER_NAME); else P_CONST("NULL"); END_FIELD("GadgetRender"); BEGIN_FIELD; if(g->SelectRender) P_CONST("(APTR)&" SELECTRENDER_NAME); else P_CONST("NULL"); END_FIELD("SelectRender"); BEGIN_FIELD; P_CONST("NULL"); if(g->GadgetText) pout(" /* 0x%lx */",g->GadgetText); END_FIELD("GadgetText"); BEGIN_FIELD; P_NUMVAL(g->MutualExclude); END_FIELD("MutualExclude"); BEGIN_FIELD; P_CONST("NULL"); if(g->SpecialInfo) pout(" /* 0x%lx */",g->SpecialInfo); END_FIELD("SpecialInfo"); BEGIN_FIELD; P_NUMVAL(g->GadgetID); END_FIELD("GadgetID"); BEGIN_FIELD; { LONG ud= (LONG)g->UserData; LONG dr= ud & WB_DISKREVISIONMASK; pout("(APTR)"); if(ud != dr) { P_NUMVAL(ud); if(dr) P_CONST("|"); } if(dr == WB_DISKREVISION) P_CONST("WB_DISKREVISION"); else P_NUMVAL(dr); } END_FIELD("UserData"); if(g->Flags & GFLG_EXTENDED) { struct ExtGadget *eg= (struct ExtGadget *)g; BEGIN_FIELD; { ULONG m= eg->MoreFlags; if(m) { if(m & GMORE_BOUNDS) { P_CONST("GMORE_BOUNDS"); m &= ~GMORE_BOUNDS; if(m) P_CONST("|"); } if(m & GMORE_GADGETHELP) { P_CONST("GMORE_GADGETHELP"); m &= ~GMORE_GADGETHELP; if(m) P_CONST("|"); } if(m & GMORE_SCROLLRASTER) { P_CONST("GMORE_SCROLLRASTER"); m &= ~GMORE_SCROLLRASTER; if(m) P_CONST("|"); } if(m) P_NUMVAL(m); } else P_CONST("NULL"); } END_FIELD("MoreFlags"); BEGIN_FIELD; P_NUMVAL(eg->BoundsLeftEdge); END_FIELD("BoundsLeftEdge"); BEGIN_FIELD; P_NUMVAL(eg->BoundsTopEdge); END_FIELD("BoundsTopEdge"); BEGIN_FIELD; P_NUMVAL(eg->BoundsWidth); END_FIELD("BoundsWidth"); BEGIN_FIELD; P_NUMVAL(eg->BoundsHeight); END_FIELD("BoundsHeight"); } END_STRUCT; pout("\n#endif /* UNDEFINED */\n"); } #endif /* DEBUG */ void p_DrawerData(struct DrawerData *dd, char *name) { struct NewWindow *nw= &dd->dd_NewWindow; #ifdef DEBUG if(nw->FirstGadget) p_Gadget(nw->FirstGadget, ""); #endif /* DEBUG */ BEGIN_STRUCT("DrawerData", name); BEGIN_FIELD; P_NUMVAL(nw->LeftEdge); END_FIELD("dd_NewWindow.LeftEdge"); BEGIN_FIELD; P_NUMVAL(nw->TopEdge); END_FIELD("dd_NewWindow.TopEdge"); BEGIN_FIELD; P_NUMVAL(nw->Width); END_FIELD("dd_NewWindow.Width"); BEGIN_FIELD; P_NUMVAL(nw->Height); END_FIELD("dd_NewWindow.Height"); BEGIN_FIELD; P_NUMVAL(nw->DetailPen); END_FIELD("dd_NewWindow.DetailPen"); BEGIN_FIELD; P_NUMVAL(nw->BlockPen); END_FIELD("dd_NewWindow.BlockPen"); BEGIN_FIELD; { ULONG f= nw->IDCMPFlags; if(f) { if(f & IDCMP_SIZEVERIFY) { P_CONST("IDCMP_SIZEVERIFY"); f &= ~IDCMP_SIZEVERIFY; if(f) P_CONST("|"); } if(f & IDCMP_NEWSIZE) { P_CONST("IDCMP_NEWSIZE"); f &= ~IDCMP_NEWSIZE; if(f) P_CONST("|"); } if(f & IDCMP_REFRESHWINDOW) { P_CONST("IDCMP_REFRESHWINDOW"); f &= ~IDCMP_REFRESHWINDOW; if(f) P_CONST("|"); } if(f & IDCMP_MOUSEBUTTONS) { P_CONST("IDCMP_MOUSEBUTTONS"); f &= ~IDCMP_MOUSEBUTTONS; if(f) P_CONST("|"); } if(f & IDCMP_MOUSEMOVE) { P_CONST("IDCMP_MOUSEMOVE"); f &= ~IDCMP_MOUSEMOVE; if(f) P_CONST("|"); } if(f & IDCMP_GADGETDOWN) { P_CONST("IDCMP_GADGETDOWN"); f &= ~IDCMP_GADGETDOWN; if(f) P_CONST("|"); } if(f & IDCMP_GADGETUP) { P_CONST("IDCMP_GADGETUP"); f &= ~IDCMP_GADGETUP; if(f) P_CONST("|"); } if(f & IDCMP_REQSET) { P_CONST("IDCMP_REQSET"); f &= ~IDCMP_REQSET; if(f) P_CONST("|"); } if(f & IDCMP_MENUPICK) { P_CONST("IDCMP_MENUPICK"); f &= ~IDCMP_MENUPICK; if(f) P_CONST("|"); } if(f & IDCMP_CLOSEWINDOW) { P_CONST("IDCMP_CLOSEWINDOW"); f &= ~IDCMP_CLOSEWINDOW; if(f) P_CONST("|"); } if(f & IDCMP_RAWKEY) { P_CONST("IDCMP_RAWKEY"); f &= ~IDCMP_RAWKEY; if(f) P_CONST("|"); } if(f & IDCMP_REQVERIFY) { P_CONST("IDCMP_REQVERIFY"); f &= ~IDCMP_REQVERIFY; if(f) P_CONST("|"); } if(f & IDCMP_REQCLEAR) { P_CONST("IDCMP_REQCLEAR"); f &= ~IDCMP_REQCLEAR; if(f) P_CONST("|"); } if(f & IDCMP_MENUVERIFY) { P_CONST("IDCMP_MENUVERIFY"); f &= ~IDCMP_MENUVERIFY; if(f) P_CONST("|"); } if(f & IDCMP_NEWPREFS) { P_CONST("IDCMP_NEWPREFS"); f &= ~IDCMP_NEWPREFS; if(f) P_CONST("|"); } if(f & IDCMP_DISKINSERTED) { P_CONST("IDCMP_DISKINSERTED"); f &= ~IDCMP_DISKINSERTED; if(f) P_CONST("|"); } if(f & IDCMP_DISKREMOVED) { P_CONST("IDCMP_DISKREMOVED"); f &= ~IDCMP_DISKREMOVED; if(f) P_CONST("|"); } if(f & IDCMP_WBENCHMESSAGE) { P_CONST("IDCMP_WBENCHMESSAGE"); f &= ~IDCMP_WBENCHMESSAGE; if(f) P_CONST("|"); } if(f & IDCMP_ACTIVEWINDOW) { P_CONST("IDCMP_ACTIVEWINDOW"); f &= ~IDCMP_ACTIVEWINDOW; if(f) P_CONST("|"); } if(f & IDCMP_INACTIVEWINDOW) { P_CONST("IDCMP_INACTIVEWINDOW"); f &= ~IDCMP_INACTIVEWINDOW; if(f) P_CONST("|"); } if(f & IDCMP_DELTAMOVE) { P_CONST("IDCMP_DELTAMOVE"); f &= ~IDCMP_DELTAMOVE; if(f) P_CONST("|"); } if(f & IDCMP_VANILLAKEY) { P_CONST("IDCMP_VANILLAKEY"); f &= ~IDCMP_VANILLAKEY; if(f) P_CONST("|"); } if(f & IDCMP_INTUITICKS) { P_CONST("IDCMP_INTUITICKS"); f &= ~IDCMP_INTUITICKS; if(f) P_CONST("|"); } if(f & IDCMP_IDCMPUPDATE) { P_CONST("IDCMP_IDCMPUPDATE"); f &= ~IDCMP_IDCMPUPDATE; if(f) P_CONST("|"); } if(f & IDCMP_MENUHELP) { P_CONST("IDCMP_MENUHELP"); f &= ~IDCMP_MENUHELP; if(f) P_CONST("|"); } if(f & IDCMP_CHANGEWINDOW) { P_CONST("IDCMP_CHANGEWINDOW"); f &= ~IDCMP_CHANGEWINDOW; if(f) P_CONST("|"); } if(f & IDCMP_GADGETHELP) { P_CONST("IDCMP_GADGETHELP"); f &= ~IDCMP_GADGETHELP; if(f) P_CONST("|"); } if(f & IDCMP_LONELYMESSAGE) { P_CONST("IDCMP_LONELYMESSAGE"); f &= ~IDCMP_LONELYMESSAGE; if(f) P_CONST("|"); } if(f) P_NUMVAL(f); } else P_CONST("NULL"); } END_FIELD("dd_NewWindow.IDCMPFlags"); BEGIN_FIELD; { ULONG f= nw->Flags; if(f) { if(f & WFLG_SIZEGADGET) { P_CONST("WFLG_SIZEGADGET"); f &= ~WFLG_SIZEGADGET; if(f) P_CONST("|"); } if(f & WFLG_DRAGBAR) { P_CONST("WFLG_DRAGBAR"); f &= ~WFLG_DRAGBAR; if(f) P_CONST("|"); } if(f & WFLG_DEPTHGADGET) { P_CONST("WFLG_DEPTHGADGET"); f &= ~WFLG_DEPTHGADGET; if(f) P_CONST("|"); } if(f & WFLG_CLOSEGADGET) { P_CONST("WFLG_CLOSEGADGET"); f &= ~WFLG_CLOSEGADGET; if(f) P_CONST("|"); } if(f & WFLG_SIZEBRIGHT) { P_CONST("WFLG_SIZEBRIGHT"); f &= ~WFLG_SIZEBRIGHT; if(f) P_CONST("|"); } if(f & WFLG_SIZEBBOTTOM) { P_CONST("WFLG_SIZEBBOTTOM"); f &= ~WFLG_SIZEBBOTTOM; if(f) P_CONST("|"); } /*if(f & WFLG_REFRESHBITS) { P_CONST("WFLG_REFRESHBITS"); f &= ~WFLG_REFRESHBITS; if(f) P_CONST("|"); }*/ if(f & WFLG_SMART_REFRESH) { P_CONST("WFLG_SMART_REFRESH"); f &= ~WFLG_SMART_REFRESH; if(f) P_CONST("|"); } if(f & WFLG_SIMPLE_REFRESH) { P_CONST("WFLG_SIMPLE_REFRESH"); f &= ~WFLG_SIMPLE_REFRESH; if(f) P_CONST("|"); } if(f & WFLG_SUPER_BITMAP) { P_CONST("WFLG_SUPER_BITMAP"); f &= ~WFLG_SUPER_BITMAP; if(f) P_CONST("|"); } if(f & WFLG_OTHER_REFRESH) { P_CONST("WFLG_OTHER_REFRESH"); f &= ~WFLG_OTHER_REFRESH; if(f) P_CONST("|"); } if(f & WFLG_BACKDROP) { P_CONST("WFLG_BACKDROP"); f &= ~WFLG_BACKDROP; if(f) P_CONST("|"); } if(f & WFLG_REPORTMOUSE) { P_CONST("WFLG_REPORTMOUSE"); f &= ~WFLG_REPORTMOUSE; if(f) P_CONST("|"); } if(f & WFLG_GIMMEZEROZERO) { P_CONST("WFLG_GIMMEZEROZERO"); f &= ~WFLG_GIMMEZEROZERO; if(f) P_CONST("|"); } if(f & WFLG_BORDERLESS) { P_CONST("WFLG_BORDERLESS"); f &= ~WFLG_BORDERLESS; if(f) P_CONST("|"); } if(f & WFLG_ACTIVATE) { P_CONST("WFLG_ACTIVATE"); f &= ~WFLG_ACTIVATE; if(f) P_CONST("|"); } if(f & WFLG_RMBTRAP) { P_CONST("WFLG_RMBTRAP"); f &= ~WFLG_RMBTRAP; if(f) P_CONST("|"); } if(f & WFLG_NOCAREREFRESH) { P_CONST("WFLG_NOCAREREFRESH"); f &= ~WFLG_NOCAREREFRESH; if(f) P_CONST("|"); } if(f & WFLG_NW_EXTENDED) { P_CONST("WFLG_NW_EXTENDED"); f &= ~WFLG_NW_EXTENDED; if(f) P_CONST("|"); } if(f & WFLG_NEWLOOKMENUS) { P_CONST("WFLG_NEWLOOKMENUS"); f &= ~WFLG_NEWLOOKMENUS; if(f) P_CONST("|"); } if(f & WFLG_WINDOWACTIVE) { P_CONST("WFLG_WINDOWACTIVE"); f &= ~WFLG_WINDOWACTIVE; if(f) P_CONST("|"); } if(f & WFLG_INREQUEST) { P_CONST("WFLG_INREQUEST"); f &= ~WFLG_INREQUEST; if(f) P_CONST("|"); } if(f & WFLG_MENUSTATE) { P_CONST("WFLG_MENUSTATE"); f &= ~WFLG_MENUSTATE; if(f) P_CONST("|"); } if(f & WFLG_WINDOWREFRESH) { P_CONST("WFLG_WINDOWREFRESH"); f &= ~WFLG_WINDOWREFRESH; if(f) P_CONST("|"); } if(f & WFLG_WBENCHWINDOW) { P_CONST("WFLG_WBENCHWINDOW"); f &= ~WFLG_WBENCHWINDOW; if(f) P_CONST("|"); } if(f & WFLG_WINDOWTICKED) { P_CONST("WFLG_WINDOWTICKED"); f &= ~WFLG_WINDOWTICKED; if(f) P_CONST("|"); } if(f & WFLG_VISITOR) { P_CONST("WFLG_VISITOR"); f &= ~WFLG_VISITOR; if(f) P_CONST("|"); } if(f & WFLG_ZOOMED) { P_CONST("WFLG_ZOOMED"); f &= ~WFLG_ZOOMED; if(f) P_CONST("|"); } if(f & WFLG_HASZOOM) { P_CONST("WFLG_HASZOOM"); f &= ~WFLG_HASZOOM; if(f) P_CONST("|"); } if(f) P_NUMVAL(f); } else P_CONST("NULL"); } END_FIELD("dd_NewWindow.Flags"); BEGIN_FIELD; P_CONST("NULL"); if(nw->FirstGadget) { pout(" /* 0x%lx */",nw->FirstGadget); oops("DrawerData.dd_NewWindow.FirstGadget",nw->FirstGadget); } END_FIELD("dd_NewWindow.FirstGadget"); BEGIN_FIELD; P_CONST("NULL"); if(nw->CheckMark) { pout(" /* 0x%lx */",nw->CheckMark); oops("DrawerData.dd_NewWindow.CheckMark",nw->CheckMark); } END_FIELD("dd_NewWindow.CheckMark"); BEGIN_FIELD; P_CONST("NULL"); if(nw->Title) { #ifdef DEBUG pout(" /* "); p_strN(80,nw->Title); pout(" */"); #endif /* DEBUG */ pout(" /* 0x%lx */",nw->Title); oops("DrawerData.dd_NewWindow.Title",nw->Title); } END_FIELD("dd_NewWindow.Title"); BEGIN_FIELD; P_CONST("NULL"); if(nw->Screen) { pout(" /* 0x%lx */",nw->Screen); oops("DrawerData.dd_NewWindow.Screen",nw->Screen); } END_FIELD("dd_NewWindow.Screen"); BEGIN_FIELD; P_CONST("NULL"); if(nw->BitMap) { pout(" /* 0x%lx */",nw->BitMap); oops("DrawerData.dd_NewWindow.BitMap",nw->BitMap); } END_FIELD("dd_NewWindow.BitMap"); BEGIN_FIELD; P_NUMVAL(nw->MinWidth); END_FIELD("dd_NewWindow.MinWidth"); BEGIN_FIELD; P_NUMVAL(nw->MinHeight); END_FIELD("dd_NewWindow.MinHeight"); BEGIN_FIELD; P_NUMVAL(nw->MaxWidth); END_FIELD("dd_NewWindow.MaxWidth"); BEGIN_FIELD; P_NUMVAL(nw->MinWidth); END_FIELD("dd_NewWindow.MaxHeight"); BEGIN_FIELD; { UWORD t= nw->Type; if(t) { if(t & WBENCHSCREEN) { P_CONST("WBENCHSCREEN"); t &= ~WBENCHSCREEN; if(t) P_CONST("|"); } if(t & PUBLICSCREEN) { P_CONST("PUBLICSCREEN"); t &= ~PUBLICSCREEN; if(t) P_CONST("|"); } if(t & CUSTOMSCREEN) { P_CONST("CUSTOMSCREEN"); t &= ~CUSTOMSCREEN; if(t) P_CONST("|"); } if(t & SHOWTITLE) { P_CONST("SHOWTITLE"); t &= ~SHOWTITLE; if(t) P_CONST("|"); } if(t & BEEPING) { P_CONST("BEEPING"); t &= ~BEEPING; if(t) P_CONST("|"); } if(t & CUSTOMBITMAP) { P_CONST("CUSTOMBITMAP"); t &= ~CUSTOMBITMAP; if(t) P_CONST("|"); } if(t & SCREENBEHIND) { P_CONST("SCREENBEHIND"); t &= ~SCREENBEHIND; if(t) P_CONST("|"); } if(t & SCREENQUIET) { P_CONST("SCREENQUIET"); t &= ~SCREENQUIET; if(t) P_CONST("|"); } if(t & SCREENHIRES) { P_CONST("SCREENHIRES"); t &= ~SCREENHIRES; if(t) P_CONST("|"); } if(t & NS_EXTENDED) { P_CONST("NS_EXTENDED"); t &= ~NS_EXTENDED; if(t) P_CONST("|"); } if(t & AUTOSCROLL) { P_CONST("AUTOSCROLL"); t &= ~AUTOSCROLL; if(t) P_CONST("|"); } if(t & PENSHARED) { P_CONST("PENSHARED"); t &= ~PENSHARED; if(t) P_CONST("|"); } if(t) P_NUMVAL(t); } else P_CONST("NULL"); } END_FIELD("dd_NewWindow.Type"); /**/ BEGIN_FIELD; if(dd->dd_CurrentX == NO_ICON_POSITION) P_CONST("NO_ICON_POSITION"); else P_NUMVAL(dd->dd_CurrentX); END_FIELD("dd_CurrentX"); BEGIN_FIELD; if(dd->dd_CurrentY == NO_ICON_POSITION) P_CONST("NO_ICON_POSITION"); else P_NUMVAL(dd->dd_CurrentY); END_FIELD("dd_CurrentY"); BEGIN_FIELD; P_NUMVAL(dd->dd_Flags); END_FIELD("dd_Flags"); BEGIN_FIELD; P_NUMVAL(dd->dd_ViewModes); END_FIELD("dd_ViewModes"); END_STRUCT; }; void p_ImageData(struct Image *i, char *name) { WORD w,h,d; UWORD *p= i->ImageData; pout("\nUWORD %s_data[] = {\n",name); for(d=0; dDepth; d++) { if(i->PlanePick & (1L << d)) { pout("\n\t/* plane %d */\n\n",d); for(h=0; hHeight; h++) { pout("\t"); for(w=0; w< (i->Width + 15)/16; w++) { pout("0x%04x, ", (UWORD)(*p)); ++p; } pout("\n"); } } else pout("\n\t/* plane %d is set to %d by %s.PlaneOnOff */\n\n",d, ( (i->PlaneOnOff & (1L<> d ),name); } pout("};\n"); } void p_Image(struct Image *i, char *name) { if(i->ImageData) p_ImageData(i,name); BEGIN_STRUCT("Image", name); BEGIN_FIELD; P_NUMVAL(i->LeftEdge); END_FIELD("LeftEdge"); BEGIN_FIELD; P_NUMVAL(i->TopEdge); END_FIELD("TopEdge"); BEGIN_FIELD; P_NUMVAL(i->Width); END_FIELD("Width"); BEGIN_FIELD; P_NUMVAL(i->Height); END_FIELD("Height"); BEGIN_FIELD; P_NUMVAL(i->Depth); END_FIELD("Depth"); BEGIN_FIELD; if(i->ImageData) pout("%s_data",name); else P_CONST("NULL"); END_FIELD("ImageData"); BEGIN_FIELD; P_NUMVAL(i->PlanePick); if( i->PlanePick & ~((1L << i->Depth) -1L) ) { pout(" /* illegal */"); warn("illegal value %d for Image.PlanePick (depth=%d)",i->PlanePick,i->Depth); } END_FIELD("PlanePick"); BEGIN_FIELD; P_NUMVAL(i->PlaneOnOff); END_FIELD("PlaneOnOff"); BEGIN_FIELD; P_CONST("NULL"); if(i->NextImage) { pout(" /* 0x%lx */", i->NextImage); oops("Image.NextImage",i->NextImage); } END_FIELD("NextImage"); END_STRUCT; } void p_ToolTypes(char **tt, char *name) { pout("\nchar *%s[] = %s", name, tt ? "{\n" : "(char **)NULL"); if(tt) { while(*tt) { pout("\t\"%s\",\n",*tt++); } pout("\tNULL\n}"); } pout(";\n"); } void p_DiskObject(struct DiskObject *icon, char *name) { BEGIN_STRUCT("DiskObject", name); BEGIN_FIELD; if(icon->do_Magic == WB_DISKMAGIC) P_CONST("WB_DISKMAGIC"); else P_NUMVAL(icon->do_Magic); END_FIELD("do_Magic"); BEGIN_FIELD; if(icon->do_Version == WB_DISKVERSION) P_CONST("WB_DISKVERSION"); else P_NUMVAL(WB_DISKVERSION); END_FIELD("do_Version"); /* do_Gadget */ { struct Gadget *g= &icon->do_Gadget; BEGIN_FIELD; P_CONST("NULL"); if(g->NextGadget) { pout(" /* 0x%lx */",g->NextGadget); oops("DiskObject.do_Gadget.NextGadget",g->NextGadget); } END_FIELD("do_Gadget.NextGadget"); BEGIN_FIELD; P_NUMVAL(g->LeftEdge); END_FIELD("do_Gadget.LeftEdge"); BEGIN_FIELD; P_NUMVAL(g->TopEdge); END_FIELD("do_Gadget.TopEdge"); BEGIN_FIELD; P_NUMVAL(g->Width); END_FIELD("do_Gadget.Width"); BEGIN_FIELD; P_NUMVAL(g->Height); END_FIELD("do_Gadget.Height"); BEGIN_FIELD; { UWORD f= g->Flags; if(f) { /* */ if(f & GADGBACKFILL) { P_CONST("GADGBACKFILL"); f &= ~GADGBACKFILL; if(f) P_CONST("|"); } /* */ /*if(f & GFLG_GADGHIGHBITS) { P_CONST("GFLG_GADGHIGHBITS"); f &= ~GFLG_GADGHIGHBITS; if(f) P_CONST("|"); }*/ if(f & GFLG_GADGHCOMP) { P_CONST("GFLG_GADGHCOMP"); f &= ~GFLG_GADGHCOMP; if(f) P_CONST("|"); } if(f & GFLG_GADGHBOX) { P_CONST("GFLG_GADGHBOX"); f &= ~GFLG_GADGHBOX; if(f) P_CONST("|"); } if(f & GFLG_GADGHIMAGE) { P_CONST("GFLG_GADGHIMAGE"); f &= ~GFLG_GADGHIMAGE; if(f) P_CONST("|"); } if(f & GFLG_GADGHNONE) { P_CONST("GFLG_GADGHNONE"); f &= ~GFLG_GADGHNONE; if(f) P_CONST("|"); } if(f & GFLG_GADGIMAGE) { P_CONST("GFLG_GADGIMAGE"); f &= ~GFLG_GADGIMAGE; if(f) P_CONST("|"); } if(f & GFLG_RELBOTTOM) { P_CONST("GFLG_RELBOTTOM"); f &= ~GFLG_RELBOTTOM; if(f) P_CONST("|"); } if(f & GFLG_RELRIGHT) { P_CONST("GFLG_RELRIGHT"); f &= ~GFLG_RELRIGHT; if(f) P_CONST("|"); } if(f & GFLG_RELWIDTH) { P_CONST("GFLG_RELWIDTH"); f &= ~GFLG_RELWIDTH; if(f) P_CONST("|"); } if(f & GFLG_RELHEIGHT) { P_CONST("GFLG_RELHEIGHT"); f &= ~GFLG_RELHEIGHT; if(f) P_CONST("|"); } if(f & GFLG_RELSPECIAL) { P_CONST("GFLG_RELSPECIAL"); f &= ~GFLG_RELSPECIAL; if(f) P_CONST("|"); } if(f & GFLG_SELECTED) { P_CONST("GFLG_SELECTED"); f &= ~GFLG_SELECTED; if(f) P_CONST("|"); } if(f & GFLG_DISABLED) { P_CONST("GFLG_DISABLED"); f &= ~GFLG_DISABLED; if(f) P_CONST("|"); } if(f & GFLG_LABELMASK) { P_CONST("GFLG_LABELMASK"); f &= ~GFLG_LABELMASK; if(f) P_CONST("|"); } if(f & GFLG_LABELITEXT) { P_CONST("GFLG_LABELITEXT"); f &= ~GFLG_LABELITEXT; if(f) P_CONST("|"); } if(f & GFLG_LABELSTRING) { P_CONST("GFLG_LABELSTRING"); f &= ~GFLG_LABELSTRING; if(f) P_CONST("|"); } if(f & GFLG_LABELIMAGE) { P_CONST("GFLG_LABELIMAGE"); f &= ~GFLG_LABELIMAGE; if(f) P_CONST("|"); } if(f & GFLG_TABCYCLE) { P_CONST("GFLG_TABCYCLE"); f &= ~GFLG_TABCYCLE; if(f) P_CONST("|"); } if(f & GFLG_STRINGEXTEND) { P_CONST("GFLG_STRINGEXTEND"); f &= ~GFLG_STRINGEXTEND; if(f) P_CONST("|"); } if(f & GFLG_IMAGEDISABLE) { P_CONST("GFLG_IMAGEDISABLE"); f &= ~GFLG_IMAGEDISABLE; if(f) P_CONST("|"); } if(f & GFLG_EXTENDED) { P_CONST("GFLG_EXTENDED"); f &= ~GFLG_EXTENDED; if(f) P_CONST("|"); } if(f) P_NUMVAL(f); } else P_CONST("NULL"); } END_FIELD("do_Gadget.Flags"); BEGIN_FIELD; { UWORD a= g->Activation; if(a) { if(a & GFLG_LABELITEXT) { P_CONST("GFLG_LABELITEXT"); a &= ~GFLG_LABELITEXT; if(a) P_CONST("|"); } if(a & GACT_RELVERIFY) { P_CONST("GACT_RELVERIFY"); a &= ~GACT_RELVERIFY; if(a) P_CONST("|"); } if(a & GACT_IMMEDIATE) { P_CONST("GACT_IMMEDIATE"); a &= ~GACT_IMMEDIATE; if(a) P_CONST("|"); } if(a & GACT_ENDGADGET) { P_CONST("GACT_ENDGADGET"); a &= ~GACT_ENDGADGET; if(a) P_CONST("|"); } if(a & GACT_FOLLOWMOUSE) { P_CONST("GACT_FOLLOWMOUSE"); a &= ~GACT_FOLLOWMOUSE; if(a) P_CONST("|"); } if(a & GACT_RIGHTBORDER) { P_CONST("GACT_RIGHTBORDER"); a &= ~GACT_RIGHTBORDER; if(a) P_CONST("|"); } if(a & GACT_LEFTBORDER) { P_CONST("GACT_LEFTBORDER"); a &= ~GACT_LEFTBORDER; if(a) P_CONST("|"); } if(a & GACT_TOPBORDER) { P_CONST("GACT_TOPBORDER"); a &= ~GACT_TOPBORDER; if(a) P_CONST("|"); } if(a & GACT_BOTTOMBORDER) { P_CONST("GACT_BOTTOMBORDER"); a &= ~GACT_BOTTOMBORDER; if(a) P_CONST("|"); } if(a & GACT_BORDERSNIFF) { P_CONST("GACT_BORDERSNIFF"); a &= ~GACT_BORDERSNIFF; if(a) P_CONST("|"); } if(a & GACT_TOGGLESELECT) { P_CONST("GACT_TOGGLESELECT"); a &= ~GACT_TOGGLESELECT; if(a) P_CONST("|"); } if(a & GACT_BOOLEXTEND) { P_CONST("GACT_BOOLEXTEND"); a &= ~GACT_BOOLEXTEND; if(a) P_CONST("|"); } if(a & GACT_STRINGLEFT) { P_CONST("GACT_STRINGLEFT"); a &= ~GACT_STRINGLEFT; if(a) P_CONST("|"); } if(a & GACT_STRINGCENTER) { P_CONST("GACT_STRINGCENTER"); a &= ~GACT_STRINGCENTER; if(a) P_CONST("|"); } if(a & GACT_STRINGRIGHT) { P_CONST("GACT_STRINGRIGHT"); a &= ~GACT_STRINGRIGHT; if(a) P_CONST("|"); } if(a & GACT_LONGINT) { P_CONST("GACT_LONGINT"); a &= ~GACT_LONGINT; if(a) P_CONST("|"); } if(a & GACT_ALTKEYMAP) { P_CONST("GACT_ALTKEYMAP"); a &= ~GACT_ALTKEYMAP; if(a) P_CONST("|"); } if(a & GACT_STRINGEXTEND) { P_CONST("GACT_STRINGEXTEND"); a &= ~GACT_STRINGEXTEND; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a & GACT_ACTIVEGADGET) { P_CONST("GACT_ACTIVEGADGET"); a &= ~GACT_ACTIVEGADGET; if(a) P_CONST("|"); } if(a) P_NUMVAL(a); } else P_CONST("NULL"); } END_FIELD("do_Gadget.Activation"); BEGIN_FIELD; { UWORD t= g->GadgetType; if(t) { if(t & GTYP_GADGETTYPE) { P_CONST("GTYP_GADGETTYPE"); t &= ~GTYP_GADGETTYPE; if(t) P_CONST("|"); } if(t & GTYP_SYSGADGET) { P_CONST("GTYP_SYSGADGET"); t &= ~GTYP_SYSGADGET; if(t) P_CONST("|"); } if(t & GTYP_SCRGADGET) { P_CONST("GTYP_SCRGADGET"); t &= ~GTYP_SCRGADGET; if(t) P_CONST("|"); } if(t & GTYP_GZZGADGET) { P_CONST("GTYP_GZZGADGET"); t &= ~GTYP_GZZGADGET; if(t) P_CONST("|"); } if(t & GTYP_REQGADGET) { P_CONST("GTYP_REQGADGET"); t &= ~GTYP_REQGADGET; if(t) P_CONST("|"); } if(t & GTYP_SIZING) { P_CONST("GTYP_SIZING"); t &= ~GTYP_SIZING; if(t) P_CONST("|"); } if(t & GTYP_WDRAGGING) { P_CONST("GTYP_WDRAGGING"); t &= ~GTYP_WDRAGGING; if(t) P_CONST("|"); } if(t & GTYP_SDRAGGING) { P_CONST("GTYP_SDRAGGING"); t &= ~GTYP_SDRAGGING; if(t) P_CONST("|"); } if(t & GTYP_WUPFRONT) { P_CONST("GTYP_WUPFRONT"); t &= ~GTYP_WUPFRONT; if(t) P_CONST("|"); } if(t & GTYP_SUPFRONT) { P_CONST("GTYP_SUPFRONT"); t &= ~GTYP_SUPFRONT; if(t) P_CONST("|"); } if(t & GTYP_WDOWNBACK) { P_CONST("GTYP_WDOWNBACK"); t &= ~GTYP_WDOWNBACK; if(t) P_CONST("|"); } if(t & GTYP_SDOWNBACK) { P_CONST("GTYP_SDOWNBACK"); t &= ~GTYP_SDOWNBACK; if(t) P_CONST("|"); } if(t & GTYP_CLOSE) { P_CONST("GTYP_CLOSE"); t &= ~GTYP_CLOSE; if(t) P_CONST("|"); } if(t & GTYP_BOOLGADGET) { P_CONST("GTYP_BOOLGADGET"); t &= ~GTYP_BOOLGADGET; if(t) P_CONST("|"); } if(t & GTYP_GADGET0002) { P_CONST("GTYP_GADGET0002"); t &= ~GTYP_GADGET0002; if(t) P_CONST("|"); } if(t & GTYP_PROPGADGET) { P_CONST("GTYP_PROPGADGET"); t &= ~GTYP_PROPGADGET; if(t) P_CONST("|"); } if(t & GTYP_STRGADGET) { P_CONST("GTYP_STRGADGET"); t &= ~GTYP_STRGADGET; if(t) P_CONST("|"); } if(t & GTYP_CUSTOMGADGET) { P_CONST("GTYP_CUSTOMGADGET"); t &= ~GTYP_CUSTOMGADGET; if(t) P_CONST("|"); } if(t & GTYP_GTYPEMASK) { P_CONST("GTYP_GTYPEMASK"); t &= ~GTYP_GTYPEMASK; if(t) P_CONST("|"); } if(t) P_NUMVAL(t); } else P_CONST("NULL"); } END_FIELD("do_Gadget.GadgetType"); BEGIN_FIELD; if(g->GadgetRender) P_CONST("(APTR)&" GADGETRENDER_NAME); else P_CONST("NULL"); END_FIELD("do_Gadget.GadgetRender"); BEGIN_FIELD; if(g->SelectRender) P_CONST("(APTR)&" SELECTRENDER_NAME); else P_CONST("NULL"); END_FIELD("do_Gadget.SelectRender"); BEGIN_FIELD; P_CONST("NULL"); if(g->GadgetText) { pout(" /* 0x%lx */",g->GadgetText); oops("DiskObject.do_Gadget.GadgetText",g->GadgetText); } END_FIELD("do_Gadget.GadgetText"); BEGIN_FIELD; P_NUMVAL(g->MutualExclude); END_FIELD("do_Gadget.MutualExclude"); BEGIN_FIELD; P_CONST("NULL"); if(g->SpecialInfo) { pout(" /* 0x%lx */",g->SpecialInfo); oops("DiskObject.do_Gadget.SpecialInfo",g->SpecialInfo); } END_FIELD("do_Gadget.SpecialInfo"); BEGIN_FIELD; P_NUMVAL(g->GadgetID); END_FIELD("do_Gadget.GadgetID"); BEGIN_FIELD; { LONG ud= (LONG)g->UserData; LONG dr= ud & WB_DISKREVISIONMASK; pout("(APTR)"); if(ud != dr) { P_NUMVAL(ud); if(dr) P_CONST("|"); } if(dr == WB_DISKREVISION) P_CONST("WB_DISKREVISION"); else P_NUMVAL(dr); } END_FIELD("do_Gadget.UserData"); } BEGIN_FIELD; switch(icon->do_Type) { case WBDISK: P_CONST("WBDISK"); break; case WBDRAWER: P_CONST("WBDRAWER"); break; case WBTOOL: P_CONST("WBTOOL"); break; case WBPROJECT: P_CONST("WBPROJECT"); break; case WBGARBAGE: P_CONST("WBGARBAGE"); break; case WBDEVICE: P_CONST("WBDEVICE"); break; case WBKICK: P_CONST("WBKICK"); break; case WBAPPICON: P_CONST("WBAPPICON"); break; default: P_NUMVAL(icon->do_Type); break; } END_FIELD("do_Type"); BEGIN_FIELD; P_STRVAL(icon->do_DefaultTool); END_FIELD("do_DefaultTool"); BEGIN_FIELD; if(icon->do_ToolTypes) P_CONST("&" TTARRAY_NAME "[0]"); else P_CONST("NULL"); END_FIELD("do_ToolTypes"); BEGIN_FIELD; if(icon->do_CurrentX == NO_ICON_POSITION) P_CONST("NO_ICON_POSITION"); else P_NUMVAL(icon->do_CurrentX); END_FIELD("do_CurrentX"); BEGIN_FIELD; if(icon->do_CurrentY == NO_ICON_POSITION) P_CONST("NO_ICON_POSITION"); else P_NUMVAL(icon->do_CurrentY); END_FIELD("do_CurrentY"); BEGIN_FIELD; if(icon->do_DrawerData) P_CONST("&" DRAWERDATA_NAME); else P_CONST("NULL"); END_FIELD("do_DrawerData"); BEGIN_FIELD; P_STRVAL(icon->do_ToolWindow); END_FIELD("do_ToolWindow"); BEGIN_FIELD; P_NUMVAL(icon->do_StackSize); END_FIELD("do_StackSize"); END_STRUCT; } /*** MAIN ***/ int main(int argc, char **argv) { struct RDArgs *a; LONG args[3] = { 0,0,0 }; /* args array */ int rc= RETURN_OK; whoami= *argv; fout= stdout; if( a= ReadArgs("NAME/A,QUIET/S,TO/K", args, NULL) ) { if( iname= (char *)malloc(strlen((char *)args[0])+1) ) { strcpy(iname, (char *)args[0]); /* now we may use warn() */ if( IconBase= (struct IconBase *)OpenLibrary(ICONNAME,36L) ) { struct DiskObject *icon= GetDiskObject(iname); if(!icon) { int x= strlen(iname) - 5; if(x>0 && !stricmp(&(iname[x]),".info")) { iname[x]= '\0'; icon= GetDiskObject(iname); } } if(icon) { if(args[2]) { fout= fopen((char *)args[2],"w"); if(!fout) { PrintFault(rc= IoErr(), (STRPTR)args[2]); fprintf(stderr,"%s: Unable to open output file.\n",whoami); } } if(fout) { quiet= args[1]; /* now warn() might be a no-op */ BEGIN_CODE(iname); { struct Gadget *g= &icon->do_Gadget; if(g->Flags & GFLG_GADGIMAGE) { if(g->GadgetRender) p_Image(g->GadgetRender, GADGETRENDER_NAME); if(g->SelectRender) { if(g->Flags & GFLG_GADGHIMAGE == 0) warn("warning: no GFLG_GADGHIMAGE for SelectRender image"); p_Image(g->SelectRender, SELECTRENDER_NAME); } else if(g->Flags & GFLG_GADGHIMAGE) warn("warning: No SelectRender image for GFLG_GADGHIMAGE"); } else warn("warning: unset GFLG_GADGIMAGE in DiskObject.do_Gadget.Flags"); if(icon->do_ToolTypes) p_ToolTypes(icon->do_ToolTypes, TTARRAY_NAME); if(icon->do_DrawerData) p_DrawerData(icon->do_DrawerData, DRAWERDATA_NAME); p_DiskObject(icon, DISKOBJECT_NAME); } END_CODE; if(fout != stdout) fclose(fout); } FreeDiskObject(icon); } else /* !icon */ { rc= IoErr(); warn("GetDiskObject() failed"); } CloseLibrary((struct Library *)IconBase); } else /* !IconBase */ { warn("You need %s V36+",ICONNAME); rc= RETURN_ERROR; } free(iname); } else /* !iname -> don't use warn() */ { fprintf(stderr,"%s: no memory!\n", argv[0]); rc= ERROR_NO_FREE_STORE; } FreeArgs(a); } else /* !ReadArgs() */ { if(argc == 1) display_version_information(); if(argc <= 3) printf("%s: required argument missing\n",whoami); else printf("%s: wrong number of arguments\n",whoami); rc= RETURN_FAIL; } exit(rc); }