Пример #1
0
s_XSL_FO_Listener::~s_XSL_FO_Listener()
{
	_closeSection();
	_handleDataItems();
	UT_VECTOR_FREEALL(char *, m_utvDataIDs);
	UT_VECTOR_SPARSEPURGEALL(ListHelper *, m_Lists);

	_tagClose(TT_DOCUMENT, "root");
}
Пример #2
0
void ODe_AbiDocListener::finished() {
    _closeSpan();
    _closeField();
    _closeBookmark(m_bookmarkName);
    _closeHyperlink();
    _closeBlock();
    
    _closeCell();
    _closeTable();
    
    _closeSection();
}
Пример #3
0
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;
	}
}
bool s_RTF_ListenerGetProps::populateStrux(PL_StruxDocHandle /*sdh*/,
											  const PX_ChangeRecord * pcr,
											  PL_StruxFmtHandle * psfh)
{
	UT_return_val_if_fail(pcr->getType() == PX_ChangeRecord::PXT_InsertStrux, false);
	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:
		{
			_closeSpan();
			_closeBlock();
			_closeSection();
			m_bInSection = true;
			m_apiThisSection = pcr->getIndexAP();
			return true;
		}

	case PTX_SectionHdrFtr:
		{
			_closeSpan();
			_closeBlock();
			_closeSection();
			m_bInSection = true;
			m_apiThisSection = pcr->getIndexAP();
			return true;
		}
	case PTX_SectionTable:
	    {
			_closeSpan();
			_searchTableAPI(pcr->getIndexAP());
			return true;
		}
	case PTX_SectionFootnote:
	    {
			_closeSpan();
			m_apiSavedBlock = m_apiThisBlock;
			return true;
		}
	case PTX_EndFootnote:
	    {
			_closeSpan();
			_closeBlock();
			m_apiThisBlock = m_apiSavedBlock;
			return true;
		}
	case PTX_SectionAnnotation:
	    {
			_closeSpan();
			m_apiSavedBlock = m_apiThisBlock;
			return true;
		}
	case PTX_EndAnnotation:
	    {
			_closeSpan();
			_closeBlock();
			m_apiThisBlock = m_apiSavedBlock;
			return true;
		}
	case PTX_SectionEndnote:
	    {
			_closeSpan();
			m_apiSavedBlock = m_apiThisBlock;
			return true;
		}
	case PTX_SectionTOC:
	    {
			_closeSpan();
			return true;
		}
	case PTX_EndTOC:
	    {
			_closeSpan();
			return true;
		}
	case PTX_SectionFrame:
	    {
			_closeSpan();
			return true;
		}
	case PTX_EndFrame:
	    {
			_closeSpan();
			return true;
		}
	case PTX_EndEndnote:
	    {
			_closeSpan();
			_closeBlock();
			m_apiThisBlock = m_apiSavedBlock;
			return true;
		}
	case PTX_SectionCell:
	    {
			_closeSpan();
			_searchCellAPI(pcr->getIndexAP());
			return true;
		}
	case PTX_EndTable:
	    {
			_closeSpan();
			return true;
		}
	case PTX_EndCell:
	    {
			_closeSpan();
			return true;
		}

	case PTX_Block:
		{
			_closeSpan();
			_closeBlock();
			m_bInBlock = true;
			m_bHasBlock = true;
			m_apiThisBlock = pcr->getIndexAP();

			// Find colours of the Paragraph borders and shading

			const PP_AttrProp * pBlockAP = NULL;
			m_pDocument->getAttrProp(m_apiThisBlock,&pBlockAP);
			const gchar * szColor = PP_evalProperty("bot-color",pBlockAP,NULL,NULL,m_pDocument,true);
			UT_sint32 ndxColor = 0;
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}
			szColor = PP_evalProperty("left-color",pBlockAP,NULL,NULL,m_pDocument,true);
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}

			szColor = PP_evalProperty("right-color",pBlockAP,NULL,NULL,m_pDocument,true);
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}

			szColor = PP_evalProperty("top-color",pBlockAP,NULL,NULL,m_pDocument,true);
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}

			szColor =  PP_evalProperty("shading-foreground-color",pBlockAP,NULL,NULL,m_pDocument,true);
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}

			szColor =  PP_evalProperty("shading-background-color",pBlockAP,NULL,NULL,m_pDocument,true);
			if (szColor)
			{
			    ndxColor = m_pie->_findColor(static_cast<const char*>(szColor));
			    if (ndxColor == -1)
			      m_pie->_addColor(static_cast<const char*>(szColor));
			}

			return true;
		}

	default:
	  UT_ASSERT_NOT_REACHED();
		return false;
	}
}
s_RTF_ListenerGetProps::~s_RTF_ListenerGetProps()
{
	_closeSpan();
	_closeBlock();
	_closeSection();
}
Пример #6
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;
}