コード例 #1
0
bool WordPerfect_Listener::populateStrux(pf_Frag_Strux* /*sdh*/,
									   const PX_ChangeRecord * pcr,
									   fl_ContainerLayout* * psfh)
{
	const PX_ChangeRecord_Strux * pcrx = static_cast<const PX_ChangeRecord_Strux *>(pcr);
	*psfh = 0; // we don't need it.

	switch (pcrx->getStruxType())
	{
		case PTX_Section:
		{
				UT_DEBUGMSG(("WordPerfect Listener::_populateStrux PTX_Section\n"));
				return true;
		}
		case PTX_SectionHdrFtr:
		{
				UT_DEBUGMSG(("WordPerfect Listener::_populateStrux PTX_SectionHdrFtr\n"));
				return true;
		}
		case PTX_Block:
		{
				UT_DEBUGMSG(("WordPerfect Listener::_populateStrux PTX_Block\n"));
				_closeBlock();
				_openBlock(pcr->getIndexAP());
				return true;
		}
		default:
			UT_ASSERT_NOT_REACHED();
			return false;
	}
}
コード例 #2
0
ファイル: ie_exp_XSL-FO.cpp プロジェクト: Distrotech/abiword
bool s_XSL_FO_Listener::populateStrux(PL_StruxDocHandle sdh,
									  const PX_ChangeRecord * pcr,
									  PL_StruxFmtHandle * psfh)
{
	UT_ASSERT(pcr->getType() == PX_ChangeRecord::PXT_InsertStrux);
	const PX_ChangeRecord_Strux * pcrx = static_cast<const PX_ChangeRecord_Strux *> (pcr);
	*psfh = 0;							// we don't need it.

	PT_AttrPropIndex api = pcr->getIndexAP();

	switch (pcrx->getStruxType())
	{
	case PTX_Section:
	{
		_closeSection();
		
		const PP_AttrProp* pAP = NULL;
		if (m_pDocument->getAttrProp(api, &pAP) && pAP)
		{
			const gchar* pszSectionType = NULL;
			pAP->getAttribute("type", pszSectionType);
			if (
				!pszSectionType
				|| (0 == strcmp(pszSectionType, "doc"))
				)
			{
				_openSection(pcr->getIndexAP());
				m_bInSection = true;
			}
			else
			{
				m_bInSection = false;
			}
		}
		else
		{
			m_bInSection = false;
		}
		
		return true;
	}
	
	case PTX_SectionHdrFtr:
	{
		_closeBlock();
		_popListToDepth(0);		

//		<fo:static-content flow-name="xsl-region-before">
//		<fo:block>
//		</fo:block>
//		</fo:static-content> 

		
		// TODO???
		return true;
	}
	
	case PTX_Block:
	{
		_closeBlock();
		_openBlock(api);

		return true;
	}

	case PTX_SectionTable:
	{
		mTableHelper.OpenTable(sdh,api);
		_closeBlock();
		_openTable(api);
		return true;
	}

	case PTX_SectionCell:
	{
		mTableHelper.OpenCell(api);
		_closeBlock();
		_popListToDepth(0);
		_openCell(api);
		return true;
	}

	case PTX_EndTable:
	{
		_closeBlock();
		_popListToDepth(0);
		_closeTable();
		mTableHelper.CloseTable();
		return true;
	}

	case PTX_EndCell:
	{
		_closeBlock();
		_closeCell();
		mTableHelper.CloseCell();
		return true;
	}

	case PTX_SectionFrame:
	{
		_popListToDepth(0);
		_handleFrame(api);
		return true;
	}

	case PTX_EndFrame:
	{
		UT_ASSERT(UT_TODO);
		return true;
	}

	case PTX_SectionFootnote:
	{
		if(_tagTop() != TT_FOOTNOTE) //can happen with certain .doc files
		{
			UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
			_tagOpen(TT_FOOTNOTE, "footnote", false);
			_tagOpenClose("inline", false, false);
		}
		_tagOpen(TT_FOOTNOTEBODY, "footnote-body", false);
		m_bInNote = true;
		return true;
	}

	case PTX_EndFootnote:
	{
		if(m_bInNote)
		{
			_closeBlock();
			if(_tagTop() == TT_FOOTNOTEBODY)
			{
				_tagClose(TT_FOOTNOTEBODY, "footnote-body", false);
				_tagClose(TT_FOOTNOTE, "footnote", false);
			}
			else
			{
				UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
			}

			m_bInNote = false;
		}
		else
		{
			UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
		}

		return true;
	}

	case PTX_SectionEndnote:
	{
		m_bInNote = true;
		return true;
	}

	case PTX_EndEndnote:
	{
		if(m_bInNote)
		{
			m_bInNote = false;
		}
		else
		{
			UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
		}

		return true;
	}

	case PTX_SectionTOC:
	case PTX_EndTOC:
	{
		UT_ASSERT(UT_TODO);
		return true;
	}

	case PTX_EndMarginnote:
	case PTX_SectionMarginnote:
	default:
		UT_ASSERT(UT_TODO);
		return true;
	}
}
コード例 #3
0
bool ODe_AbiDocListener::populateStrux(PL_StruxDocHandle /*sdh*/,
                                       const PX_ChangeRecord* pcr,
                                       PL_StruxFmtHandle* psfh)
{
    UT_return_val_if_fail(pcr->getType() == PX_ChangeRecord::PXT_InsertStrux, false);
    bool returnVal = true;
    
    const PX_ChangeRecord_Strux * pcrx =
        static_cast<const PX_ChangeRecord_Strux *> (pcr);
        
    *psfh = 0;                          // we don't need it.

    PT_AttrPropIndex api = pcr->getIndexAP();
    //const gchar* image_name =
    //    _getObjectKey(api, static_cast<const gchar*>(PT_STRUX_IMAGE_DATAID));
        

    switch (pcrx->getStruxType())
    {
    case PTX_Section:
    case PTX_SectionHdrFtr:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeSection();
            _openSection(api);
        }
        break;

    case PTX_SectionTable:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _openTable(api);
        }
        break;

    case PTX_SectionCell:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _openCell(api);
        }
        break;

    case PTX_SectionFootnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _openFootnote(api);
        }
        break;

    case PTX_SectionEndnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _openEndnote(api);
        }
        break;

    case PTX_SectionAnnotation:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _openAnnotation(api);
        }
        break;

    case PTX_SectionTOC:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _openTOC(api);
        }
        break;

    case PTX_SectionMarginnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            //_openTag("margin","",true,pcr->getIndexAP(),pcr->getXID());
        }
        break;

    case PTX_SectionFrame:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _openFrame(api);
        }
        break;

    case PTX_EndTable:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeTable();
        }
        break;

    case PTX_EndCell:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeCell();
        }
        break;

    case PTX_EndFootnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeFootnote();
        }
        break;

    case PTX_EndEndnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeEndnote();
        }
        break;

    case PTX_EndAnnotation:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeAnnotation();
        }
        break;

    case PTX_EndTOC:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeTOC();
        }
        break;

    case PTX_EndMarginnote:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
        }
        break;

    case PTX_EndFrame:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _closeFrame();
        }
        break;

    case PTX_Block:
        {
            _closeSpan();
            _closeField();
            _closeBookmark(m_bookmarkName);
            _closeHyperlink();
            _closeBlock();
            _openBlock(api);
        }
        break;

    default:
      UT_ASSERT_HARMLESS(UT_TODO);
        returnVal = true;
    }

    return returnVal;
}