22 #include <com/sun/star/lang/XServiceInfo.hpp>
23 #include <com/sun/star/form/FormComponentType.hpp>
24 #include <com/sun/star/awt/VisualEffect.hpp>
25 #include <com/sun/star/awt/ScrollBarOrientation.hpp>
26 #include <com/sun/star/awt/XControlModel.hpp>
27 #include <com/sun/star/drawing/XShape.hpp>
28 #include <com/sun/star/form/binding/XBindableValue.hpp>
29 #include <com/sun/star/form/binding/XListEntrySink.hpp>
30 #include <com/sun/star/awt/Size.hpp>
31 #include <com/sun/star/chart/XChartDocument.hpp>
42 #include <unonames.hxx>
60 #include <document.hxx>
65 #include <oox/token/tokens.hxx>
70 #include <oox/token/namespaces.hxx>
75 using ::com::sun::star::uno::UNO_QUERY;
76 using ::com::sun::star::uno::Reference;
77 using ::com::sun::star::uno::Sequence;
78 using ::com::sun::star::lang::XServiceInfo;
79 using ::com::sun::star::beans::XPropertySet;
80 using ::com::sun::star::drawing::XShape;
81 using ::com::sun::star::drawing::XShapes;
82 using ::com::sun::star::frame::XModel;
83 using ::com::sun::star::awt::XControlModel;
84 using ::com::sun::star::form::binding::XBindableValue;
85 using ::com::sun::star::form::binding::XListEntrySink;
86 using ::com::sun::star::script::ScriptEventDescriptor;
87 using ::com::sun::star::table::CellAddress;
88 using ::com::sun::star::table::CellRangeAddress;
89 using ::oox::drawingml::DrawingML;
90 using ::oox::drawingml::ChartExport;
130 rComments->startElement(
FSNS(XML_xdr, XML_col));
131 rComments->writeEscaped( OUString::number( aRect.
Left() ) );
132 rComments->endElement(
FSNS( XML_xdr, XML_col ) );
133 rComments->startElement(
FSNS(XML_xdr, XML_colOff));
134 rComments->writeEscaped( OUString::number( aRect.
Top() ) );
135 rComments->endElement(
FSNS( XML_xdr, XML_colOff ) );
136 rComments->startElement(
FSNS(XML_xdr, XML_row));
137 rComments->writeEscaped( OUString::number( aRect.
Right() ) );
138 rComments->endElement(
FSNS( XML_xdr, XML_row ) );
139 rComments->startElement(
FSNS(XML_xdr, XML_rowOff));
140 rComments->writeEscaped( OUString::number( aRect.
Bottom() ) );
141 rComments->endElement(
FSNS( XML_xdr, XML_rowOff ) );
151 sal_Int32 nCol = 0, nRow = 0;
152 sal_Int32 nColOff = 0, nRowOff= 0;
165 if( r.
Top() <= aRect.
Top() )
168 nRowOff = aRect.
Top() - r.
Top();
173 nRow-1, lcl_hmm2output( nRowOff, bInEMU ) );
188 if( r.
Top() <= aRect.
Top() )
191 nRowOff = aRect.
Top() - r.
Top();
196 nRow-1, lcl_hmm2output( nRowOff, bInEMU ) );
213 nRow, lcl_hmm2output( aRect.
Bottom() - r.
Top(), bInEMU ));
230 nRow, lcl_hmm2output( aRect.
Bottom() - r.
Top(), bInEMU ));
274 OSL_FAIL(
"XclExpDffAnchorBase::ImplSetFlags - not implemented" );
279 OSL_FAIL(
"XclExpDffAnchorBase::ImplCalcAnchorRect - not implemented" );
284 mnScTab( rRoot.GetCurrScTab() )
303 const Size& rPageSize, sal_Int32 nScaleX, sal_Int32 nScaleY ) :
340 mrEscherEx( rEscherEx ),
341 mnFragmentKey( rEscherEx.InitNextDffFragment() )
348 "XclExpMsoDrawingBase::WriteBody - DFF stream position mismatch" );
362 0xBF, 0x00, 0x08, 0x00, 0x08, 0x00, 0x81, 0x01,
363 0x09, 0x00, 0x00, 0x08, 0xC0, 0x01, 0x40, 0x00,
367 rDffStrm.
WriteBytes(spnDffOpt,
sizeof(spnDffOpt));
370 static const sal_uInt8 spnDffSplitMenuColors[] = {
371 0x0D, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x08,
372 0x17, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x00, 0x10
375 rDffStrm.
WriteBytes(spnDffSplitMenuColors,
sizeof(spnDffSplitMenuColors));
397 aBmp.
Convert( BmpConversion::N24Bit );
403 sal_Int32 nWidth = ::std::min< sal_Int32 >( pAccess->
Width(), 0xFFFF );
404 sal_Int32 nHeight = ::std::min< sal_Int32 >( pAccess->
Height(), 0xFFFF );
405 if( (nWidth <= 0) || (nHeight <= 0) )
409 sal_uInt32 nTmpSize =
static_cast< sal_uInt32
>( (nWidth * 3 + nPadding) * nHeight + 12 );
417 <<
static_cast< sal_uInt16
>( nWidth )
418 << static_cast< sal_uInt16 >( nHeight )
422 for( sal_Int32 nY = nHeight - 1; nY >= 0; --nY )
425 for( sal_Int32 nX = 0; nX < nWidth; ++nX )
428 rStrm << rBmpColor.GetBlue() << rBmpColor.GetGreen() << rBmpColor.GetRed();
440 DrawingML aDML(pWorksheet, &rStrm, drawingml::DOCUMENT_XLSX);
441 OUString rId = aDML.WriteImage(
maGraphic );
442 pWorksheet->singleElement(XML_picture,
FSNS(XML_r, XML_id), rId);
464 if( !xCtrlModel.is() )
469 Reference< XBindableValue > xBindable( xCtrlModel, UNO_QUERY );
472 Reference< XServiceInfo > xServInfo( xBindable->getValueBinding(), UNO_QUERY );
476 CellAddress aApiAddress;
488 Reference< XListEntrySink > xEntrySink( xCtrlModel, UNO_QUERY );
489 if( !xEntrySink.is() )
492 Reference< XServiceInfo > xServInfo( xEntrySink->getListEntrySource(), UNO_QUERY );
497 CellRangeAddress aApiRange;
510 sal_uInt16 nFmlaSize = rTokArr.
GetSize();
511 rStrm << nFmlaSize << sal_uInt32( 0 );
528 const tools::Rectangle* pChildAnchor,
const OUString& rClassName, sal_uInt32 nStrmStart, sal_uInt32 nStrmSize ) :
531 maClassName( rClassName ),
532 mnStrmStart( nStrmStart ),
533 mnStrmSize( nStrmSize )
546 ShapeFlag::HaveShapeProperty | ShapeFlag::HaveAnchor | ShapeFlag::OLEShape );
555 if( aCtrlProp.
GetProperty( aCtrlName,
"Name" ) && !aCtrlName.isEmpty() )
561 if( xShapePS.is() && aPropOpt.CreateGraphicProperties( xShapePS,
"MetaFile",
false ) )
586 rStrm << sal_uInt16( 2 );
591 rStrm << sal_uInt16( 0x0031 );
596 sal_uInt16 nClassNameSize =
static_cast< sal_uInt16
>( aClass.
GetSize() );
597 sal_uInt16 nClassNamePad = nClassNameSize & 1;
598 sal_uInt16 nFirstPartSize = 12 + nClassNameSize + nClassNamePad;
601 sal_uInt16 nCellLinkSize = pCellLink ? ((pCellLink->
GetSize() + 7) & 0xFFFE) : 0;
604 sal_uInt16 nSrcRangeSize = pSrcRange ? ((pSrcRange->
GetSize() + 7) & 0xFFFE) : 0;
606 sal_uInt16 nPictFmlaSize = nFirstPartSize + nCellLinkSize + nSrcRangeSize + 18;
609 rStrm << nFirstPartSize
620 rStrm << nCellLinkSize;
624 rStrm << nSrcRangeSize;
647 mbFlatButton(
false ),
648 mbFlatBorder(
false ),
650 mbScrollHor(
false ),
656 namespace FormCompType = css::form::FormComponentType;
657 namespace AwtVisualEffect = css::awt::VisualEffect;
658 namespace AwtScrollOrient = css::awt::ScrollBarOrientation;
661 if( !xShape.is() || !aCtrlProp.
Is() )
664 mnHeight = xShape->getSize().Height;
669 sal_Int16 nClassId = 0;
717 OUString aDescrText = pSdrObj->GetDescription();
718 if(!aDescrText.isEmpty())
762 sal_Int16 nApiButton = AwtVisualEffect::LOOK3D;
763 sal_Int16 nApiBorder = AwtVisualEffect::LOOK3D;
766 case FormCompType::LISTBOX:
767 case FormCompType::COMBOBOX:
770 case FormCompType::CHECKBOX:
771 case FormCompType::RADIOBUTTON:
772 aCtrlProp.
GetProperty( nApiButton,
"VisualEffect" );
776 case FormCompType::COMMANDBUTTON:
777 nApiBorder = AwtVisualEffect::LOOK3D;
780 case FormCompType::FIXEDTEXT:
785 case FormCompType::SCROLLBAR:
786 case FormCompType::SPINBUTTON:
787 nApiButton = AwtVisualEffect::LOOK3D;
791 case FormCompType::GROUPBOX:
792 nApiBorder = AwtVisualEffect::LOOK3D;
799 sal_Int16 nApiState = 0;
813 case FormCompType::LISTBOX:
816 Sequence< sal_Int16 > aSelection;
817 if( aCtrlProp.
GetProperty( aSelection,
"SelectedItems" ) )
819 if( aSelection.hasElements() )
832 case FormCompType::COMBOBOX:
836 if( aCtrlProp.
GetProperty( aStringList,
"StringItemList" ) &&
838 aStringList.hasElements() && !aDefText.isEmpty() )
853 case FormCompType::SCROLLBAR:
855 sal_Int32 nApiValue = 0;
856 if( aCtrlProp.
GetProperty( nApiValue,
"ScrollValueMin" ) )
858 if( aCtrlProp.
GetProperty( nApiValue,
"ScrollValueMax" ) )
860 if( aCtrlProp.
GetProperty( nApiValue,
"ScrollValue" ) )
862 if( aCtrlProp.
GetProperty( nApiValue,
"LineIncrement" ) )
864 if( aCtrlProp.
GetProperty( nApiValue,
"BlockIncrement" ) )
866 if( aCtrlProp.
GetProperty( nApiValue,
"Orientation" ) )
867 mbScrollHor = nApiValue == AwtScrollOrient::HORIZONTAL;
871 case FormCompType::SPINBUTTON:
873 sal_Int32 nApiValue = 0;
874 if( aCtrlProp.
GetProperty( nApiValue,
"SpinValueMin" ) )
876 if( aCtrlProp.
GetProperty( nApiValue,
"SpinValueMax" ) )
878 if( aCtrlProp.
GetProperty( nApiValue,
"SpinValue" ) )
880 if( aCtrlProp.
GetProperty( nApiValue,
"SpinIncrement" ) )
882 if( aCtrlProp.
GetProperty( nApiValue,
"Orientation" ) )
883 mbScrollHor = nApiValue == AwtScrollOrient::HORIZONTAL;
890 if( xCtrlModel.is() )
892 Reference< XBindableValue > xBindable( xCtrlModel, UNO_QUERY );
895 Reference< XServiceInfo > xServInfo( xBindable->getValueBinding(), UNO_QUERY );
899 CellAddress aApiAddress;
938 sal_uInt16 nStyle = 0;
987 sal_uInt16 nStyle = 0;
995 rStrm << static_cast< sal_uInt16 >( (pSrcRange->GetSize() + 7) & 0xFFFE );
999 rStrm << sal_uInt16( 0 );
1001 rStrm << nEntryCount <<
mnSelEntry << nStyle << sal_uInt16( 0 );
1008 if( rItem < nEntryCount )
1009 aSelEx[ rItem ] = 1;
1010 rStrm.
Write( aSelEx.data(), aSelEx.size() );
1015 rStrm << sal_uInt16( 0 ) << mnLineCount << sal_uInt16( 0 ) << sal_uInt16( 0 );
1044 sal_uInt16 nStyle = 0;
1048 rStrm << sal_uInt32( 0 )
1064 sal_uInt16 nOrient = 0;
1070 rStrm << sal_uInt32( 0 )
1092 sal_uInt16 m_nObjType;
1096 OUString m_aMacroName;
1101 const OUString& rLabel,
const OUString& rMacroName);
1107 void EndShape(sal_Int32 nShapeElement)
override;
1111 sal_uInt16 nObjType,
1114 const OUString& rLabel,
const OUString& rMacroName)
1116 , m_nObjType(nObjType)
1117 , m_aAreaFrom(rAreaFrom)
1118 , m_aAreaTo(rAreaTo)
1120 , m_aMacroName(rMacroName)
1124 sal_Int32 VmlFormControlExporter::StartShape()
1127 AddShapeAttribute(XML_type,
"#_x0000_t201");
1128 return VMLExport::StartShape();
1131 void VmlFormControlExporter::EndShape(sal_Int32 nShapeElement)
1135 pVmlDrawing->startElement(
FSNS(XML_v, XML_textbox));
1136 pVmlDrawing->startElement(XML_div);
1137 pVmlDrawing->write(m_aLabel);
1138 pVmlDrawing->endElement(XML_div);
1139 pVmlDrawing->endElement(
FSNS(XML_v, XML_textbox));
1141 OString aObjectType;
1145 aObjectType =
"Checkbox";
1148 aObjectType =
"Button";
1151 pVmlDrawing->startElement(
FSNS(XML_x, XML_ClientData), XML_ObjectType, aObjectType);
1153 = OString::number(m_aAreaFrom.Left()) +
", " + OString::number(m_aAreaFrom.Top()) +
", "
1154 + OString::number(m_aAreaFrom.Right()) +
", " + OString::number(m_aAreaFrom.Bottom()) +
", "
1155 + OString::number(m_aAreaTo.Left()) +
", " + OString::number(m_aAreaTo.Top()) +
", "
1156 + OString::number(m_aAreaTo.Right()) +
", " + OString::number(m_aAreaTo.Bottom());
1159 if (!m_aMacroName.isEmpty())
1171 pVmlDrawing->endElement(
FSNS(XML_x, XML_ClientData));
1172 VMLExport::EndShape(nShapeElement);
1187 aFormControlExporter.AddSdrObject(*pObj,
false, -1,
1197 pDrawing->startElement(
FSNS(XML_mc, XML_AlternateContent),
1199 pDrawing->startElement(
FSNS(XML_mc, XML_Choice),
1201 XML_Requires,
"a14");
1203 pDrawing->startElement(
FSNS(XML_xdr, XML_twoCellAnchor), XML_editAs,
"oneCell");
1205 pDrawing->startElement(
FSNS(XML_xdr, XML_from));
1207 pDrawing->endElement(
FSNS(XML_xdr, XML_from));
1208 pDrawing->startElement(
FSNS(XML_xdr, XML_to));
1209 lcl_WriteAnchorVertex(pDrawing,
maAreaTo);
1210 pDrawing->endElement(
FSNS(XML_xdr, XML_to));
1212 pDrawing->startElement(
FSNS(XML_xdr, XML_sp));
1215 pDrawing->startElement(
FSNS(XML_xdr, XML_nvSpPr));
1217 pDrawing->singleElement(
FSNS(XML_xdr, XML_cNvPr),
1218 XML_id, OString::number(
mnShapeId).getStr(),
1222 pDrawing->singleElement(
FSNS(XML_xdr, XML_cNvSpPr));
1224 pDrawing->endElement(
FSNS(XML_xdr, XML_nvSpPr));
1227 pDrawing->startElement(
FSNS(XML_xdr, XML_spPr));
1230 pDrawing->startElement(
FSNS(XML_a, XML_xfrm));
1232 pDrawing->singleElement(
FSNS(XML_a, XML_off),
1235 pDrawing->singleElement(
FSNS(XML_a, XML_ext),
1239 pDrawing->endElement(
FSNS(XML_a, XML_xfrm));
1242 pDrawing->startElement(
FSNS(XML_a, XML_prstGeom), XML_prst,
"rect");
1244 pDrawing->singleElement(
FSNS(XML_a, XML_avLst));
1246 pDrawing->endElement(
FSNS(XML_a, XML_prstGeom));
1248 pDrawing->endElement(
FSNS(XML_xdr, XML_spPr));
1252 pDrawing->startElement(
FSNS(XML_xdr, XML_txBody));
1254 #define DEFLRINS 254
1255 #define DEFTBINS 127
1256 sal_Int32 nLeft, nRight, nTop, nBottom;
1268 mAny = rXPropSet->getPropertyValue(
"TextLeftDistance");
1269 if (mAny.hasValue())
1272 mAny = rXPropSet->getPropertyValue(
"TextRightDistance");
1273 if (mAny.hasValue())
1276 mAny = rXPropSet->getPropertyValue(
"TextUpperDistance");
1277 if (mAny.hasValue())
1280 mAny = rXPropSet->getPropertyValue(
"TextLowerDistance");
1281 if (mAny.hasValue())
1291 pDrawing->startElementNS(XML_a, XML_bodyPr,
1299 bool bTextAutoGrowHeight =
false;
1305 mAny = rXPropSet->getPropertyValue(
"TextAutoGrowHeight");
1306 if (mAny.hasValue())
1307 mAny >>= bTextAutoGrowHeight;
1313 pDrawing->singleElementNS(XML_a, (bTextAutoGrowHeight ? XML_spAutoFit : XML_noAutofit));
1316 pDrawing->endElementNS(XML_a, XML_bodyPr);
1319 pDrawing->startElementNS(XML_a, XML_p);
1320 pDrawing->startElementNS(XML_a, XML_r);
1321 pDrawing->startElementNS(XML_a, XML_t);
1323 pDrawing->endElementNS(XML_a, XML_t);
1324 pDrawing->endElementNS(XML_a, XML_r);
1325 pDrawing->endElementNS(XML_a, XML_p);
1328 pDrawing->endElement(
FSNS(XML_xdr, XML_txBody));
1331 pDrawing->endElement(
FSNS(XML_xdr, XML_sp));
1332 pDrawing->singleElement(
FSNS(XML_xdr, XML_clientData));
1334 pDrawing->endElement(
FSNS(XML_xdr, XML_twoCellAnchor));
1335 pDrawing->endElement(
FSNS( XML_mc, XML_Choice ) );
1336 pDrawing->endElement(
FSNS( XML_mc, XML_AlternateContent ) );
1342 OUString sIdFormControlPr;
1348 const sal_Int32 nDrawing = DrawingML::getNewDrawingUniqueId();
1353 "application/vnd.ms-excel.controlproperties+xml",
1355 &sIdFormControlPr );
1363 pFormControl->write(
"<formControlPr xmlns=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\" objectType=\"CheckBox\"");
1365 pFormControl->write(
" checked=\"Checked\"");
1367 pFormControl->write(
" autoLine=\"false\"");
1370 pFormControl->write(
" print=\"true\"");
1372 pFormControl->write(
" print=\"false\"");
1381 pFormControl->write(
" fmlaLink=\"");
1382 if (aCellLink.indexOf(
'!') < 0)
1385 pFormControl->write(
"!");
1387 pFormControl->write(aCellLink);
1388 pFormControl->write(
"\"");
1391 pFormControl->write(
" lockText=\"1\" noThreeD=\"1\"/>");
1398 sal_Int32 nDrawing = DrawingML::getNewDrawingUniqueId();
1403 "application/vnd.ms-excel.controlproperties+xml",
1406 pFormControl->singleElement(XML_formControlPr, XML_xmlns,
1408 "Button", XML_lockText,
"1");
1413 return sIdFormControlPr;
1425 rWorksheet->startElement(
FSNS(XML_mc, XML_AlternateContent),
1427 rWorksheet->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"x14");
1429 rWorksheet->startElement(
1431 XML_shapeId, OString::number(
mnShapeId).getStr(),
1432 FSNS(XML_r, XML_id), aIdFormControlPr,
1435 rWorksheet->write(
"<controlPr defaultSize=\"0\" locked=\"1\" autoFill=\"0\" autoLine=\"0\" autoPict=\"0\"");
1438 rWorksheet->write(
" print=\"true\"");
1440 rWorksheet->write(
" print=\"false\"");
1444 rWorksheet->write(
" altText=\"");
1446 rWorksheet->write(
"\"");
1449 rWorksheet->write(
">");
1451 rWorksheet->startElement(XML_anchor, XML_moveWithCells,
"true", XML_sizeWithCells,
"false");
1452 rWorksheet->startElement(XML_from);
1453 lcl_WriteAnchorVertex(rWorksheet,
maAreaFrom);
1454 rWorksheet->endElement(XML_from);
1455 rWorksheet->startElement(XML_to);
1456 lcl_WriteAnchorVertex(rWorksheet,
maAreaTo);
1457 rWorksheet->endElement(XML_to);
1458 rWorksheet->endElement( XML_anchor );
1460 rWorksheet->write(
"</controlPr>");
1462 rWorksheet->endElement(XML_control);
1463 rWorksheet->endElement(
FSNS( XML_mc, XML_Choice ) );
1464 rWorksheet->endElement(
FSNS( XML_mc, XML_AlternateContent ) );
1472 rWorksheet->startElement(
FSNS(XML_mc, XML_AlternateContent),
FSNS(XML_xmlns, XML_mc),
1474 rWorksheet->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"x14");
1476 rWorksheet->startElement(XML_control, XML_shapeId, OString::number(
mnShapeId).getStr(),
1481 const char* pMacroName = aMacroName.isEmpty() ?
nullptr : aMacroName.getStr();
1482 rWorksheet->startElement(XML_controlPr, XML_defaultSize,
"0", XML_print,
1483 mbPrint ?
"true" :
"false", XML_autoFill,
"0", XML_autoPict,
1484 "0", XML_macro, pMacroName);
1486 rWorksheet->startElement(XML_anchor, XML_moveWithCells,
"true", XML_sizeWithCells,
1495 rWorksheet->startElement(XML_from);
1496 lcl_WriteAnchorVertex(rWorksheet, aAreaFrom);
1497 rWorksheet->endElement(XML_from);
1498 rWorksheet->startElement(XML_to);
1499 lcl_WriteAnchorVertex(rWorksheet, aAreaTo);
1500 rWorksheet->endElement(XML_to);
1501 rWorksheet->endElement(XML_anchor);
1503 rWorksheet->endElement(XML_controlPr);
1505 rWorksheet->endElement(XML_control);
1506 rWorksheet->endElement(
FSNS(XML_mc, XML_Choice));
1507 rWorksheet->endElement(
FSNS(XML_mc, XML_AlternateContent));
1545 if(
SdrOle2Obj* pSdrOleObj = dynamic_cast< SdrOle2Obj* >( pSdrObj ) )
1550 css::awt::Rectangle aBoundRect;
1551 aShapeProp.GetProperty( aBoundRect,
"BoundRect" );
1573 pDrawing->startElement(
FSNS( XML_xdr, XML_twoCellAnchor ),
1574 XML_editAs,
"oneCell" );
1579 ChartExport aChartExport(XML_xdr, pDrawing,
GetChartDoc(), &rStrm, drawingml::DOCUMENT_XLSX);
1580 auto pURLTransformer = std::make_shared<ScURLTransformer>(*mpDoc);
1581 aChartExport.SetURLTranslator(pURLTransformer);
1582 static sal_Int32 nChartCount = 0;
1585 aChartExport.WriteChartObj(
mxShape, nID, nChartCount );
1589 pDrawing->singleElement(
FSNS( XML_xdr, XML_clientData)
1593 pDrawing->endElement(
FSNS( XML_xdr, XML_twoCellAnchor ) );
1602 return css::uno::Reference<css::chart::XChartDocument>(
1607 const ScPostIt* pScNote, std::u16string_view rAddText)
1612 ,
mbVisible(pScNote && pScNote->IsCaptionShown())
1615 , mbAutoScale(
false)
1618 , mbColHidden(
false)
1619 , mbRowHidden(
false)
1625 aNoteText = pScNote->
GetText();
1651 SfxItemSet aItemSet = pCaption->GetMergedItemSet();
1652 meTVA = pCaption->GetTextVerticalAdjust();
1653 meTHA = pCaption->GetTextHorizontalAdjust();
1654 mbAutoScale = pCaption->GetFitToSize() != drawing::TextFitToSizeType_NONE;
1655 mbLocked = pCaption->IsMoveProtect() || pCaption->IsResizeProtect();
1688 sal_uInt16 nCharsLeft =
static_cast< sal_uInt16
>(
maNoteText.getLength() );
1698 rStrm << static_cast< sal_uInt16 >(
maScPos.
Row() )
1699 << static_cast< sal_uInt16 >(
maScPos.
Col() )
1705 rStrm << sal_uInt16( 0xFFFF )
1709 rStrm.
Write( pcBuffer, nWriteChars );
1712 pcBuffer += nWriteChars;
1713 nCharsLeft = nCharsLeft - nWriteChars;
1732 sal_uInt16 nFlags = 0;
1735 rStrm << static_cast< sal_uInt16 >(
maScPos.
Row() )
1736 << static_cast< sal_uInt16 >(
maScPos.
Col() )
1747 rComments->startElement( XML_comment,
1749 XML_authorId, OString::number(nAuthorId)
1752 rComments->startElement(XML_text);
1756 rComments->endElement( XML_text );
1762 #if 1//def XLSX_OOXML_FUTURE
1765 rComments->startElement(
FSNS(XML_mc, XML_AlternateContent));
1766 rComments->startElement(
FSNS(XML_mc, XML_Choice), XML_Requires,
"v2");
1767 rComments->startElement( XML_commentPr,
1773 XML_textHAlign, ToHorizAlign(
meTHA ),
1774 XML_textVAlign, ToVertAlign(
meTVA ) );
1775 rComments->startElement(XML_anchor, XML_moveWithCells,
"false", XML_sizeWithCells,
"false");
1776 rComments->startElement(
FSNS(XML_xdr, XML_from));
1778 rComments->endElement(
FSNS( XML_xdr, XML_from ) );
1779 rComments->startElement(
FSNS(XML_xdr, XML_to));
1781 rComments->endElement(
FSNS( XML_xdr, XML_to ) );
1782 rComments->endElement( XML_anchor );
1783 rComments->endElement( XML_commentPr );
1785 rComments->endElement(
FSNS( XML_mc, XML_Choice ) );
1786 rComments->startElement(
FSNS(XML_mc, XML_Fallback));
1788 rComments->endElement(
FSNS( XML_mc, XML_Fallback ) );
1789 rComments->endElement(
FSNS( XML_mc, XML_AlternateContent ) );
1792 rComments->endElement( XML_comment );
1828 if (!rMacroName.isEmpty() && !bOOXML)
1846 if ( pInfo && !pInfo->
GetMacro().isEmpty() )
1864 : mnTab( nTab ), mrNotes( rNotes )
1877 "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
1882 rComments->startElement( XML_comments,
1887 FSNS( XML_mc, XML_Ignorable ),
"v2" );
1889 rComments->startElement( XML_comments,
1893 rComments->startElement(XML_authors);
1895 typedef std::set<OUString> Authors;
1899 for(
size_t i = 0;
i < nNotes; ++
i )
1904 for(
const auto& rAuthor : aAuthors )
1906 rComments->startElement(XML_author);
1907 rComments->writeEscaped( rAuthor );
1908 rComments->endElement( XML_author );
1911 rComments->endElement( XML_authors );
1912 rComments->startElement(XML_commentList);
1914 Authors::const_iterator aAuthorsBegin = aAuthors.begin();
1915 for(
size_t i = 0;
i < nNotes; ++
i )
1918 Authors::const_iterator aAuthor = aAuthors.find(
1920 sal_Int32 nAuthorId =
distance( aAuthorsBegin, aAuthor );
1921 xNote->WriteXml( nAuthorId, rStrm );
1924 rComments->endElement( XML_commentList );
1925 rComments->endElement( XML_comments );
1970 OSL_ENSURE(
mxEscherEx->GetGroupLevel() <= 1,
"XclExpObjectManager::ProcessDrawing - still groups open?" );
1982 OSL_ENSURE(
mxEscherEx->GetGroupLevel() <= 1,
"XclExpObjectManager::ProcessDrawing - still groups open?" );
1996 return mxObjList->GetMsodrawingPerSheet();
2006 return mxObjList->Add( std::move(pObjRec) );
2018 mxTempFile = std::make_shared<::utl::TempFile>();
2027 mxDffStrm = std::make_unique<SvMemoryStream>();
2029 mxDffStrm->SetEndian( SvStreamEndian::LITTLE );
2036 mnScaleX( nScaleX ),
SvStream & WriteXclObjAnchor(SvStream &rStrm, const XclObjAnchor &rAnchor)
XclFontPropSetHelper & GetFontPropSetHelper() const
Returns the property set helper for fonts.
This class stores an unformatted or formatted string for Excel export.
const sal_uInt16 EXC_NOTE5_MAXLEN
bool mbRowHidden
Column containing the comment is hidden.
virtual void WriteData(EscherEx &rEscherEx, const tools::Rectangle &rRect) override
Called from SVX DFF converter.
SdrTextHorzAdjust meTHA
true = permanently visible.
XclExpDffAnchorBase(const XclExpRoot &rRoot, sal_uInt16 nFlags=0)
Constructs a dummy client anchor.
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
std::size_t Write(const void *pData, std::size_t nBytes)
Writes nBytes bytes from memory.
static OString ToOString(const Color &rColor)
ScAddress maScPos
Text and formatting data (OOXML)
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
const sal_uInt16 EXC_ID_OBJSBS
Radio button group data.
tools::Long Height() const
rtl_TextEncoding GetTextEncoding() const
Returns the text encoding to import/export byte strings.
void WriteCellLinkSubRec(XclExpStream &rStrm, sal_uInt16 nSubRecId)
Writes a subrecord containing a cell link, or nothing, if no link present.
sal_uInt16 mnScrollMin
Scrollbar: Current value.
The MSODRAWINGGROUP record contains the DGGCONTAINER with global DFF data such as the picture contain...
virtual const tools::Rectangle & GetCurrentBoundRect() const
sal_uInt32 mnStrmStart
Class name of the control.
const XclExpString & GetAuthor() const
#define ESCHER_Prop_fshadowObscured
bool IsExportTab(SCTAB nScTab) const
Returns true, if the specified Calc sheet will be exported.
static sax_fastparser::FSHelperPtr WriteElement(sax_fastparser::FSHelperPtr pStream, sal_Int32 nElement, const T &value)
std::unique_ptr< XclExpMsoDrawing > pClientTextbox
virtual void Save(XclExpStream &rStrm) override
Writes the BITMAP record.
SC_DLLPUBLIC bool IsNegativePage(SCTAB nTab) const
SvStream & WriteUInt16(sal_uInt16 nUInt16)
const OUString & GetMacro() const
const sal_uInt16 EXC_OBJTYPE_UNKNOWN
This class is used to export Excel record streams.
virtual void SaveXml(XclExpXmlStream &rStrm) override
#define ESCHER_Prop_pictureId
const sal_uInt16 EXC_OBJ_SCROLLBAR_DEFFLAGS
const sal_uInt16 EXC_ID_NOTE
sal_uInt16 mnRX
Y offset in top row (1/256 of row height).
sal_uInt16 mnObjId
Calc cell address of the note.
const sal_uInt16 EXC_OBJ_INVALID_ID
sal_Int32 findValue(const css::uno::Sequence< T1 > &_rList, const T2 &_rValue)
XclExpLinkManager & GetLocalLinkManager() const
Returns the local link manager for the current sheet.
static OUString ToOUString(const char *s)
rtl::Reference< XclExpRecordBase > CreateDrawingGroup()
Creates and returns the MSODRAWINGGROUP record containing global DFF data in the DGGCONTAINER.
XclTokenArrayRef mxMacroLink
const sal_uInt16 EXC_ID_OBJPICTFMLA
Option flags.
std::unique_ptr< XclObj > RemoveLastObj()
const OUString & GetAuthor() const
Returns the author date of this note.
void ConvertSheetLinks(css::uno::Reference< css::drawing::XShape > const &xShape)
Tries to get spreadsheet cell link and source range link from the passed shape.
static ScMacroInfo * GetMacroInfo(SdrObject *pObj, bool bCreate=false)
static SdrObject * getSdrObjectFromXShape(const css::uno::Reference< css::uno::XInterface > &xInt)
sal_uInt16 Insert(const XclFontData &rFontData, XclExpColorType eColorType, bool bAppFont=false)
Inserts a new font with the passed font data into the buffer if not present.
const sal_uInt8 EXC_OBJ_LISTBOX_MULTI
Single selection.
const sal_uInt16 EXC_ID_MSODRAWINGGROUP
OoxmlVersion getVersion() const
constexpr TypedWhichId< XFillStyleItem > XATTR_FILLSTYLE(XATTR_FILL_FIRST)
virtual void WriteSubRecs(XclExpStream &rStrm) override
const sal_uInt16 EXC_OBJ_SCROLLBAR_HOR
This struct helps reading and writing Excel fonts.
virtual void Save(XclExpStream &rStrm) override
Writes the NOTE record, if the respective Escher object is present.
void Commit(SvStream &rSt, sal_uInt16 nVersion=3, sal_uInt16 nRecType=ESCHER_OPT)
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
XclExpFormulaCompiler & GetFormulaCompiler() const
Returns the formula compiler to produce formula token arrays.
void SetRecSize(std::size_t nRecSize)
Sets a new record size prediction.
void EndDocument()
Finalizes the object manager after conversion of all sheets.
#define ESCHER_ClientAnchor
bool mbAutoFill
Position & Size locked.
virtual ~XclExpObjectManager() override
sal_uInt16 mnScrollPage
Scrollbar: Single step.
sal_uInt16 mnHeight
Font color.
bool GetBoolProperty(const OUString &rPropName) const
Gets the specified Boolean property from the property set.
std::shared_ptr< XclEscherEx > mxEscherEx
bool mbFlatButton
Scrollbar: Page step.
#define SC_UNONAME_BOUNDCELL
const sal_uInt16 EXC_IMGDATA_BMP
sal_uInt16 GetSize() const
Returns the size of the token array in bytes.
void FindExtSheet(sal_uInt16 &rnExtSheet, sal_uInt16 &rnXclTab, SCTAB nScTab, XclExpRefLogEntry *pRefLogEntry=nullptr)
Searches for an EXTERNSHEET index for the given Calc sheet.
virtual void AddShape(sal_uInt32 nShpInstance, ShapeFlag nFlagIds, sal_uInt32 nShapeID=0)
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
XclExpShapeObj(XclExpObjectManager &rRoot, css::uno::Reference< css::drawing::XShape > const &xShape, ScDocument *pDoc)
virtual SdrObjKind GetObjIdentifier() const
virtual void ImplSetFlags(const SdrObject &rSdrObj) override
void SetSdrObject(const SdrObject &rSdrObj)
Sets the anchor position and flags according to the passed SdrObject.
bool SetMacroLink(const css::script::ScriptEventDescriptor &rEvent)
Sets the name of a macro attached to this control.
#define ESCHER_ClientTextbox
void SetPrintable(bool b)
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
void StartSheet()
Initializes the object manager for a new sheet.
void SetFlags(const SdrObject &rSdrObj)
Sets the flags according to the passed SdrObject.
virtual ~XclExpControlHelper() override
const sal_uInt16 EXC_ID_OBJFLAGS
Clipboard format.
const sal_uInt16 EXC_ID_OBJSBSFMLA
Note data.
XAdjustmentListener.adjustmentValueChanged.
XTextListener.textChanged.
sal_Int16 mnLineCount
Checked/unchecked state.
uno::Reference< drawing::XShape > const mxShape
XclExpOcxControlObj(XclExpObjectManager &rObjMgr, css::uno::Reference< css::drawing::XShape > const &xShape, const tools::Rectangle *pChildAnchor, const OUString &rClassName, sal_uInt32 nStrmStart, sal_uInt32 nStrmSize)
SvStream & GetStream() const
DstType sequenceToContainer(const css::uno::Sequence< SrcType > &i_Sequence)
Access to global data from other classes.
const sal_uInt16 EXC_FONT_APP
#define ESCHER_Prop_wzName
const sal_uInt16 EXC_OBJ_LISTBOX_FLAT
static void WriteFormulaSubRec(XclExpStream &rStrm, sal_uInt16 nSubRecId, const XclTokenArray &rTokArr)
Writes a formula subrecord with special style only valid in OBJ records.
static std::unique_ptr< SvStream > CreateStream(const OUString &rFileName, StreamMode eOpenMode, css::uno::Reference< css::awt::XWindow > xParentWin=nullptr)
const sal_uInt16 EXC_OBJTYPE_SCROLLBAR
OUString getNamespaceURL(sal_Int32 nNSID) const
const sal_uInt8 EXC_OBJ_LISTBOX_SINGLE
Additional class containing cell annotation data.
bool SetMacroLink(const css::script::ScriptEventDescriptor &rEvent, const XclTbxEventType &nEventType)
Sets the name of a macro for object of passed type.
Scanline GetScanline(tools::Long nY) const
XclExpDffEmbeddedAnchor(const XclExpRoot &rRoot, const Size &rPageSize, sal_Int32 nScaleX, sal_Int32 nScaleY)
sal_uInt16 GetSourceEntryCount() const
Returns the number of entries in the source range, or 0, if no source set.
void ImplWriteAnchor(const SdrObject *pSdrObj, const tools::Rectangle *pChildAnchor)
void WriteArray(XclExpStream &rStrm) const
Writes the tokens of the token array (without size field).
sal_uInt32 GetDffFragmentSize(sal_uInt32 nFragmentKey)
Returns the size of the specified DFF stream fragment.
#define ESCHER_Prop_wzDescription
void PushStream(sax_fastparser::FSHelperPtr const &aStream)
const ::basegfx::B2DSize maPageSize
void SaveSheetXml(XclExpXmlStream &rStrm, const OUString &aIdFormControlPr) const
#define ESCHER_ShpInst_HostControl
const sal_uInt16 EXC_IMGDATA_WIN
css::uno::Reference< css::chart::XChartDocument > GetChartDoc() const
#define ESCHER_Prop_LockAgainstGrouping
const sal_uInt16 EXC_ESC_ANCHOR_POSLOCKED
Base class for records holding DFF stream fragments.
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
sal_uInt16 mnScrollStep
Scrollbar: Maximum value.
OString maNoteText
Name of the author.
sax_fastparser::FSHelperPtr & GetCurrentStream()
OUString getRelationship(Relationship eRelationship)
tools::Rectangle maAreaTo
virtual void ImplCalcAnchorRect(const tools::Rectangle &rRect, MapUnit eMapUnit) override
SvStream * QueryPictureStream()
Represents the position (anchor) of a shape in an embedded draw page.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the NOTE record.
bool mbPrint
Scrollbar: true = horizontal.
XclExpMsoDrawingGroup(XclEscherEx &rEscherEx)
void UpdateDffFragmentEnd()
Called after some data has been written to the DFF stream, to update the end position of the DFF frag...
bool mbAutoScale
text vertical adjust
void WriteXml(sal_Int32 nAuthorId, XclExpXmlStream &rStrm)
const sal_uInt16 EXC_OBJ_SCROLLBAR_FLAT
const XclTokenArray * GetCellLinkTokArr() const
Returns the Excel token array of the cell link, or 0, if no link present.
#define ESCHER_Prop_fNoLineDrawDash
sal_uInt32 mnBY
X offset in right column (1/1024 of column width).
void WriteSbs(XclExpStream &rStrm)
Writes the ftSbs sub structure containing scrollbar data.
static void WriteFormula(XclExpStream &rStrm, const XclTokenArray &rTokArr)
Writes a formula with special style only valid in OBJ records.
const sal_uInt16 EXC_OBJTYPE_DROPDOWN
const sal_uInt16 EXC_OBJTYPE_GROUPBOX
SC_DLLPUBLIC bool ColHidden(SCCOL nCol, SCTAB nTab, SCCOL *pFirstCol=nullptr, SCCOL *pLastCol=nullptr) const
virtual void SaveXml(XclExpXmlStream &rStrm) override
MS Excel 5.0, MS Excel 7.0 (95)
const sal_uInt16 EXC_ID_MSODRAWING
vcl::PixelFormat getPixelFormat() const
XclOutput GetOutput() const
Returns the current output format of the importer/exporter.
const sal_uInt16 EXC_OBJ_GROUPBOX_FLAT
Dropdown style: filtered.
static OUString ExtractFromMacroDescriptor(const css::script::ScriptEventDescriptor &rDescriptor, XclTbxEventType eEventType)
Tries to extract an Excel macro name from the passed macro descriptor.
XclExpAddressConverter & GetAddressConverter() const
Returns the address converter.
tools::Rectangle maCommentFrom
Row containing the comment is hidden.
ScAddress mxCellLinkAddress
Number of entries in source range.
XclExpDffDropDownAnchor(const XclExpRoot &rRoot, const ScAddress &rScPos)
const sal_uInt8 EXC_OBJ_VER_CENTER
#define ESCHER_Prop_WrapText
Base class for DFF client anchor atoms used in spreadsheets.
static ScAnchorType GetAnchorType(const SdrObject &)
const sal_uInt16 EXC_OBJ_CHECKBOX_FLAT
bool mbMultiSel
False = 3D border style; True = Flat border style.
sax_fastparser::FSHelperPtr CreateOutputStream(const OUString &sFullStream, std::u16string_view sRelativeStream, const css::uno::Reference< css::io::XOutputStream > &xParentRelation, const char *sContentType, std::u16string_view sRelationshipType, OUString *pRelationshipId=nullptr)
virtual void ImplCalcAnchorRect(const tools::Rectangle &rRect, MapUnit eMapUnit) override
const sal_uInt16 EXC_OBJ_SCROLLBAR_MAX
const sal_uInt16 EXC_OBJTYPE_LABEL
const sal_uInt8 EXC_OBJ_HOR_CENTER
#define SC_UNONAME_CELLRANGE
sal_uInt16 mnEntryCount
Formula for source data range.
sal_Int64 convertHmmToEmu(sal_Int32 nValue)
const sal_uInt16 EXC_ESC_ANCHOR_LOCKED
tools::Long Width() const
void InitStream(bool bTempFile)
std::size_t WriteBytes(const void *pData, std::size_t nSize)
virtual void WriteSubRecs(XclExpStream &rStrm) override
virtual void EndShape(sal_Int32 nShapeElement)
static void WriteFromTo(XclExpXmlStream &rStrm, const XclObjAny &rObj)
OUString GetText() const
Returns the caption text of this note.
void EndRecord()
Checks and corrects real record length.
const sal_uInt16 EXC_ID_OBJGBODATA
Scroll bar/list box/combo box cell link.
XclExpStringRef mpNoteContents
Main text of the note (<=BIFF7).
const sal_uInt16 EXC_NOTE_VISIBLE
SdrCaptionObj * GetOrCreateCaption(const ScAddress &rPos) const
Returns the caption object of this note.
sal_uInt16 GetObjType() const
std::unique_ptr< SvStream > mxDffStrm
XclExpNameManager & GetNameManager() const
Returns the buffer that contains internal defined names.
XclExpTabInfo & GetTabInfo() const
Returns the buffer for Calc->Excel sheet index conversion.
Reference< XModel > getXModel(const Reference< XInterface > &_rxComponent)
#define ESCHER_Prop_FitTextToShape
sal_uInt16 mnScrollMax
Scrollbar: Minimum value.
virtual ~XclExpShapeObj() override
sal_uInt16 mnState
Height of the control.
SC_DLLPUBLIC tools::Rectangle GetMMRect(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, bool bHiddenAsZero=true) const
XclExpTbxControlObj(XclExpObjectManager &rObjMgr, css::uno::Reference< css::drawing::XShape > const &xShape, const tools::Rectangle *pChildAnchor)
BitmapEx GetBitmapEx(const GraphicConversionParameters &rParameters=GraphicConversionParameters()) const
virtual void ImplSetFlags(const SdrObject &rSdrObj)
virtual void ImplCalcAnchorRect(const tools::Rectangle &rRect, MapUnit eMapUnit)
#define MSPROP_DESCRIPTION_MAX_LEN
tools::Rectangle maAreaFrom
void CopyFromStream(SvStream &rInStrm, sal_uInt64 nBytes=STREAM_SEEK_TO_END)
Copies nBytes bytes from current position of the stream rInStrm.
XclExpImgData(const Graphic &rGraphic, sal_uInt16 nRecId)
const XclTokenArray * GetSourceRangeTokArr() const
Returns the Excel token array of the source range, or 0, if no link present.
std::shared_ptr< FastSerializerHelper > FSHelperPtr
virtual void ImplSetFlags(const SdrObject &rSdrObj) override
const sal_uInt16 EXC_ID_OBJCBLS
OLE link formula.
const sal_uInt16 EXC_OBJ_CHECKBOX_CHECKED
static void FillScAddress(ScAddress &rScAddress, const css::table::CellAddress &rApiAddress)
const XclExpRoot & mrRoot
sal_Int16 mnSelEntry
Combobox dropdown line count.
const sal_uInt16 EXC_OBJ_CHECKBOX_TRISTATE
virtual ~XclExpChartObj() override
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
std::unique_ptr< XclTxo > pTxo
SCTAB GetCurrScTab() const
Returns the current Calc sheet index.
sal_uInt32 mnFragmentKey
Reference to the DFF converter containing the DFF stream.
#define ESCHER_Prop_fillBackColor
bool Is() const
Returns true, if the contained XPropertySet interface is valid.
void SaveVml(XclExpXmlStream &rStrm)
Save into xl/drawings/vmlDrawing1.vml.
void ReadFontProperties(XclFontData &rFontData, const ScfPropertySet &rPropSet, XclFontPropSetType eType, sal_Int16 nScript=-1)
Reads all font properties from the passed property set.
Bitmap GetBitmap(Color aTransparentReplaceColor) const
XclMacroHelper(const XclExpRoot &rRoot)
sal_uInt16 mnFlags
The client anchor data.
static OUString GetStreamName(const char *sStreamDir, const char *sStream, sal_Int32 nId)
sal_uInt32 GetDffFragmentPos(sal_uInt32 nFragmentKey)
Returns the position of the specified DFF stream fragment.
One or more MSODRAWING records contain the DFF stream data for a drawing shape.
SdrTextVertAdjust meTVA
text horizontal adjust
const sal_uInt16 EXC_OBJTYPE_CHECKBOX
#define ESCHER_Prop_fillColor
XclTbxEventType meEventType
Indexes of all selected entries in a multi selection.
RecType * GetRecord(size_t nPos) const
Returns reference to an existing record or empty reference on error.
#define ESCHER_DggContainer
Binary representation of an Excel token array.
const sal_uInt16 EXC_OBJ_CHECKBOX_UNCHECKED
XclTokenArrayRef mxSrcRange
Formula for linked cell.
A wrapper for a UNO property set.
constexpr TypedWhichId< XFillColorItem > XATTR_FILLCOLOR(XATTR_FILL_FIRST+1)
rtl::Reference< XclExpRecordBase > ProcessDrawing(const SdrPage *pSdrPage)
Processes a drawing page and returns the record block containing all related records (MSODRAWING...
#define ESCHER_SpContainer
XclExpNote(const XclExpRoot &rRoot, const ScAddress &rScPos, const ScPostIt *pScNote, std::u16string_view rAddText)
Constructs a NOTE record from the passed note object and/or the text.
OUString SaveControlPropertiesXml(XclExpXmlStream &rStrm) const
OUString maMacroName
Token array containing a link to an attached macro.
const sal_Unicode EXC_EXTSH_OWNDOC
const sal_uInt16 EXC_OBJTYPE_SPIN
virtual void CloseContainer()
static SC_DLLPUBLIC OUString addToken(std::u16string_view rTokenList, std::u16string_view rToken, sal_Unicode cSep, sal_Int32 nSepCount=1, bool bForceSep=false)
Adds the string rToken to rTokenList, using a list separator character.
sal_uInt16 mnRecId
The VCL graphic.
constexpr OUStringLiteral SC_SERVICENAME_LISTSOURCE
const sal_uInt16 EXC_ESC_ANCHOR_SIZELOCKED
virtual sal_Int32 StartShape()
void AddAtom(sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion=0, int nRecInstance=0)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
sal_uInt16 InsertMacroCall(const OUString &rMacroName, bool bVBasic, bool bFunc, bool bHidden=false)
Searches or inserts a defined name describing a macro name.
#define ESCHER_Prop_lineColor
XclExpControlHelper(const XclExpRoot &rRoot)
rtl::Reference< XclExpObjList > mxObjList
std::size_t GetSize() const
Returns the byte count the whole string will take on export.
#define ESCHER_Prop_fNoFillHitTest
bool Convert(BmpConversion eConversion)
bool mbFlatBorder
False = 3D button style; True = Flat button style.
void setShapeId(sal_Int32 aShapeId)
virtual void OpenContainer(sal_uInt16 nEscherContainer, int nRecInstance=0)
const css::uno::Reference< css::drawing::XShape > mxShape
bool mbScrollHor
true = Multi selection in listbox.
virtual void WriteSubRecs(XclExpStream &rStrm) override
std::shared_ptr< ::utl::TempFile > mxTempFile
const sal_uInt16 EXC_ID_OBJLBSDATA
Check box/radio button data.
bool mbVisible
Escher object ID (BIFF8).
virtual XclExpDffAnchorBase * CreateDffAnchor() const
Creates a new DFF client anchor object.
void WriteDffData(EscherEx &rEscherEx) const
Writes the DFF client anchor structure with the current anchor position.
css::uno::Reference< css::drawing::XShape > mxShape
The chart itself (BOF/EOF substream data).
const sal_uInt16 EXC_ID_OBJCBLSFMLA
List box/combo box data.
const sal_uInt16 EXC_OBJTYPE_LISTBOX
void AddOpt(sal_uInt16 nPropID, bool bBlib, sal_uInt32 nSizeReduction, SvMemoryStream &rStream)
virtual void Save(XclExpStream &rStrm) override
Writes the OBJ record and the entire chart substream.
XclExpObjectManager & GetObjectManager() const
Returns the drawing object manager.
XActionListener.actionPerformed.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
const sal_uInt8 EXC_OBJ_HOR_LEFT
sal_Int32 mnHeight
Type of supported macro event.
const sal_uInt16 EXC_OBJTYPE_CHART
BitmapColor GetPixelFromData(const sal_uInt8 *pData, tools::Long nX) const
sal_uInt32 mnTY
X offset in left column (1/1024 of column width).
const OUString & GetMacroName() const
virtual XclExpDffAnchorBase * CreateDffAnchor() const override
Creates a new DFF client anchor object for embedded objects according to the scaling data passed to t...
sal_uInt16 mnScrollValue
Selected entry in combobox (1-based).
constexpr sal_Int32 FSNS(sal_Int32 namespc, sal_Int32 element)
constexpr OUStringLiteral SC_SERVICENAME_VALBIND
SC_DLLPUBLIC bool RowHidden(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
sal_uInt64 GetStreamPos() const
tools::Rectangle maCommentTo
From and From Offset.
const std::u16string_view aStringList[]
void StartRecord(sal_uInt16 nRecId, std::size_t nRecSize)
Starts a new record: writes header data, stores calculated record size.
#define ESCHER_SplitMenuColors
Represents the position (anchor) of an object in a Calc sheet.
const EditTextObject * GetEditTextObject() const
Returns the pointer to the current edit text object, or null.
static XclExpStringRef CreateString(const XclExpRoot &rRoot, const OUString &rString, XclStrFlags nFlags=XclStrFlags::NONE, sal_uInt16 nMaxLen=EXC_STR_MAXLEN)
Creates a new unformatted string from the passed string.
XclExpObjectManager & mrRoot
XclExpObjectManager(const XclExpRoot &rRoot)
sal_uInt32 mnStrmSize
Start position in 'Ctls' stream.
XclExpDffSheetAnchor(const XclExpRoot &rRoot)
static bool TryRunningState(const css::uno::Reference< css::embed::XEmbeddedObject > &)
virtual const tools::Rectangle & GetLogicRect() const
XclExpDffNoteAnchor(const XclExpRoot &rRoot, const tools::Rectangle &rRect)
XclExpMsoDrawing(XclEscherEx &rEscherEx)
#define ESCHER_Prop_fPrint
const XclExpRoot & GetRoot() const
Returns the filter root data.
virtual ~XclMacroHelper() override
static void FillScRange(ScRange &rScRange, const css::table::CellRangeAddress &rApiRange)
virtual void WriteSubRecs(XclExpStream &rStrm) override
const sal_uInt16 EXC_OBJTYPE_PICTURE
void WriteMacroSubRec(XclExpStream &rStrm)
Writes an ftMacro subrecord containing a macro link, or nothing, if no macro present.
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
const char * UseIf(const char *s, bool bUse)
XclExpFontBuffer & GetFontBuffer() const
Returns the font buffer.
const sal_uInt16 EXC_OBJ_SCROLLBAR_MIN
XclExpChartObj(XclExpObjectManager &rObjMgr, css::uno::Reference< css::drawing::XShape > const &xShape, const tools::Rectangle *pChildAnchor, ScDocument *pDoc)
XclExpEmbeddedObjectManager(const XclExpObjectManager &rParent, const Size &rPageSize, sal_Int32 nScaleX, sal_Int32 nScaleY)
bool GetProperty(Type &rValue, const OUString &rPropName) const
Gets the specified property from the property set.
const sal_uInt16 EXC_ID_OBJMACRO
End of OBJ.
const sal_uInt16 EXC_OBJTYPE_BUTTON
XclExpMsoDrawing * GetMsodrawingPerSheet()
Helper class for form controls to manage spreadsheet links .
bool mbLocked
Auto scale text.
const sal_uInt16 EXC_OBJTYPE_OPTIONBUTTON
bool ConvertAddress(XclAddress &rXclPos, const ScAddress &rScPos, bool bWarn)
Converts the passed Calc cell address to an Excel cell address.
XclTokenArrayRef mxCellLink
sal_uInt16 AddObj(std::unique_ptr< XclObj > pObjRec)
All text objects in charts.
const sal_uInt16 EXC_ID_OBJCF
Group marker.
Base class for single records with any content.
#define ESCHER_Prop_lTxid
EscherGraphicProvider & GetGraphicProvider()
void SetRect(const XclRoot &rRoot, SCTAB nScTab, const tools::Rectangle &rRect, MapUnit eMapUnit)
Initializes the anchor coordinates for a sheet.
#define ESCHER_ClientData
XclExpMsoDrawingBase(XclEscherEx &rEscherEx, sal_uInt16 nRecId)
static css::uno::Reference< css::awt::XControlModel > GetControlModel(css::uno::Reference< css::drawing::XShape > const &xShape)
Returns the API control model from the passed API shape object.
void WriteZeroBytes(std::size_t nBytes)
Writes a sequence of nBytes zero bytes (respects slice setting).
bool m_bDetectedRangeSegmentation false
bool mbColHidden
Auto Fill Style.