Rebased ref, commits from common ancestor: commit 656fcbf8c72839a76d184b9f5e0b661360090942 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Fri Aug 8 11:21:14 2014 +0200
Fix input field tab handling When searching for the current field in the field list to find the previous or next one, we check the field start and compare it with the cursor position. But with the new input fields, the cursor can actually be anywhere in the field, so we actually have to search for the start position of the input field at the cursor position. Change-Id: I26526524eccfdbea41c6bf69a460fa64248f50ca diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 7d0dfdc..50c7f7a 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -670,6 +670,8 @@ bool SwCrsrShell::MoveFldType( SwTxtFld * pTxtFld = pTNd->GetFldTxtAttrAt( rPos.nContent.GetIndex(), true ); const bool bDelFld = ( pTxtFld == NULL ); + sal_Int32 nContentOffset = -1; + if( bDelFld ) { // create dummy for the search @@ -680,23 +682,47 @@ bool SwCrsrShell::MoveFldType( mpDoc->IsClipBoard() ); pTxtFld->ChgTxtNode( pTNd ); } + else + { + // the cursor might be anywhere inside the input field, + // but we will be searching for the field start + if (pTxtFld->Which() == RES_TXTATR_INPUTFIELD + && rPos.nContent.GetIndex() != pTxtFld->GetStart()) + nContentOffset = pTxtFld->GetStart(); + } + + _SetGetExpFld *pSrch = NULL; + SwIndex *pIndex = NULL; + if( -1 == nContentOffset ) + { + pSrch = new _SetGetExpFld( rPos.nNode, pTxtFld, &rPos.nContent ); + } + else + { + pIndex = new SwIndex( rPos.nNode.GetNode().GetCntntNode(), nContentOffset ); + pSrch = new _SetGetExpFld( rPos.nNode, pTxtFld, pIndex ); + } - _SetGetExpFld aSrch( rPos.nNode, pTxtFld, &rPos.nContent ); if( rPos.nNode.GetIndex() < mpDoc->GetNodes().GetEndOfExtras().GetIndex() ) { // also at collection use only the first frame Point aPt; - aSrch.SetBodyPos( *pTNd->getLayoutFrm( GetLayout(), &aPt, &rPos, false ) ); + pSrch->SetBodyPos( *pTNd->getLayoutFrm( GetLayout(), &aPt, &rPos, false ) ); } - it = aSrtLst.lower_bound( &aSrch ); + it = aSrtLst.lower_bound( pSrch ); + + bool isSrch = (**it == *pSrch); + delete pIndex; + delete pSrch; + if( bDelFld ) { delete (SwFmtFld*)&pTxtFld->GetAttr(); delete pTxtFld; } - if( it != aSrtLst.end() && **it == aSrch ) // found + if( it != aSrtLst.end() && isSrch ) // found { if( bNext ) { commit 567d9f6158c75681d7cea38e19fa512db61e3db3 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Thu Aug 7 17:35:14 2014 +0200 Change inline-edit mouse input handling This changes the mouse click handler for input fields to the following logic: * If the cursor isn't already in the input field: * On mouse over displays the POINTER_REFHAND * A left click selects the whole text of the field and therefore moves the cursor to the end of the field * Same for the right click. Additionally it opens the popup menu * If the cursor is already in the input field: * As for normal text, the left click removes the selection and moves the cursor to the click location. * Right click keeps any selection and opens the popup In contrast to normal text editing, a double click still opens "Edit fields" dialog, instead of the word selection. Change-Id: Ie7a50b34fe625358426d18eaec2e833f36702528 diff --git a/helpcontent2 b/helpcontent2 index 577577f..400d593 160000 --- a/helpcontent2 +++ b/helpcontent2 @@ -1 +1 @@ -Subproject commit 577577fd7006327a85f420360c769ca70e96b50c +Subproject commit 400d593bd7f28ed51f0f3e0d0c9a381436e1ca27 diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 347f788..ab47d71 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -134,6 +134,8 @@ #include <docstat.hxx> #include <wordcountdialog.hxx> #include <swwait.hxx> +#include <txtfld.hxx> +#include <fmtfld.hxx> #include <IMark.hxx> #include <doc.hxx> @@ -548,19 +550,33 @@ void SwEditWin::UpdatePointer(const Point &rLPt, sal_uInt16 nModifier ) if (bCntAtPos || rSh.GetContentAtPos(rLPt, aUrlPos)) { SwContentAtPos aSwContentAtPos( - SwContentAtPos::SW_CLICKFIELD| - SwContentAtPos::SW_INETATTR| + SwContentAtPos::SW_FIELD | + SwContentAtPos::SW_CLICKFIELD | + SwContentAtPos::SW_INETATTR | SwContentAtPos::SW_FTN | SwContentAtPos::SW_SMARTTAG ); if( rSh.GetContentAtPos( rLPt, aSwContentAtPos) ) { - const bool bClickToFollow = SwContentAtPos::SW_INETATTR == aSwContentAtPos.eCntntAtPos || - SwContentAtPos::SW_SMARTTAG == aSwContentAtPos.eCntntAtPos; - - if( !bClickToFollow || - (SwContentAtPos::SW_INETATTR == aSwContentAtPos.eCntntAtPos && bExecHyperlinks) || - (SwContentAtPos::SW_SMARTTAG == aSwContentAtPos.eCntntAtPos && bExecSmarttags) ) - eStyle = POINTER_REFHAND; + // Is edit inline input field + if (SwContentAtPos::SW_FIELD == aSwContentAtPos.eCntntAtPos) + { + if ( aSwContentAtPos.pFndTxtAttr != NULL + && aSwContentAtPos.pFndTxtAttr->Which() == RES_TXTATR_INPUTFIELD) + { + const SwField *pCrsrField = rSh.CrsrInsideInputFld() ? rSh.GetCurFld( true ) : NULL; + if (!(pCrsrField && pCrsrField == aSwContentAtPos.pFndTxtAttr->GetFmtFld().GetField())) + eStyle = POINTER_REFHAND; + } + } + else + { + const bool bClickToFollow = SwContentAtPos::SW_INETATTR == aSwContentAtPos.eCntntAtPos || + SwContentAtPos::SW_SMARTTAG == aSwContentAtPos.eCntntAtPos; + if( !bClickToFollow || + (SwContentAtPos::SW_INETATTR == aSwContentAtPos.eCntntAtPos && bExecHyperlinks) || + (SwContentAtPos::SW_SMARTTAG == aSwContentAtPos.eCntntAtPos && bExecSmarttags) ) + eStyle = POINTER_REFHAND; + } } } } @@ -2766,9 +2782,41 @@ void touch_lo_selection_end_move_impl(const void *documentHandle, #endif +void SwEditWin::MoveCursor( SwWrtShell &rSh, const Point aDocPos, + const bool bOnlyText, bool bLockView ) +{ + const bool bTmpNoInterrupt = bNoInterrupt; + bNoInterrupt = false; + + int nTmpSetCrsr = 0; + + if( !rSh.IsViewLocked() && bLockView ) + rSh.LockView( true ); + else + bLockView = false; + + { + // only temporary generate move context because otherwise + // the query to the content form doesn't work!!! + SwMvContext aMvContext( &rSh ); + nTmpSetCrsr = rSh.SetCursor(&aDocPos, bOnlyText); + bValidCrsrPos = !(CRSR_POSCHG & nTmpSetCrsr); + } + + // notify the edit window that from now on we do not use the input language + if ( !(CRSR_POSOLD & nTmpSetCrsr) ) + SetUseInputLanguage( false ); + + if( bLockView ) + rSh.LockView( false ); + + bNoInterrupt = bTmpNoInterrupt; +} + void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) { SwWrtShell &rSh = m_rView.GetWrtShell(); + const SwField *pCrsrFld = rSh.CrsrInsideInputFld() ? rSh.GetCurFld( true ) : NULL; // We have to check if a context menu is shown and we have an UI // active inplace client. In that case we have to ignore the mouse @@ -3595,6 +3643,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) } SwContentAtPos aFieldAtPos(SwContentAtPos::SW_FIELD); + bool bEditableFieldClicked = false; // Are we clicking on a field? if (rSh.GetContentAtPos(aDocPos, aFieldAtPos)) @@ -3620,6 +3669,10 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) // the cursor break; } + else + { + bEditableFieldClicked = true; + } } bool bOverSelect = rSh.ChgCurrPam( aDocPos ), bOverURLGrf = false; @@ -3628,32 +3681,8 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) if ( !bOverSelect ) { - const bool bTmpNoInterrupt = bNoInterrupt; - bNoInterrupt = false; - - if( !rSh.IsViewLocked() && bLockView ) - rSh.LockView( true ); - else - bLockView = false; - - int nTmpSetCrsr = 0; - - { // only temporary generate Move-Kontext because otherwise - // the query to the content form doesn't work!!! - SwMvContext aMvContext( &rSh ); - nTmpSetCrsr = rSh.SetCursor(&aDocPos, bOnlyText); - bValidCrsrPos = !(CRSR_POSCHG & nTmpSetCrsr); - bCallBase = false; - } - - // notify the edit window that from now on we do not use the input language - if ( !(CRSR_POSOLD & nTmpSetCrsr) ) - SetUseInputLanguage( false ); - - if( bLockView ) - rSh.LockView( false ); - - bNoInterrupt = bTmpNoInterrupt; + MoveCursor( rSh, aDocPos, bOnlyText, bLockView ); + bCallBase = false; } if ( !bOverURLGrf && !bOnlyText ) { @@ -3671,6 +3700,15 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) bCallBase = false; } } + if ( !bOverSelect && bEditableFieldClicked && (!pCrsrFld || + pCrsrFld != aFieldAtPos.pFndTxtAttr->GetFmtFld().GetField())) + { + // select content of Input Field, but exclude CH_TXT_ATR_INPUTFIELDSTART + // and CH_TXT_ATR_INPUTFIELDEND + rSh.SttSelect(); + rSh.SelectTxt( aFieldAtPos.pFndTxtAttr->GetStart() + 1, + *(aFieldAtPos.pFndTxtAttr->End()) - 1 ); + } // don't reset here any longer so that, in case through MouseMove // with pressed Ctrl key a multiple-selection should happen, // the previous selection is not released in Drag. @@ -3678,6 +3716,31 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) } } } + else if ( MOUSE_RIGHT == rMEvt.GetButtons() && !rMEvt.GetModifier() + && static_cast< sal_uInt8 >(rMEvt.GetClicks() % 4) == 1 + && !rSh.ChgCurrPam( aDocPos ) ) + { + SwContentAtPos aFieldAtPos(SwContentAtPos::SW_FIELD); + + // Are we clicking on a field? + if (bValidCrsrPos + && rSh.GetContentAtPos(aDocPos, aFieldAtPos) + && aFieldAtPos.pFndTxtAttr != NULL + && aFieldAtPos.pFndTxtAttr->Which() == RES_TXTATR_INPUTFIELD + && (!pCrsrFld || pCrsrFld != aFieldAtPos.pFndTxtAttr->GetFmtFld().GetField())) + { + // Move the cursor + MoveCursor( rSh, aDocPos, rSh.IsObjSelectable( aDocPos ), m_bWasShdwCrsr ); + bCallBase = false; + + // select content of Input Field, but exclude CH_TXT_ATR_INPUTFIELDSTART + // and CH_TXT_ATR_INPUTFIELDEND + rSh.SttSelect(); + rSh.SelectTxt( aFieldAtPos.pFndTxtAttr->GetStart() + 1, + *(aFieldAtPos.pFndTxtAttr->End()) - 1 ); + } + } + if (bCallBase) Window::MouseButtonDown(rMEvt); } @@ -4518,20 +4581,27 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt) if ( aCntntAtPos.pFndTxtAttr != NULL && aCntntAtPos.pFndTxtAttr->Which() == RES_TXTATR_INPUTFIELD ) { - // select content of Input Field, but exclude CH_TXT_ATR_INPUTFIELDSTART - // and CH_TXT_ATR_INPUTFIELDEND - rSh.SttSelect(); - rSh.SelectTxt( aCntntAtPos.pFndTxtAttr->GetStart() + 1, - *(aCntntAtPos.pFndTxtAttr->End()) - 1 ); + if (!rSh.IsInSelect()) + { + // create only temporary move context because otherwise + // the query to the content form doesn't work!!! + SwMvContext aMvContext( &rSh ); + const Point aDocPos( PixelToLogic( m_aStartPos ) ); + bValidCrsrPos = !(CRSR_POSCHG & rSh.SetCursor(&aDocPos, false)); + } + else + { + bValidCrsrPos = true; + } } else { rSh.ClickToField( *aCntntAtPos.aFnd.pFld ); + // a bit of a mystery what this is good for? + // in this case we assume it's valid since we + // just selected a field + bValidCrsrPos = true; } - // a bit of a mystery what this is good for? - // in this case we assume it's valid since we - // just selected a field - bValidCrsrPos = true; if (bAddMode) { rSh.LeaveAddMode(); diff --git a/sw/source/uibase/inc/edtwin.hxx b/sw/source/uibase/inc/edtwin.hxx index bfe89ad..ae65ed7 100644 --- a/sw/source/uibase/inc/edtwin.hxx +++ b/sw/source/uibase/inc/edtwin.hxx @@ -180,6 +180,9 @@ friend void PageNumNotify( SwViewShell* pVwSh, using OutputDevice::GetTextColor; + void MoveCursor( SwWrtShell &rSh, const Point aDocPos, + const bool bOnlyText, bool bLockView ); + protected: virtual void DataChanged( const DataChangedEvent& ) SAL_OVERRIDE; commit 1638d5db018eb8837a5caf83e60388690e728b07 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Thu Aug 7 15:18:19 2014 +0200 fdo#76565 Allow pasting into input fields Change-Id: If996284aeea4b430cceaaf264035aa9e4ec0f2f0 diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index 05d2a75..49869f4 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -268,8 +268,7 @@ void SwBaseShell::ExecClpbrd(SfxRequest &rReq) TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin() ) ); if( aDataHelper.GetXTransferable().is() - && SwTransferable::IsPaste( rSh, aDataHelper ) - && !rSh.CrsrInsideInputFld() ) + && SwTransferable::IsPaste( rSh, aDataHelper ) ) { // Temporary variables, because the shell could already be // destroyed after the paste. @@ -417,8 +416,7 @@ void SwBaseShell::StateClpbrd(SfxItemSet &rSet) break; case SID_PASTE: - if( !GetView().IsPasteAllowed() - || rSh.CrsrInsideInputFld() ) + if( !GetView().IsPasteAllowed() ) { rSet.DisableItem( nWhich ); } commit cabe6960b18f8185caf206faf4af47256dff0000 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Thu Aug 7 14:49:36 2014 +0200 fdo#81750 MM: correctly convert inline-edit fields The new inline-editable input fields contain real content in the node, therefore a single SwPaM::Move isn't sufficient to select the field or move after the field. For the input fields we can directly go to the end of the field. Change-Id: Ic1bce415ce45e49456121b6db003ded0733e195c diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index c6d3fcd..f476836 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -119,6 +119,7 @@ #include <wdocsh.hxx> #include <prtopt.hxx> +#include <wrtsh.hxx> #include <vector> #include <map> @@ -1701,21 +1702,47 @@ bool SwDoc::ConvertFieldsToText() nWhich != RES_REFPAGESETFLD)) { OUString sText = pField->ExpandField(true); - //database fields should not convert their command into text + + // database fields should not convert their command into text if( RES_DBFLD == pCurType->Which() && !static_cast<const SwDBField*>(pField)->IsInitialized()) sText = ""; - //now remove the field and insert the string - SwPaM aPam1(*pTxtFld->GetpTxtNode(), pTxtFld->GetStart()); - aPam1.Move(); - //insert first to keep the field's attributes + SwPaM aInsertPam(*pTxtFld->GetpTxtNode(), pTxtFld->GetStart()); + aInsertPam.SetMark(); + + // go to the end of the field + const SwTxtFld *pTxtField = GetTxtFldAtPos( *aInsertPam.End() ); + if (pTxtField && pTxtField->Which() == RES_TXTATR_INPUTFIELD) + { + SwPosition &rEndPos = *aInsertPam.GetPoint(); + rEndPos.nContent = GetDocShell()->GetWrtShell()->EndOfInputFldAtPos( *aInsertPam.End() ); + } + else + { + aInsertPam.Move(); + } + + // first insert the text after field to keep the field's attributes, + // then delete the field if (!sText.isEmpty()) - getIDocumentContentOperations().InsertString( aPam1, sText ); - SwPaM aPam2(*pTxtFld->GetpTxtNode(), pTxtFld->GetStart()); - aPam2.SetMark(); - aPam2.Move(); - getIDocumentContentOperations().DeleteAndJoin(aPam2);//remove the field - bRet=true; + { + // to keep the position after insert + SwPaM aDelPam( *aInsertPam.GetMark(), *aInsertPam.GetPoint() ); + aDelPam.Move( fnMoveBackward ); + aInsertPam.DeleteMark(); + + getIDocumentContentOperations().InsertString( aInsertPam, sText ); + + aDelPam.Move(); + // finally remove the field + getIDocumentContentOperations().DeleteAndJoin( aDelPam ); + } + else + { + getIDocumentContentOperations().DeleteAndJoin( aInsertPam ); + } + + bRet = true; } } ++aBegin; commit 4d3834ab6635eaa0badbaacf8e39e54a9d48bf4d Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Aug 6 17:44:56 2014 +0200 Input fields are always editable... if the document isn't read-only. So backspace should always work in input fields. Regression from 961315f0838197e71e9bd49169afe673466e5eb8. Change-Id: I06648ab075b198ee7914e7ae60bef87e7ff94f0a diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 6887cd0..347f788 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -1892,8 +1892,7 @@ KEYINPUT_CHECKTABLE_INSDEL: break; case KEY_BACKSPACE: case KEY_BACKSPACE | KEY_SHIFT: - if ( !rSh.HasReadonlySel() - && !rSh.CrsrInsideInputFld() ) + if ( !rSh.HasReadonlySel() ) { bool bDone = false; // try to add comment for code snip: commit 4d635dcae4d7275d04a17a0efc11b0531d5d0a82 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 8 18:46:56 2014 +0200 vcl: don't throw misleading exceptions on every failed access During the build different instances of gengal will create a temp file called "instdir/share/config/cdefghij.klm", and enumerate the directories in instdir/share/config; it may happen that the enumeration sees the temp file, and it is removed before fetchFileStatus is called, resulting in E_NOENT rc and the exception. The FileIsValidIconTheme() should be able to handle most errors here. (regression from 60954a8a96a66ff11e06b850838f3d16e8e1625f) Change-Id: Id9361a37b8569d01509efcc8cda2bc17e9eabcd8 diff --git a/vcl/source/app/IconThemeScanner.cxx b/vcl/source/app/IconThemeScanner.cxx index 4599260..8cb58fe 100644 --- a/vcl/source/app/IconThemeScanner.cxx +++ b/vcl/source/app/IconThemeScanner.cxx @@ -44,7 +44,10 @@ OUString convert_to_absolute_path(const OUString& path) osl::FileBase::RC rc = resolver.fetchFileStatus(path); if (rc != osl::FileBase::E_None) { SAL_WARN("vcl.app", "Could not resolve path '" << path << "' to search for icon themes."); - throw std::runtime_error("Provided a recursive symlink to a icon theme directory that could not be resolved."); + if (rc == osl::FileBase::E_MULTIHOP) + { + throw std::runtime_error("Provided a recursive symlink to a icon theme directory that could not be resolved."); + } } return resolver.m_aStatus.getFileURL(); } commit ea258e380eb87db2eb468ba5354df9f957b7660f Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Aug 8 18:17:43 2014 +0200 DOCX export: handle date SDT on paragraphs Date SDT's are normally imported as form controls, while most other SDT types are just custom properties on regular text portions or paragraphs. However, given that form controls are not supported in headers/footers, in that case even date SDT's are just custom properties. So support such properties on paragraphs in the exporter to properly roundtrip date SDT's in headers/footers. Change-Id: I19eb73a3673e387a7b8780756ce7426a1851e796 diff --git a/sw/qa/extras/ooxmlexport/data/sdt-header.docx b/sw/qa/extras/ooxmlexport/data/sdt-header.docx new file mode 100644 index 0000000..6a4bdfb2 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/sdt-header.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx index 4c44216..be347b5 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx @@ -600,6 +600,14 @@ DECLARE_OOXMLEXPORT_TEST(testfdo81946, "fdo81946.docx") assertXPath(pXmlDoc, "/w:hdr[1]/w:p[1]/w:sdt[1]/w:sdtContent[1]/w:r[2]/mc:AlternateContent[1]",0); } +DECLARE_OOXMLEXPORT_TEST(testSdtHeader, "sdt-header.docx") +{ + // Problem was that w:sdt elements in headers were lost on import. + if (xmlDocPtr pXmlDoc = parseExport("word/header1.xml")) + // This was 0, w:sdt (and then w:date) was missing. + assertXPath(pXmlDoc, "//w:sdt/w:sdtPr/w:date", 1); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index a8bcc89..b0447cf 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -549,7 +549,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT m_pSerializer->endElementNS( XML_w, XML_p ); // on export sdt blocks are never nested ATM if( !m_bAnchorLinkedToNode && !m_bStartedParaSdt ) - WriteSdtBlock( m_nParagraphSdtPrToken, m_pParagraphSdtPrTokenChildren, m_pParagraphSdtPrDataBindingAttrs, m_aParagraphSdtPrAlias, /*bPara=*/true ); + WriteSdtBlock( m_nParagraphSdtPrToken, m_pParagraphSdtPrTokenChildren, m_pParagraphSdtPrTokenAttributes, m_pParagraphSdtPrDataBindingAttrs, m_aParagraphSdtPrAlias, /*bPara=*/true ); else { //These should be written out to the actual Node and not to the anchor. @@ -591,6 +591,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken, ::sax_fastparser::FastAttributeList*& pSdtPrTokenChildren, + ::sax_fastparser::FastAttributeList*& pSdtPrTokenAttributes, ::sax_fastparser::FastAttributeList*& pSdtPrDataBindingAttrs, OUString& rSdtPrAlias, bool bPara ) @@ -607,7 +608,14 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken, if( nSdtPrToken > 0 && pSdtPrTokenChildren ) { - m_pSerializer->startElement( nSdtPrToken, FSEND ); + if (!pSdtPrTokenAttributes) + m_pSerializer->startElement( nSdtPrToken, FSEND ); + else + { + XFastAttributeListRef xAttrList(pSdtPrTokenAttributes); + m_pSerializer->startElement(nSdtPrToken, xAttrList); + pSdtPrTokenAttributes = 0; + } uno::Sequence<xml::FastAttribute> aChildren = pSdtPrTokenChildren->getFastAttributes(); for( sal_Int32 i=0; i < aChildren.getLength(); ++i ) @@ -619,7 +627,16 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken, m_pSerializer->endElement( nSdtPrToken ); } else if( (nSdtPrToken > 0) && nSdtPrToken != FSNS( XML_w, XML_id ) && !(m_bRunTextIsOn && m_rExport.SdrExporter().IsParagraphHasDrawing())) - m_pSerializer->singleElement( nSdtPrToken, FSEND ); + { + if (!pSdtPrTokenAttributes) + m_pSerializer->singleElement( nSdtPrToken, FSEND ); + else + { + XFastAttributeListRef xAttrList(pSdtPrTokenAttributes); + m_pSerializer->singleElement(nSdtPrToken, xAttrList); + pSdtPrTokenAttributes = 0; + } + } if( nSdtPrToken == FSNS( XML_w, XML_id ) || ( bPara && m_bParagraphSdtHasId ) ) //Word won't open a document with an empty id tag, we fill it with a random number @@ -1136,7 +1153,10 @@ void DocxAttributeOutput::EndRun() // enclose in a sdt block, if necessary: if one is already started, then don't do it for now // (so on export sdt blocks are never nested ATM) if ( !m_bAnchorLinkedToNode && !m_bStartedCharSdt ) - WriteSdtBlock( m_nRunSdtPrToken, m_pRunSdtPrTokenChildren, m_pRunSdtPrDataBindingAttrs, m_aRunSdtPrAlias, /*bPara=*/false ); + { + ::sax_fastparser::FastAttributeList* pRunSdtPrTokenAttributes = 0; + WriteSdtBlock( m_nRunSdtPrToken, m_pRunSdtPrTokenChildren, pRunSdtPrTokenAttributes, m_pRunSdtPrDataBindingAttrs, m_aRunSdtPrAlias, /*bPara=*/false ); + } else { //These should be written out to the actual Node and not to the anchor. @@ -7854,8 +7874,30 @@ void DocxAttributeOutput::ParaGrabBag(const SfxGrabBagItem& rItem) } else if (aPropertyValue.Name == "ooxml:CT_SdtPr_id") m_bParagraphSdtHasId = true; + else if (aPropertyValue.Name == "ooxml:CT_SdtPr_date") + { + m_nParagraphSdtPrToken = FSNS(XML_w, XML_date); + uno::Sequence<beans::PropertyValue> aGrabBag = aPropertyValue.Value.get< uno::Sequence<beans::PropertyValue> >(); + for (sal_Int32 j=0; j < aGrabBag.getLength(); ++j) + { + OString sValue = OUStringToOString(aGrabBag[j].Value.get<OUString>(), RTL_TEXTENCODING_UTF8); + + if (aGrabBag[j].Name == "ooxml:CT_SdtDate_fullDate") + AddToAttrList(m_pParagraphSdtPrTokenAttributes, FSNS(XML_w, XML_fullDate), sValue.getStr()); + else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_dateFormat") + AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_dateFormat), sValue.getStr()); + else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_lid") + AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_lid), sValue.getStr()); + else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_storeMappedDataAs") + AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_storeMappedDataAs), sValue.getStr()); + else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_calendar") + AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_calendar), sValue.getStr()); + else + SAL_WARN("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr / ooxml:CT_SdtPr_date grab bag property " << aGrabBag[j].Name); + } + } else - SAL_INFO("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr grab bag property " << aPropertyValue.Name); + SAL_WARN("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr grab bag property " << aPropertyValue.Name); } } else if (i->first == "ParaCnfStyle") @@ -8122,6 +8164,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri m_setFootnote(false) , m_nParagraphSdtPrToken(0) , m_pParagraphSdtPrTokenChildren(NULL) + , m_pParagraphSdtPrTokenAttributes(NULL) , m_pParagraphSdtPrDataBindingAttrs(NULL) , m_nRunSdtPrToken(0) , m_pRunSdtPrTokenChildren(NULL) @@ -8146,6 +8189,7 @@ DocxAttributeOutput::~DocxAttributeOutput() delete m_pTableWrt, m_pTableWrt = NULL; delete m_pParagraphSdtPrTokenChildren; m_pParagraphSdtPrTokenChildren = NULL; + delete m_pParagraphSdtPrTokenAttributes; m_pParagraphSdtPrTokenAttributes = NULL; delete m_pParagraphSdtPrDataBindingAttrs; m_pParagraphSdtPrDataBindingAttrs = NULL; delete m_pRunSdtPrTokenChildren; m_pRunSdtPrTokenChildren = NULL; delete m_pRunSdtPrDataBindingAttrs; m_pRunSdtPrDataBindingAttrs = NULL; diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 6ba3b48..90a31d8 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -700,6 +700,7 @@ private: void WriteSdtBlock(sal_Int32& nSdtPrToken, ::sax_fastparser::FastAttributeList*& pSdtPrTokenChildren, + ::sax_fastparser::FastAttributeList*& pSdtPrTokenAttributes, ::sax_fastparser::FastAttributeList*& pSdtPrDataBindingAttrs, OUString& rSdtPrAlias, bool bPara); @@ -900,6 +901,7 @@ private: /// members to control the existence of grabbagged SDT properties in the paragraph sal_Int32 m_nParagraphSdtPrToken; ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrTokenChildren; + ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrTokenAttributes; ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrDataBindingAttrs; /// members to control the existence of grabbagged SDT properties in the text run sal_Int32 m_nRunSdtPrToken; diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 0da5178..bd2c226 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2358,7 +2358,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext ) resourcemodel::resolveSprmProps(*this, rSprm); else { - OUString sName = "ooxml::CT_SdtPr_date"; + OUString sName = "ooxml:CT_SdtPr_date"; enableInteropGrabBag(sName); resourcemodel::resolveSprmProps(*this, rSprm); m_pImpl->m_pSdtHelper->appendToInteropGrabBag(getInteropGrabBag()); commit 3f02b29b6573a637592f096c2d2659534b1683ab Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Aug 8 16:40:33 2014 +0200 Unused optional elements The scripts parsing this file don't care if an element is optional or not, so why bother. Change-Id: I0860c9209347d6fab83e1faf2867db4de94216ac diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index 9083de0..c3600f5 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -87,11 +87,9 @@ <empty/> </define> <define name="CT_ColorMapping"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> <attribute name="bg1"> <ref name="ST_ColorSchemeIndex"/> </attribute> @@ -143,11 +141,9 @@ <element name="clrScheme"> <ref name="CT_ColorScheme"/> </element> - <optional> <element name="clrMap"> <ref name="CT_ColorMapping"/> </element> - </optional> </define> <define name="CT_ColorSchemeList"> <zeroOrMore> @@ -161,49 +157,33 @@ <element name="themeElements"> <ref name="CT_BaseStyles"/> </element> - <optional> <element name="objectDefaults"> <ref name="CT_ObjectStyleDefaults"/> </element> - </optional> - <optional> <element name="extraClrSchemeLst"> <ref name="CT_ColorSchemeList"/> </element> - </optional> - <optional> <element name="custClrLst"> <ref name="CT_CustomColorList"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="name"> <data type="string"/> </attribute> - </optional> </define> <define name="CT_BaseStylesOverride"> - <optional> <element name="clrScheme"> <ref name="CT_ColorScheme"/> </element> - </optional> - <optional> <element name="fontScheme"> <ref name="CT_FontScheme"/> </element> - </optional> - <optional> <element name="fmtScheme"> <ref name="CT_StyleMatrix"/> </element> - </optional> </define> <define name="CT_ClipboardStyleSheet"> <element name="themeElements"> @@ -214,11 +194,9 @@ </element> </define> <define name="CT_Hyperlink"> - <optional> <attribute name="r:id"> <text/> </attribute> - </optional> </define> <define name="theme"> <element name="theme"> @@ -262,33 +240,23 @@ <element name="spPr"> <ref name="CT_ShapeProperties"/> </element> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> <define name="CT_ObjectStyleDefaults"> - <optional> <element name="spDef"> <ref name="CT_DefaultShapeDefinition"/> </element> - </optional> - <optional> <element name="lnDef"> <ref name="CT_DefaultShapeDefinition"/> </element> - </optional> - <optional> <element name="txDef"> <ref name="CT_DefaultShapeDefinition"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> </grammar> </namespace> @@ -373,11 +341,9 @@ </choice> </define> <define name="CT_LightRig"> - <optional> <element name="rot"> <ref name="CT_SphereCoords"/> </element> - </optional> <attribute name="rig"> <ref name="ST_LightRigType"/> </attribute> @@ -438,11 +404,9 @@ <element name="lightRig"> <ref name="CT_LightRig"/> </element> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> </grammar> </namespace> @@ -479,21 +443,15 @@ </choice> </define> <define name="CT_Bevel"> - <optional> <attribute name="w"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="h"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="prst"> <ref name="ST_BevelPresetType"/> </attribute> - </optional> </define> <define name="ST_PresetMaterialType"> <choice> @@ -531,59 +489,39 @@ </define> <define name="CT_Shape3D"> <group> - <optional> <element name="bevelT"> <ref name="CT_Bevel"/> </element> - </optional> - <optional> <element name="bevelB"> <ref name="CT_Bevel"/> </element> - </optional> - <optional> <element name="extrusionClr"> <ref name="CT_Color"/> </element> - </optional> - <optional> <element name="contourClr"> <ref name="CT_Color"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="z"> <ref name="ST_Coordinate"/> </attribute> - </optional> - <optional> <attribute name="extrusionH"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="contourW"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="prstMaterial"> <ref name="ST_PresetMaterialType"/> </attribute> - </optional> </define> <define name="CT_FlatText"> - <optional> <attribute name="z"> <ref name="ST_Coordinate"/> </attribute> - </optional> </define> <define name="EG_Text3D"> <choice> @@ -762,24 +700,18 @@ <empty/> </define> <define name="CT_Camera"> - <optional> <element name="rot"> <ref name="CT_SphereCoords"/> </element> - </optional> <attribute name="prst"> <ref name="ST_PresetCameraType"/> </attribute> - <optional> <attribute name="fov"> <ref name="ST_FOVAngle"/> </attribute> - </optional> - <optional> <attribute name="zoom"> <ref name="ST_PositivePercentage"/> </attribute> - </optional> </define> </grammar> <resource name="ST_PresetCameraType" resource="List"> @@ -930,11 +862,9 @@ <element name="folHlink"> <ref name="CT_Color"/> </element> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> <attribute name="name"> <data type="string"> @@ -943,12 +873,10 @@ </define> <define name="CT_CustomColor"> <ref name="EG_ColorChoice"/> - <optional> <attribute name="name"> <data type="string"> </data> </attribute> - </optional> </define> <define name="CT_SupplementalFont"> <attribute name="script"> @@ -983,24 +911,18 @@ <ref name="CT_SupplementalFont"/> </element> </zeroOrMore> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> <define name="CT_EffectStyleItem"> <ref name="EG_EffectProperties"/> - <optional> <element name="scene3d"> <ref name="CT_Scene3D"/> </element> - </optional> - <optional> <element name="sp3d"> <ref name="CT_Shape3D"/> </element> - </optional> </define> <define name="CT_FontScheme"> <group> @@ -1010,11 +932,9 @@ <element name="minorFont"> <ref name="CT_FontCollection"/> </element> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> <attribute name="name"> <data type="string"/> @@ -1059,11 +979,9 @@ <ref name="CT_BackgroundFillStyleList"/> </element> </group> - <optional> <attribute name="name"> <data type="string"/> </attribute> - </optional> </define> <define name="CT_BaseStyles"> <element name="clrScheme"> @@ -1075,11 +993,9 @@ <element name="fmtScheme"> <ref name="CT_StyleMatrix"/> </element> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> </grammar> <resource name="ST_StyleMatrixColumnIndex" resource="Integer"/> @@ -1181,21 +1097,15 @@ <attribute name="typeface"> <ref name="ST_TextTypeface"/> </attribute> - <optional> <attribute name="panose"> <ref name="ST_Panose"/> </attribute> - </optional> - <optional> <attribute name="pitchFamily"> <data type="byte"/> </attribute> - </optional> - <optional> <attribute name="charset"> <data type="byte"/> </attribute> - </optional> </define> <define name="ST_TextLanguageID"> <data type="string"/> @@ -1254,11 +1164,9 @@ <element name="uLnTx"> <ref name="CT_TextUnderlineLineFollowText"/> </element> - <optional> <element name="uLn"> <ref name="CT_LineProperties"/> </element> - </optional> </choice> </define> <define name="EG_TextUnderlineFill"> @@ -1293,159 +1201,95 @@ </define> <define name="CT_TextCharacterProperties"> <group> - <optional> <element name="ln"> <ref name="CT_LineProperties"/> </element> - </optional> - <optional> <ref name="EG_FillProperties"/> - </optional> - <optional> <ref name="EG_EffectProperties"/> - </optional> - <optional> <element name="highlight"> <ref name="CT_Color"/> </element> - </optional> - <optional> <ref name="EG_TextUnderlineLine"/> - </optional> - <optional> <ref name="EG_TextUnderlineFill"/> - </optional> - <optional> <element name="latin"> <ref name="CT_TextFont"/> </element> - </optional> - <optional> <element name="ea"> <ref name="CT_TextFont"/> </element> - </optional> - <optional> <element name="cs"> <ref name="CT_TextFont"/> </element> - </optional> - <optional> <element name="sym"> <ref name="CT_TextFont"/> </element> - </optional> - <optional> <element name="hlinkClick"> <ref name="CT_Hyperlink"/> </element> - </optional> - <optional> <element name="hlinkMouseOver"> <ref name="CT_Hyperlink"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="kumimoji"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="lang"> <ref name="ST_TextLanguageID"/> </attribute> - </optional> - <optional> <attribute name="altLang"> <ref name="ST_TextLanguageID"/> </attribute> - </optional> - <optional> <attribute name="sz"> <ref name="ST_TextFontSize"/> </attribute> - </optional> - <optional> <attribute name="b"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="i"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="u"> <ref name="ST_TextUnderlineType"/> </attribute> - </optional> - <optional> <attribute name="strike"> <ref name="ST_TextStrikeType"/> </attribute> - </optional> - <optional> <attribute name="kern"> <ref name="ST_TextNonNegativePoint"/> </attribute> - </optional> - <optional> <attribute name="cap"> <ref name="ST_TextCapsType"/> </attribute> - </optional> - <optional> <attribute name="spc"> <ref name="ST_TextPoint"/> </attribute> - </optional> - <optional> <attribute name="normalizeH"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="baseline"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="noProof"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="dirty"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="err"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="smtClean"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="smtId"> <data type="unsignedInt"/> </attribute> - </optional> - <optional> <attribute name="bmk"> <data type="string"/> </attribute> - </optional> </define> </grammar> <resource name="ST_TextPoint" resource="Integer"/> @@ -1506,23 +1350,17 @@ <empty/> </define> <define name="CT_AlphaInverseEffect"> - <optional> <ref name="EG_ColorChoice"/> - </optional> </define> <define name="CT_AlphaModulateFixedEffect"> - <optional> <attribute name="amt"> <ref name="ST_PositivePercentage"/> </attribute> - </optional> </define> <define name="CT_AlphaOutsetEffect"> - <optional> <attribute name="rad"> <ref name="ST_Coordinate"/> </attribute> - </optional> </define> <define name="CT_AlphaReplaceEffect"> <attribute name="a"> @@ -1535,16 +1373,12 @@ </attribute> </define> <define name="CT_BlurEffect"> - <optional> <attribute name="rad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="grow"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_ColorChangeEffect"> <group> @@ -1555,11 +1389,9 @@ <ref name="CT_Color"/> </element> </group> - <optional> <attribute name="useA"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_ColorReplaceEffect"> <ref name="EG_ColorChoice"/> @@ -1571,109 +1403,73 @@ </define> <define name="CT_GlowEffect"> <ref name="EG_ColorChoice"/> - <optional> <attribute name="rad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> </define> <define name="CT_GrayscaleEffect"> <empty/> </define> <define name="CT_HSLEffect"> - <optional> <attribute name="hue"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="sat"> <ref name="ST_FixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="lum"> <ref name="ST_FixedPercentage"/> </attribute> - </optional> </define> <define name="CT_InnerShadowEffect"> <ref name="EG_ColorChoice"/> - <optional> <attribute name="blurRad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> </define> <define name="CT_LuminanceEffect"> - <optional> <attribute name="bright"> <ref name="ST_FixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="contrast"> <ref name="ST_FixedPercentage"/> </attribute> - </optional> </define> <define name="CT_OuterShadowEffect"> <ref name="EG_ColorChoice"/> - <optional> <attribute name="blurRad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="kx"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="ky"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_RectAlignment"/> </attribute> - </optional> - <optional> <attribute name="rotWithShape"> <data type="boolean"/> </attribute> - </optional> </define> <define name="ST_PresetShadowVal"> <choice> @@ -1724,100 +1520,64 @@ <attribute name="prst"> <ref name="ST_PresetShadowVal"/> </attribute> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> </define> <define name="CT_ReflectionEffect"> - <optional> <attribute name="blurRad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="stA"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="stPos"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="endA"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="endPos"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="fadeDir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="kx"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="ky"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_RectAlignment"/> </attribute> - </optional> - <optional> <attribute name="rotWithShape"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_RelativeOffsetEffect"> - <optional> <attribute name="tx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="ty"> <ref name="ST_Percentage"/> </attribute> - </optional> </define> <define name="CT_SoftEdgesEffect"> <attribute name="rad"> @@ -1825,68 +1585,46 @@ </attribute> </define> <define name="CT_TintEffect"> - <optional> <attribute name="hue"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="amt"> <ref name="ST_FixedPercentage"/> </attribute> - </optional> </define> <define name="CT_TransformEffect"> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="kx"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="ky"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="tx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="ty"> <ref name="ST_Percentage"/> </attribute> - </optional> </define> <define name="CT_NoFillProperties"> <empty/> </define> <define name="CT_SolidColorFillProperties"> - <optional> <ref name="EG_ColorChoice"/> - </optional> </define> <define name="CT_LinearShadeProperties"> - <optional> <attribute name="ang"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="scaled"> <data type="boolean"/> </attribute> - </optional> </define> <define name="ST_PathShadeType"> <choice> @@ -1899,16 +1637,12 @@ </choice> </define> <define name="CT_PathShadeProperties"> - <optional> <element name="fillToRect"> <ref name="CT_RelativeRect"/> </element> - </optional> - <optional> <attribute name="path"> <ref name="ST_PathShadeType"/> </attribute> - </optional> </define> <define name="EG_ShadeProperties"> <choice> @@ -1947,69 +1681,45 @@ </define> <define name="CT_GradientFillProperties"> <group> - <optional> <element name="gsLst"> <ref name="CT_GradientStopList"/> </element> - </optional> - <optional> <ref name="EG_ShadeProperties"/> - </optional> - <optional> <element name="tileRect"> <ref name="CT_RelativeRect"/> </element> - </optional> </group> - <optional> <attribute name="flip"> <ref name="ST_TileFlipMode"/> </attribute> - </optional> - <optional> <attribute name="rotWithShape"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_TileInfoProperties"> - <optional> <attribute name="tx"> <ref name="ST_Coordinate"/> </attribute> - </optional> - <optional> <attribute name="ty"> <ref name="ST_Coordinate"/> </attribute> - </optional> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="flip"> <ref name="ST_TileFlipMode"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_RectAlignment"/> </attribute> - </optional> </define> <define name="CT_StretchInfoProperties"> - <optional> <element name="fillRect"> <ref name="CT_RelativeRect"/> </element> - </optional> </define> <define name="EG_FillModeProperties"> <choice> @@ -2092,45 +1802,31 @@ </element> </choice> </zeroOrMore> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> <ref name="AG_Blob"/> - <optional> <attribute name="cstate"> <ref name="ST_BlipCompression"/> </attribute> - </optional> </define> <define name="CT_BlipFillProperties"> <group> - <optional> <element name="blip"> <ref name="CT_Blip"/> </element> - </optional> - <optional> <element name="srcRect"> <ref name="CT_RelativeRect"/> </element> - </optional> - <optional> <ref name="EG_FillModeProperties"/> - </optional> </group> - <optional> <attribute name="dpi"> <data type="unsignedInt"/> </attribute> - </optional> - <optional> <attribute name="rotWithShape"> <data type="boolean"/> </attribute> - </optional> </define> <define name="ST_PresetPatternVal"> <choice> @@ -2246,22 +1942,16 @@ </define> <define name="CT_PatternFillProperties"> <group> - <optional> <element name="fgClr"> <ref name="CT_Color"/> </element> - </optional> - <optional> <element name="bgClr"> <ref name="CT_Color"/> </element> - </optional> </group> - <optional> <attribute name="prst"> <ref name="ST_PresetPatternVal"/> </attribute> - </optional> </define> <define name="CT_GroupFillProperties"> <empty/> @@ -2425,16 +2115,12 @@ <zeroOrMore> <ref name="EG_Effect"/> </zeroOrMore> - <optional> <attribute name="type"> <ref name="ST_EffectContainerType"/> </attribute> - </optional> - <optional> <attribute name="name"> <data type="token"/> </attribute> - </optional> </define> <define name="CT_AlphaModulateEffect"> <element name="cont"> @@ -2450,46 +2136,30 @@ </attribute> </define> <define name="CT_EffectList"> - <optional> <element name="blur"> <ref name="CT_BlurEffect"/> </element> - </optional> - <optional> <element name="fillOverlay"> <ref name="CT_FillOverlayEffect"/> </element> - </optional> - <optional> <element name="glow"> <ref name="CT_GlowEffect"/> </element> - </optional> - <optional> <element name="innerShdw"> <ref name="CT_InnerShadowEffect"/> </element> - </optional> - <optional> <element name="outerShdw"> <ref name="CT_OuterShadowEffect"/> </element> - </optional> - <optional> <element name="prstShdw"> <ref name="CT_PresetShadowEffect"/> </element> - </optional> - <optional> <element name="reflection"> <ref name="CT_ReflectionEffect"/> </element> - </optional> - <optional> <element name="softEdge"> <ref name="CT_SoftEdgesEffect"/> </element> - </optional> </define> <define name="EG_EffectProperties"> <choice> @@ -2741,21 +2411,15 @@ </choice> </define> <define name="CT_LineEndProperties"> - <optional> <attribute name="type"> <ref name="ST_LineEndType"/> </attribute> - </optional> - <optional> <attribute name="w"> <ref name="ST_LineEndWidth"/> </attribute> - </optional> - <optional> <attribute name="len"> <ref name="ST_LineEndLength"/> </attribute> - </optional> </define> <define name="EG_LineFillProperties"> <choice> @@ -2780,11 +2444,9 @@ <empty/> </define> <define name="CT_LineJoinMiterProperties"> - <optional> <attribute name="lim"> <ref name="ST_PositivePercentage"/> </attribute> - </optional> </define> <define name="EG_LineJoinProperties"> <choice> @@ -2826,11 +2488,9 @@ </choice> </define> <define name="CT_PresetLineDashProperties"> - <optional> <attribute name="val"> <ref name="ST_PresetLineDashVal"/> </attribute> - </optional> </define> <define name="CT_DashStop"> <attribute name="d"> @@ -2894,51 +2554,31 @@ </define> <define name="CT_LineProperties"> <group> - <optional> <ref name="EG_LineFillProperties"/> - </optional> - <optional> <ref name="EG_LineDashProperties"/> - </optional> - <optional> <ref name="EG_LineJoinProperties"/> - </optional> - <optional> <element name="headEnd"> <ref name="CT_LineEndProperties"/> </element> - </optional> - <optional> <element name="tailEnd"> <ref name="CT_LineEndProperties"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="w"> <ref name="ST_LineWidth"/> </attribute> - </optional> - <optional> <attribute name="cap"> <ref name="ST_LineCap"/> </attribute> - </optional> - <optional> <attribute name="cmpd"> <ref name="ST_CompoundLine"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_PenAlignment"/> </attribute> - </optional> </define> </grammar> <resource name="ST_LineEndType" resource="List"> @@ -3019,76 +2659,46 @@ <include href="dml-shapeLineProperties.rng"/> <define name="CT_ShapeProperties"> <group> - <optional> <element name="xfrm"> <ref name="CT_Transform2D"/> </element> - </optional> - <optional> <ref name="EG_Geometry"/> - </optional> - <optional> <ref name="EG_FillProperties"/> - </optional> - <optional> <element name="ln"> <ref name="CT_LineProperties"/> </element> - </optional> - <optional> <ref name="EG_EffectProperties"/> - </optional> - <optional> <element name="scene3d"> <ref name="CT_Scene3D"/> </element> - </optional> - <optional> <element name="sp3d"> <ref name="CT_Shape3D"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="bwMode"> <ref name="ST_BlackWhiteMode"/> </attribute> - </optional> </define> <define name="CT_GroupShapeProperties"> <group> - <optional> <element name="xfrm"> <ref name="CT_GroupTransform2D"/> </element> - </optional> - <optional> <ref name="EG_FillProperties"/> - </optional> - <optional> <ref name="EG_EffectProperties"/> - </optional> - <optional> <element name="scene3d"> <ref name="CT_Scene3D"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="bwMode"> <ref name="ST_BlackWhiteMode"/> </attribute> - </optional> </define> </grammar> <resource name="CT_ShapeProperties" resource="Properties"> @@ -3413,11 +3023,9 @@ <attribute name="val"> <ref name="ST_SystemColorVal"/> </attribute> - <optional> <attribute name="lastClr"> <ref name="ST_HexBinary3"/> </attribute> - </optional> </define> <define name="ST_SchemeColorVal"> <choice> @@ -3777,71 +3385,47 @@ </define> <define name="CT_Transform2D"> <group> - <optional> <element name="off"> <ref name="CT_Point2D"/> </element> - </optional> - <optional> <element name="ext"> <ref name="CT_PositiveSize2D"/> </element> - </optional> </group> - <optional> <attribute name="rot"> <ref name="ST_Angle"/> </attribute> - </optional> - <optional> <attribute name="flipH"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="flipV"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_GroupTransform2D"> <group> - <optional> <element name="off"> <ref name="CT_Point2D"/> </element> - </optional> - <optional> <element name="ext"> <ref name="CT_PositiveSize2D"/> </element> - </optional> - <optional> <element name="chOff"> <ref name="CT_Point2D"/> </element> - </optional> - <optional> <element name="chExt"> <ref name="CT_PositiveSize2D"/> </element> - </optional> </group> - <optional> <attribute name="rot"> <ref name="ST_Angle"/> </attribute> - </optional> - <optional> <attribute name="flipH"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="flipV"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_Point3D"> <attribute name="x"> @@ -3877,26 +3461,18 @@ </attribute> </define> <define name="CT_RelativeRect"> - <optional> <attribute name="l"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="t"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="r"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="b"> <ref name="ST_Percentage"/> </attribute> - </optional> </define> <define name="ST_RectAlignment"> <choice> @@ -3980,81 +3556,53 @@ </choice> </define> <define name="AG_Blob"> - <optional> <attribute name="r:embed"> <text/> </attribute> - </optional> - <optional> <attribute name="r:link"> <text/> </attribute> - </optional> </define> <define name="CT_EmbeddedWAVAudioFile"> <attribute name="r:embed"/> - <optional> <attribute name="name"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="builtIn"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_Hyperlink"> <group> - <optional> <element name="snd"> <ref name="CT_EmbeddedWAVAudioFile"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="r:id"/> - </optional> - <optional> <attribute name="invalidUrl"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="action"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="tgtFrame"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="tooltip"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="history"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="highlightClick"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="endSnd"> <data type="boolean"/> </attribute> - </optional> </define> <define name="ST_DrawingElementId"> <data type="unsignedInt"/> @@ -4366,187 +3914,121 @@ <!-- ISO RELAX NG Schema --> <include href="dml-shapeGeometry.rng"/> <define name="AG_Locking"> - <optional> <attribute name="noGrp"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noSelect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noRot"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noChangeAspect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noMove"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noResize"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noEditPoints"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noAdjustHandles"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noChangeArrowheads"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noChangeShapeType"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_ConnectorLocking"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> <ref name="AG_Locking"/> </define> <define name="CT_ShapeLocking"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> <ref name="AG_Locking"/> - <optional> <attribute name="noTextEdit"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_PictureLocking"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> <ref name="AG_Locking"/> - <optional> <attribute name="noCrop"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_GroupLocking"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> - <optional> <attribute name="noGrp"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noUngrp"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noSelect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noRot"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noChangeAspect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noMove"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noResize"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_GraphicalObjectFrameLocking"> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> - <optional> <attribute name="noGrp"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noDrilldown"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noSelect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noChangeAspect"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noMove"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="noResize"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_NonVisualDrawingProps"> <group> - <optional> <element name="a:hlinkClick"> <ref name="BUILT_IN_ANY_TYPE"/> </element> - </optional> - <optional> <element name="hlinkHover"> <ref name="CT_Hyperlink"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> <attribute name="id"> <ref name="ST_DrawingElementId"/> @@ -4554,105 +4036,71 @@ <attribute name="name"> <data type="string"/> </attribute> - <optional> <attribute name="descr"> <data type="string"/> </attribute> - </optional> - <optional> <attribute name="hidden"> <data type="boolean"/> </attribute> - </optional> - <optional> <attribute name="title"> <data type="string"/> </attribute> - </optional> </define> <define name="CT_NonVisualDrawingShapeProps"> <group> - <optional> <element name="spLocks"> <ref name="CT_ShapeLocking"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="txBox"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_NonVisualConnectorProperties"> - <optional> <element name="cxnSpLocks"> <ref name="CT_ConnectorLocking"/> </element> - </optional> - <optional> <element name="stCxn"> <ref name="CT_Connection"/> </element> - </optional> - <optional> <element name="endCxn"> <ref name="CT_Connection"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> <define name="CT_NonVisualPictureProperties"> <group> - <optional> <element name="picLocks"> <ref name="CT_PictureLocking"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </group> - <optional> <attribute name="preferRelativeResize"> <data type="boolean"/> </attribute> - </optional> </define> <define name="CT_NonVisualGroupDrawingShapeProps"> - <optional> <element name="grpSpLocks"> <ref name="CT_GroupLocking"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> <define name="CT_NonVisualGraphicFrameProperties"> - <optional> <element name="graphicFrameLocks"> <ref name="CT_GraphicalObjectFrameLocking"/> </element> - </optional> - <optional> <element name="extLst"> <ref name="CT_OfficeArtExtensionList"/> </element> - </optional> </define> </grammar> <resource name="CT_GraphicalObjectFrameLocking" resource="Properties"> @@ -5126,131 +4574,89 @@ <define name="EG_ColorChoice"> <choice> - <optional> <element name="srgbClr"> <ref name="CT_SRgbColor"/> </element> - </optional> - <optional> <element name="schemeClr"> <ref name="CT_SchemeColor"/> </element> - </optional> </choice> </define> <define name="EG_ColorTransform"> <choice> - <optional> <element name="tint"> <ref name="CT_PositiveFixedPercentage"/> </element> - </optional> - <optional> <element name="shade"> <ref name="CT_PositiveFixedPercentage"/> </element> - </optional> - <optional> <element name="alpha"> <ref name="CT_PositiveFixedPercentage"/> </element> - </optional> - <optional> <element name="hueMod"> <ref name="CT_PositivePercentage"/> </element> - </optional> - <optional> <element name="sat"> <ref name="CT_Percentage"/> </element> - </optional> - <optional> <element name="satOff"> <ref name="CT_Percentage"/> </element> - </optional> - <optional> <element name="satMod"> <ref name="CT_Percentage"/> </element> - </optional> - <optional> <element name="lum"> <ref name="CT_Percentage"/> </element> - </optional> - <optional> <element name="lumOff"> <ref name="CT_Percentage"/> </element> - </optional> - <optional> <element name="lumMod"> <ref name="CT_Percentage"/> </element> - </optional> </choice> </define> <define name="EG_FillProperties"> <choice> - <optional> <element name="noFill"> <ref name="CT_Empty"/> </element> - </optional> - <optional> <element name="solidFill"> <ref name="CT_SolidColorFillProperties"/> </element> - </optional> - <optional> <element name="gradFill"> <ref name="CT_GradientFillProperties"/> </element> - </optional> </choice> </define> <define name="EG_ShadeProperties"> <choice> - <optional> <element name="lin"> <ref name="CT_LinearShadeProperties"/> </element> - </optional> - <optional> <element name="path"> <ref name="CT_PathShadeProperties"/> </element> - </optional> </choice> </define> <define name="EG_LineDashProperties"> <choice> - <optional> <element name="prstDash"> <ref name="CT_PresetLineDashProperties"/> </element> - </optional> </choice> </define> <define name="EG_LineJoinProperties"> <choice> - <optional> <element name="round"> <ref name="CT_Empty"/> </element> - </optional> - <optional> <element name="bevel"> <ref name="CT_Empty"/> </element> - </optional> - <optional> <element name="miter"> <ref name="CT_LineJoinMiterProperties"/> </element> - </optional> </choice> </define> @@ -5288,38 +4694,26 @@ <ref name="EG_ColorChoice"/> </define> <define name="CT_GradientFillProperties"> - <optional> <element name="gsLst"> <ref name="CT_GradientStopList"/> </element> - </optional> - <optional> <ref name="EG_ShadeProperties"/> - </optional> </define> <define name="CT_LinearShadeProperties"> - <optional> <attribute name="ang"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="scaled"> <ref name="ST_OnOff"/> </attribute> - </optional> </define> <define name="CT_PathShadeProperties"> - <optional> <element name="fillToRect"> <ref name="CT_RelativeRect"/> </element> - </optional> - <optional> <attribute name="path"> <ref name="ST_PathShadeType"/> </attribute> - </optional> </define> <define name="CT_GradientStopList"> <oneOrMore> @@ -5335,47 +4729,33 @@ </attribute> </define> <define name="CT_RelativeRect"> - <optional> <attribute name="l"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="t"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="r"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="b"> <ref name="ST_Percentage"/> </attribute> - </optional> </define> <define name="CT_PresetLineDashProperties"> - <optional> <attribute name="val"> <ref name="ST_PresetLineDashVal"/> </attribute> - </optional> </define> <define name="CT_LineJoinMiterProperties"> - <optional> <attribute name="lim"> <ref name="ST_PositivePercentage"/> </attribute> - </optional> </define> <define name="CT_Camera"> - <optional> <attribute name="prst"> <ref name="ST_PresetCameraType"/> </attribute> - </optional> </define> <define name="CT_LightRig"> <element name="rot"> @@ -5400,21 +4780,15 @@ </attribute> </define> <define name="CT_Bevel"> - <optional> <attribute name="w"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="h"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="prst"> <ref name="ST_BevelPresetType"/> </attribute> - </optional> </define> <define name="CT_Color"> <ref name="EG_ColorChoice"/> @@ -5423,177 +4797,111 @@ <attribute name="id"> <ref name="ST_UnsignedDecimalNumber"/> </attribute> - <optional> <attribute name="val"> <ref name="ST_OnOff"/> </attribute> - </optional> </define> <define name="CT_OnOff"> - <optional> <attribute name="val"> <ref name="ST_OnOff"/> </attribute> - </optional> </define> <!-- Main Elements--> <define name="CT_Glow"> - <optional> <ref name="EG_ColorChoice"/> - </optional> <attribute name="rad"> <ref name="ST_PositiveCoordinate"/> </attribute> </define> <define name="CT_Shadow"> - <optional> <ref name="EG_ColorChoice"/> - </optional> - <optional> <attribute name="blurRad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="kx"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="ky"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_RectAlignment"/> </attribute> - </optional> </define> <define name="CT_Reflection"> - <optional> <attribute name="blurRad"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="stA"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="stPos"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="endA"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="endPos"> <ref name="ST_PositiveFixedPercentage"/> </attribute> - </optional> - <optional> <attribute name="dist"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="dir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="fadeDir"> <ref name="ST_PositiveFixedAngle"/> </attribute> - </optional> - <optional> <attribute name="sx"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="sy"> <ref name="ST_Percentage"/> </attribute> - </optional> - <optional> <attribute name="kx"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="ky"> <ref name="ST_FixedAngle"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_RectAlignment"/> </attribute> - </optional> </define> <define name="CT_TextOutlineEffect"> - <optional> <ref name="EG_FillProperties"/> - </optional> - <optional> <ref name="EG_LineDashProperties"/> - </optional> - <optional> <ref name="EG_LineJoinProperties"/> - </optional> - <optional> <attribute name="w"> <ref name="ST_LineWidth"/> </attribute> - </optional> - <optional> <attribute name="cap"> <ref name="ST_LineCap"/> </attribute> - </optional> - <optional> <attribute name="cmpd"> <ref name="ST_CompoundLine"/> </attribute> - </optional> - <optional> <attribute name="algn"> <ref name="ST_PenAlignment"/> </attribute> - </optional> </define> <define name="CT_FillTextEffect"> - <optional> <ref name="EG_FillProperties"/> - </optional> </define> <define name="CT_Scene3D"> <element name="camera"> @@ -5616,21 +4924,15 @@ <element name="contourClr"> <ref name="CT_Color"/> </element> - <optional> <attribute name="extrusionH"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="contourW"> <ref name="ST_PositiveCoordinate"/> </attribute> - </optional> - <optional> <attribute name="prstMaterial"> <ref name="ST_PresetMaterialType"/> </attribute> - </optional> </define> <define name="CT_Ligatures"> <attribute name="val"> @@ -5725,21 +5027,15 @@ </attribute> </define> <define name="CT_SdtCheckbox"> - <optional> <element name="checked"> <ref name="CT_String"/> </element> - </optional> - <optional> <element name="checkedState"> <ref name="CT_String"/> </element> - </optional> - <optional> <element name="uncheckedState"> <ref name="CT_String"/> </element> - </optional> </define> </grammar> @@ -6233,252 +5529,200 @@ <!-- Complex types for effects --> <define name="CT_PictureEffectBlur"> - <optional> <attribute name="visible"> <ref name="ST_ArtisticEffectParam100"/> </attribute> - </optional> </define> <define name="CT_PictureEffectCement"> - <optional> <attribute name="trans"> <ref name="ST_PositiveFixedPercentage"/> </attribute> <attribute name="crackSpacing"> <ref name="ST_ArtisticEffectParam100"/> </attribute> - </optional> </define> <define name="CT_PictureEffectChalkSketch"> - <optional> <attribute name="trans"> <ref name="ST_PositiveFixedPercentage"/> </attribute> <attribute name="pressure"> <ref name="ST_ArtisticEffectParam4"/> </attribute> - </optional> </define> <define name="CT_PictureEffectCrisscrossEtching"> - <optional> <attribute name="trans"> <ref name="ST_PositiveFixedPercentage"/> </attribute> <attribute name="pressure"> <ref name="ST_ArtisticEffectParam4"/> </attribute> - </optional> </define> <define name="CT_PictureEffectCutout"> - <optional> <attribute name="trans"> <ref name="ST_PositiveFixedPercentage"/> </attribute> <attribute name="numberOfShades"> <ref name="ST_ArtisticEffectParam6"/> </attribute> - </optional> </define> <define name="CT_PictureEffectFilmGrain"> - <optional> <attribute name="trans"> <ref name="ST_PositiveFixedPercentage"/> ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits