您的位置:首页 > 运维架构 > 网站架构

abiword架构分析笔记

2014-01-08 09:57 351 查看
源码版本:2.4.6

打开文件文件操作:

响应函数:UT_Error AP_Frame::loadDocument(const char * szFilename, int ieft, bool createNew)

加载操作:loadDocument::errorCode = _loadDocument(szFilename, static_cast<IEFileType>(ieft), createNew);

打开word文件代码段

UT_Error PD_Document::readFromFile(const char * szFilename, int ieft,
const char * impProps)

UT_Error PD_Document::readFromFile(const char * szFilename, int ieft,
const char * impProps)
{
if (!szFilename || !*szFilename)
{
UT_DEBUGMSG(("PD_Document::readFromFile -- invalid filename\n"));
return UT_INVALIDFILENAME;
}

if ( !UT_isRegularFile(szFilename) )
{
UT_DEBUGMSG (("PD_Document::readFromFile -- file (%s) is not plain file\n",szFilename));
return UT_INVALIDFILENAME;
}

if (!UT_fileSize(szFilename))
{
UT_DEBUGMSG(("PD_Document::readFromFile -- file (%s) is empty\n",szFilename));
return UT_IE_BOGUSDOCUMENT;
}

m_pPieceTable = new pt_PieceTable(this);
if (!m_pPieceTable)
{
UT_DEBUGMSG(("PD_Document::readFromFile -- could not construct piece table\n"));
return UT_NOPIECETABLE;
}

m_pPieceTable->setPieceTableState(PTS_Loading);

{
UT_String template_list[6];

buildTemplateList (template_list, "normal.awt");

bool success = false;
for (UT_uint32 i = 0; i < 6 && !success; i++)
success = (importStyles(template_list[i].c_str(), ieft, true) == UT_OK);

// don't worry if this fails
}

IE_Imp * pie = NULL;
UT_Error errorCode;

errorCode = IE_Imp::constructImporter(this, szFilename, static_cast<IEFileType>(ieft), &pie, &m_lastOpenedType);
if (errorCode)
{
UT_DEBUGMSG(("PD_Document::readFromFile -- could not construct importer\n"));
return errorCode;
}
if (impProps && strlen(impProps))
pie->setProps (impProps);

_syncFileTypes(false);

// set standard document properties and attributes, such as dtd, lang,
// dom-dir, etc., which the importer can then overwite
// this also initializes m_indexAP
m_indexAP = 0xffffffff;
setAttrProp(NULL);

errorCode = pie->importFile(szFilename);
delete pie;
repairDoc();    //意味着之前已经读取并且分析了文档结构了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: