⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obj.c

📁 关于rcp2c_v3.rar协议在LINUX下的实现程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////
//       Written by LiBing   2001/09/19 //
//////////////////////////////////////////

//########################################
// Include files
//########################################
#include "public.h"

//########################################
// Macro define
//########################################

//########################################
// Type define
//########################################

//########################################
// Globals variable
//########################################

//########################################
// Private Function declare
//########################################
static void Write_RCCONTROLATTR(RCCONTROLATTR *pCtrlAttr, FILE *pfnOutput, int StartColumn);
static void Write_RCFORMOBJATTR(RCFORMOBJATTR *pAttr, FILE *pfnOutput, int StartColumn);
static void Write_ObjIdName(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn, char *pComment);
static void Write_ObjIdDefine(struct _ObjInfo *pObjInfo,int StartColumn,int id);
static void Write_ObjText_Addr(struct _ObjInfo *pObjInfo,FILE *pfnOutput,int StartColumn,char *pComment);


//########################################
// Function implement
//########################################
void OutputObj_Field(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ RCFieldType *pField;

  pField = pObjInfo->pObj->ptr;
  
  //WriteSpace(pfnOutput, StartColumn);
  //fprintf(pfnOutput, "%d, // UInt16 id\n", PBAFIELD(pField, id));
  Write_ObjIdName(pObjInfo, pfnOutput, StartColumn, " // UInt16 id");
  Write_ObjIdDefine(pObjInfo, StartColumn, PBAFIELD(pField, id));

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{%d, %d, %d, %d}, // RectangleType rect\n",
          PBAFIELD(pField, rect.topLeft.x), PBAFIELD(pField, rect.topLeft.y),
          PBAFIELD(pField, rect.extent.x), PBAFIELD(pField, rect.extent.y)
         );
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{ // FieldAttrType attr\n");
  StartColumn += TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 usable :1\n", PBAFIELD(pField, attr.usable));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 visible :1\n", PBAFIELD(pField, attr.visible));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 editable :1\n", PBAFIELD(pField, attr.editable));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 singleLine :1\n", PBAFIELD(pField, attr.singleLine));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 hasFocus :1\n", PBAFIELD(pField, attr.hasFocus));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 dynamicSize :1\n", PBAFIELD(pField, attr.dynamicSize));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 insPtVisible :1\n", PBAFIELD(pField, attr.insPtVisible));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 dirty :1\n", PBAFIELD(pField, attr.dirty));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 underlined :2\n", PBAFIELD(pField, attr.underlined));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 justification :2\n", PBAFIELD(pField, attr.justification));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 autoShift :1\n", PBAFIELD(pField, attr.autoShift));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 hasScrollBar :1\n", PBAFIELD(pField, attr.hasScrollBar));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 numeric :1\n", PBAFIELD(pField, attr.numeric));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 reserved :1\n", 0);
  StartColumn -= TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "},\n");

//  WriteSpace(pfnOutput, StartColumn);
  Write_ObjText_Addr(pObjInfo,pfnOutput,StartColumn," // Char *text");

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // MemHandle textHandle\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // LineInfoPtr lines\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 textLen\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 textBlockSize\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 maxChars\n", PBAFIELD(pField, maxChars));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 selFirstPos\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 selLastPos\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 insPtXPos\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 insPtYPos\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // FontID fontID\n", PBAFIELD(pField, fontID));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 maxVisibleLines\n", 0);
}

void OutputObj_Control(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ RCControlType *pControl;

  pControl = pObjInfo->pObj->ptr;

  //WriteSpace(pfnOutput, StartColumn);
  //fprintf(pfnOutput, "%d, // UInt16 id\n", PBAFIELD(pControl, id));
  Write_ObjIdName(pObjInfo, pfnOutput, StartColumn, " // UInt16 id");
  Write_ObjIdDefine(pObjInfo, StartColumn, PBAFIELD(pControl, id));

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{%d, %d, %d, %d}, // RectangleType bounds\n",
          PBAFIELD(pControl, bounds.topLeft.x), PBAFIELD(pControl, bounds.topLeft.y),
          PBAFIELD(pControl, bounds.extent.x), PBAFIELD(pControl, bounds.extent.y)
         );

  if (pObjInfo->ObjType == frmControlObj)
  {
//    WriteSpace(pfnOutput, StartColumn);
    Write_ObjText_Addr(pObjInfo,pfnOutput,StartColumn," // Char *text");
  }
  else if (pObjInfo->ObjType == frmGraphicalControlObj)
  {
    WriteSpace(pfnOutput, StartColumn);
    if(PBAFIELD(pControl,szBackgroundIdName))
      fprintf(pfnOutput, "%s_ID_BITMAP_%s,  //UInt16 bitmapID\n",gv_IDPrefix,PBAFIELD(pControl,szBackgroundIdName));
    else
      fprintf(pfnOutput, "0,  //UInt16 bitmapID\n");
    WriteSpace(pfnOutput, StartColumn);
    if(PBAFIELD(pControl,szThumbIdName))
      fprintf(pfnOutput, "%s_ID_BITMAP_%s,  //UInt16 SelectedbitmapID\n",gv_IDPrefix,PBAFIELD(pControl,szThumbIdName));
    else
      fprintf(pfnOutput, "0,  //UInt16 SelectedbitmapID\n");
  }
  else
    Error("Error: Control type !");
  
  // RCCONTROLATTR attr
  if (vfLE32)
    Write_RCCONTROLATTR(&PBAFIELD32(pControl, attr), pfnOutput, StartColumn);
  else
    Write_RCCONTROLATTR(&PBAFIELD16(pControl, attr), pfnOutput, StartColumn);
  {
    char *CtrName[] =
    {
      "buttonCtl",				//0
        "pushButtonCtl",			//1
        "checkboxCtl",			//2
        "popupTriggerCtl",		//3
        "selectorTriggerCtl",		//4
        "repeatingButtonCtl",		//5
        "sliderCtl",				//6
        "feedbackSliderCtl",		//7
    };
    WriteSpace(pfnOutput, StartColumn);
    //fprintf(pfnOutput, "%d, // ControlStyleType style\n", PBAFIELD(pControl, style));
    fprintf(pfnOutput, "%s, // ControlStyleType style\n", CtrName[PBAFIELD(pControl, style)]);
  }
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // FontID font\n", PBAFIELD(pControl, font));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt8 group\n", PBAFIELD(pControl, group));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt8 reserved\n", 0);
}
       
void OutputObj_List(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ RCListType *pList;

  pList = pObjInfo->pObj->ptr;

  //WriteSpace(pfnOutput, StartColumn);
  //fprintf(pfnOutput, "%d,\n", PBAFIELD(pList, id));
  Write_ObjIdName(pObjInfo, pfnOutput, StartColumn, " // UInt16 id");
  Write_ObjIdDefine(pObjInfo, StartColumn, PBAFIELD(pList, id));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{%d, %d, %d, %d}, // RectangleType bounds\n",
          PBAFIELD(pList, bounds.topLeft.x), PBAFIELD(pList, bounds.topLeft.y),
          PBAFIELD(pList, bounds.extent.x), PBAFIELD(pList, bounds.extent.y)
         );

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{ // ListAttrType attr\n");
  StartColumn += TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 usable :1\n", PBAFIELD(pList, attr.usable));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 enabled :1\n", PBAFIELD(pList, attr.enabled));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 visible :1\n", PBAFIELD(pList, attr.visible));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 poppedUp :1\n", PBAFIELD(pList, attr.poppedUp));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 hasScrollBar :1\n", PBAFIELD(pList, attr.hasScrollBar));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 search :1\n", PBAFIELD(pList, attr.search));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 reserved :10\n", 0);
  StartColumn -= TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "},\n");

  // char *itemsText
//  WriteSpace(pfnOutput, StartColumn);
  Write_ObjText_Addr(pObjInfo,pfnOutput,StartColumn," // Char **itemsText");
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // Int16 numItems\n", PBAFIELD(pList, numItems));

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // Int16 currentItem\n", 0);

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // Int16 topItem\n", 0);

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // FontID font\n", PBAFIELD(pList, font));

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt8 reserved\n", 0);

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // WinHandle popupWin\n", 0);

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // ListDrawDataFuncPtr drawItemsCallback\n", 0);
}

void OutputObj_Table(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ RCTableType *pTable;
  struct _ObjInfo ObjInfo;

  pTable = pObjInfo->pObj->ptr;

  //WriteSpace(pfnOutput, StartColumn);
  //fprintf(pfnOutput, "%d, // UInt16 id\n", PBAFIELD(pTable, id));
  Write_ObjIdName(pObjInfo, pfnOutput, StartColumn, " // UInt16 id");
  Write_ObjIdDefine(pObjInfo, StartColumn, PBAFIELD(pTable, id));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{%d, %d, %d, %d}, // RectangleType bounds\n",
          PBAFIELD(pTable, bounds.topLeft.x), PBAFIELD(pTable, bounds.topLeft.y),
          PBAFIELD(pTable, bounds.extent.x), PBAFIELD(pTable, bounds.extent.y)
         );

  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{ // TableAttrType attr\n");
  StartColumn += TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 visible :1\n", PBAFIELD(pTable, attr.visible));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 editable :1\n", PBAFIELD(pTable, attr.editable));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 editing :1\n", PBAFIELD(pTable, attr.editing));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 selected :1\n", PBAFIELD(pTable, attr.selected));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 hasScrollBar :1\n", PBAFIELD(pTable, attr.hasScrollBar));
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 usable :1\n", 0);
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 reserved :10\n", 0);
  StartColumn -= TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "},\n");
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 numColumns\n", PBAFIELD(pTable, numColumns));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 numRows\n", PBAFIELD(pTable, numRows));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 currentRow\n", PBAFIELD(pTable, currentRow));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 currentColumn\n", PBAFIELD(pTable, currentColumn));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%d, // UInt16 topRow\n", PBAFIELD(pTable, topRow));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // TableColumnAttrType *columnAttrs\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // TableRowAttrType *rowAttrs\n", 0);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "0x%X, // TableItemPtr items\n", 0);
  // RCFieldBA16Type currentField;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{ // FieldType currentField\n", 0);
  StartColumn += TAB_SIZE;
  ObjInfo = *pObjInfo;
  ObjInfo.ObjType = frmFieldObj;
  if (vfLE32)
    ObjInfo.pObj->field->s32 = PBAFIELD32(pTable, currentField);
  else
    ObjInfo.pObj->field->s16 = PBAFIELD16(pTable, currentField);
  OutputObj_Field(&ObjInfo, pfnOutput, StartColumn);

  StartColumn -= TAB_SIZE;
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "},\n", 0);
}

void OutputObj_Bitmap(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ RCFormBitMapType *pBitmap;

  pBitmap = pObjInfo->pObj->ptr;

  if (vfLE32)
    Write_RCFORMOBJATTR(&PBAFIELD32(pBitmap, attr), pfnOutput, StartColumn);
  else
    Write_RCFORMOBJATTR(&PBAFIELD16(pBitmap, attr), pfnOutput, StartColumn);
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "{%d, %d}, // point pos\n", PBAFIELD(pBitmap, pos.x), PBAFIELD(pBitmap, pos.y));
  
  WriteSpace(pfnOutput, StartColumn);
  fprintf(pfnOutput, "%s_ID_BITMAP_%s,  //UInt16 rscID\n",gv_IDPrefix,PBAFIELD(pBitmap, szRscIdName));
}

void OutputObj_Line(struct _ObjInfo *pObjInfo, FILE *pfnOutput, int StartColumn)
{ typedef struct _FormLine
  {
	  RCFORMOBJATTR attr;
	  RCPOINT point1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -