📄 output.c
字号:
{
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "\"%s\",\n", pObjText);
if (MaxListItemLen < strlen(pObjText))
MaxListItemLen = strlen(pObjText);
pObjText += strlen(pObjText) +1;
}
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
// Write List item ptr
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // Char *%s_str[%d]\n",szIdName,PBAFIELD(ObjInfo.pObj->list, numItems));
gv_StartColumn += TAB_SIZE;
for (i = 0; i < PBAFIELD(ObjInfo.pObj->list, numItems); i++)
{
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "(void*)%s.%s_str_array[%d],\n", szFormName,szIdName, i);
}
}
else
{
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "\"\",\n");
}
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
}
}
// Write H file
fprintf(gv_pfOutput_H, "\n");
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, "%s %s;\n",
gv_FormObjInfo[ObjInfo.ObjType].pObjTypeName, szIdName
);
if (pObjText)
{
if (ObjInfo.ObjType != frmListObj)
{
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, "Char %s_str[%d+1]", szIdName, strlen(pObjText));
}
else
{
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, "Char %s_str_array[%d][%d+1]", szIdName,
PBAFIELD(ObjInfo.pObj->list, numItems), MaxListItemLen);
fprintf(gv_pfOutput_H, ";\n");
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, "Char *%s_str[%d]",szIdName, PBAFIELD(ObjInfo.pObj->list, numItems));
}
fprintf(gv_pfOutput_H, ";\n");
}
}
EndOutputFile_H(pFrm);
EndOutputFile_C();
}
/////////////////////////
void InitOutputFile_C(void)
{
fprintf(gv_pfOutput_C, "#include \"%s\"\n", gv_OutFileName_H);
}
void BeginOutputFile_C(FRM *pFrm)
{ int i, ObjCount;
RCFORMOBJLIST *pObjList;
sprintf(szFormName,"%s_%s",gv_IDPrefix, PBAFIELD(pFrm,form.szFormIdName));
//save Form define info for resource
sprintf(szDefineInfoBuf,"{kFormRscType,%s_ID_%s,(void*)&%s,sizeof(%s)},",gv_IDPrefix,
PBAFIELD(pFrm,form.szFormIdName),szFormName,szFormName);
if(nFormDefineInfoCount==MAX_OBJECT)
{
char lpBuf[1024];
sprintf(lpBuf,"Error: %s: Exceed form number limit,max number is %d.",
PBAFIELD(pFrm,form.szFormIdName),MAX_OBJECT);
Error(lpBuf);
return;
}
pFormDefineInfo[nFormDefineInfoCount]=strdup(szDefineInfoBuf);
nFormDefineInfoCount++;
fprintf(gv_pfOutput_C, "\nconst %s_Type %s =\n{\n",
szFormName, szFormName);
// Init form struct
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // FormType form\n");
gv_StartColumn += TAB_SIZE;
// Init form --- window struct
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // WindowType window\n");
gv_StartColumn += TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // Coord displayWidthV20\n", PBAFIELD(pFrm, form.window.displayWidth));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // Coord displayHeightV20\n", PBAFIELD(pFrm, form.window.displayHeight));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // grafPort *drawPortP\n", 0);//PBAFIELD(pFrm, form.window.displayAddr));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // WindowFlagsType windowFlags\n");
gv_StartColumn += TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 format :1\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 offscreen :1\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 modal :1\n", PBAFIELD(pFrm, form.window.windowFlags.modal));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 focusable :1\n", PBAFIELD(pFrm, form.window.windowFlags.focusable));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 enabled :1\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 visible :1\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 dialog :1\n", PBAFIELD(pFrm, form.window.windowFlags.dialog));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 freeBitmap :1\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 reserved :8\n", 0);
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{%d, %d, %d, %d}, // RectangleType windowBounds\n",
PBAFIELD(pFrm, form.window.windowBounds.topLeft.x),
PBAFIELD(pFrm, form.window.windowBounds.topLeft.y),
PBAFIELD(pFrm, form.window.windowBounds.extent.x),
PBAFIELD(pFrm, form.window.windowBounds.extent.y)
);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{%d, %d, %d, %d}, // rect clippingBounds\n", 0, 0, 0, 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // BitmapType *bitmapP\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{{%d, %d, %d, %d, %d}}, // FrameBitsType frameType\n",
PBAFIELD(pFrm, form.window.frameType.cornerDiam), 0,
PBAFIELD(pFrm, form.window.frameType.threeD),
PBAFIELD(pFrm, form.window.frameType.shadowWidth),
PBAFIELD(pFrm, form.window.frameType.width)
);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // DrawStateType *penStateP\n", 0);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // struct WindowType *nextWindow\n", 0);
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
// Continue Init form struct
WriteSpace(gv_pfOutput_C, gv_StartColumn);
//fprintf(gv_pfOutput_C, "%d, // UInt16 formId\n", PBAFIELD(pFrm, form.formId));
fprintf(gv_pfOutput_C, "%s_ID_%s, // UInt16 formId\n", gv_IDPrefix,PBAFIELD(pFrm, form.szFormIdName));
// Init form --- FormAttrType struct
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // FormAttrType attr\n");
gv_StartColumn += TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 usable :1\n", PBAFIELD(pFrm, form.attr.usable));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 enabled :1\n", PBAFIELD(pFrm, form.attr.enabled));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 visible :1\n", PBAFIELD(pFrm, form.attr.visible));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 dirty :1\n", PBAFIELD(pFrm, form.attr.dirty));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 saveBehind :1\n", PBAFIELD(pFrm, form.attr.saveBehind));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 graffitiShift :1\n", PBAFIELD(pFrm, form.attr.graffitiShift));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 globalsAvailable :1\n", PBAFIELD(pFrm, form.attr.globalsAvailable));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 doingDialog :1\n", PBAFIELD(pFrm, form.attr.doingDialog));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 exitDialog :1\n", PBAFIELD(pFrm, form.attr.exitDialog));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 attnIndicator :1\n", 0);//PBAFIELD(pFrm, form.attr.attnIndicator));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 reserved :6\n", 0);//PBAFIELD(pFrm, form.attr.reserved));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 reserved2\n", 0);//PBAFIELD(pFrm, form.attr.reserved2));
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
// Continue Init form struct
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // WinHandle bitsBehindForm\n", 0);//PBAFIELD(pFrm, form.bitsBehindForm));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // FormEventHandlerType handler\n", 0);//PBAFIELD(pFrm, form.handler));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "0x%X, // UInt16 focus\n", 0);//PBAFIELD(pFrm, form.focus));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
// fprintf(gv_pfOutput_C, "%d, // UInt16 defaultButton\n", PBAFIELD(pFrm, form.defaultButton));
if(PBAFIELD(pFrm, form.szDefaultButtonIdName))
fprintf(gv_pfOutput_C, "%s_ID_%s_%s, // UInt16 defaultButton\n",
gv_IDPrefix,szFormName,PBAFIELD(pFrm, form.szDefaultButtonIdName));
else
fprintf(gv_pfOutput_C, "0x0, // UInt16 defaultButton\n");
WriteSpace(gv_pfOutput_C, gv_StartColumn);
// fprintf(gv_pfOutput_C, "%d, // UInt16 helpRscId\n", PBAFIELD(pFrm, form.helpRscId));
if(PBAFIELD(pFrm, form.szHelpRscIdName))
fprintf(gv_pfOutput_C, "%s_ID_%s, // UInt16 helpRscId\n",
gv_IDPrefix,PBAFIELD(pFrm, form.szHelpRscIdName));
else
fprintf(gv_pfOutput_C, "0x0, // UInt16 helpRscId\n");
WriteSpace(gv_pfOutput_C, gv_StartColumn);
// fprintf(gv_pfOutput_C, "%d, // UInt16 menuRscId\n", PBAFIELD(pFrm, form.menuRscId));
if(PBAFIELD(pFrm, form.szMenuRscIdName))
fprintf(gv_pfOutput_C, "%s_ID_%s, // UInt16 menuRscId\n",
gv_IDPrefix,PBAFIELD(pFrm, form.szMenuRscIdName));
else
fprintf(gv_pfOutput_C, "0x0, // UInt16 menuRscId\n");
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "%d, // UInt16 numObjects\n", PBAFIELD(pFrm, form.numObjects));
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "(void*)%s." NAME_FORM_OBJLIST ", // FormObjListType *objects\n",szFormName);
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
// Init form obj list struct
ObjCount = PBAFIELD(pFrm, form.numObjects);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "{ // " NAME_FORM_OBJLIST_TYPE "\n", ObjCount);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, " // UInt8 objectType; UInt8 reserved; FormObjectType object;\n");
gv_StartColumn += TAB_SIZE;
for (i = 0; i < ObjCount; i++)
{
char szIdName[1024];
char *pTemp;
pObjList = PlexGetElementAt(&PBAFIELD16(pFrm, pllt), i);
WriteSpace(gv_pfOutput_C, gv_StartColumn);
GetElementIdName(pObjList,szIdName);
pTemp=strstr(szIdName,"\1");
if(pTemp)
*pTemp='_'; //由于PopupType在szIdName里面使用了'\1'字符作为名字间的分隔,写入变量定义前需要还原
fprintf(gv_pfOutput_C, "{%s, 0, (void*)&%s.%s}, // %s address\n",
gv_FormObjInfo[PBAFIELD(pObjList, objectType)].pObjIDName,
szFormName,szIdName,szIdName);
}
gv_StartColumn -= TAB_SIZE;
WriteSpace(gv_pfOutput_C, gv_StartColumn);
fprintf(gv_pfOutput_C, "},\n");
}
char * GetElementIdName(RCFORMOBJLIST *pObjList,char * szIdName)
{
char * srcIdName=NULL;
char szTemp[1024];
switch(PBAFIELD(pObjList,objectType))
{
case frmFieldObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.field),szIdName);
break;
case frmControlObj:
case frmGraphicalControlObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.control),szIdName);
break;
case frmListObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.list),szIdName);
break;
case frmTableObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.table),szIdName);
break;
case frmBitmapObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.bitmap),szRscIdName);
break;
case frmLabelObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.label),szIdName);
break;
case frmTitleObj:
strcpy(szTemp,"Title");
srcIdName=szTemp;
break;
case frmPopupObj:
srcIdName=PBAFIELD(pObjList,u.object.popup->szControlIdName);
strcpy(szTemp,srcIdName);
strcat(szTemp,"\1");
srcIdName=PBAFIELD(pObjList,u.object.popup->szListIdName);
strcat(szTemp,srcIdName);
srcIdName=szTemp;
break;
case frmGadgetObj:
srcIdName=PBAFIELD(pObjList,u.object.gadget->szIdName);
break;
case frmScrollbarObj:
srcIdName=PBAFIELD(pObjList,u.object.scrollbar->szIdName);
break;
case frmSliderObj:
srcIdName=PBAFIELD(PBAFIELD(pObjList,u.object.slider),szIdName);
break;
}
if(srcIdName)
strcpy(szIdName,srcIdName);
else
strcpy(szIdName,"Known");
return szIdName;
}
void EndOutputFile_C(void)
{
fprintf(gv_pfOutput_C, "};\n");
}
/////////////////////////
void InitOutputFile_H(void)
{ char OutFileName_H[_MAX_FNAME];
char *pTemp;
strcpy(OutFileName_H, gv_OutFileName_H);
pTemp = strrchr(OutFileName_H, '.');
*pTemp = '_';
fprintf(gv_pfOutput_H, "#ifndef __%s__\n", strupr(OutFileName_H));
fprintf(gv_pfOutput_H, "#define __%s__\n", strupr(OutFileName_H));
*pTemp = '.';
fprintf(gv_pfOutput_H, "\n#include \"eosgui.h\"\n");
// include def file
strcpy(OutFileName_H, gv_OutFileName_H);
pTemp = strrchr(OutFileName_H, '.');
pTemp-=2;
strcpy(pTemp, "_def.h");
fprintf(gv_pfOutput_H, "\n#include \"%s\"\n", OutFileName_H);
}
void BeginOutputFile_H(FRM *pFrm)
{
WriteDefineInfo(NULL, 0, "%s_ID_%s %d", gv_IDPrefix,PBAFIELD(pFrm, form.szFormIdName), PBAFIELD(pFrm, form.formId));
fprintf(gv_pfOutput_H, "\ntypedef struct _%s_Type\n{\n", szFormName);
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, "FormType form;\n");
WriteSpace(gv_pfOutput_H, TAB_SIZE);
fprintf(gv_pfOutput_H, NAME_FORM_OBJLIST_TYPE";\n", PBAFIELD(pFrm, form.numObjects));
}
void EndOutputFile_H(FRM *pFrm)
{
fprintf(gv_pfOutput_H, "} %s_Type;\n", szFormName);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -