1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: GraphicImport.cxx,v $
13 * This file is part of OpenOffice.org.
15 * OpenOffice.org is free software: you can redistribute it and/or modify
16 * it under the terms of the GNU Lesser General Public License version 3
17 * only, as published by the Free Software Foundation.
19 * OpenOffice.org is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU Lesser General Public License version 3 for more details
23 * (a copy is included in the LICENSE file that accompanied this code).
25 * You should have received a copy of the GNU Lesser General Public License
26 * version 3 along with OpenOffice.org. If not, see
27 * <http://www.openoffice.org/license.html>
28 * for a copy of the LGPLv3 License.
30 ************************************************************************/
32 #include <GraphicImport.hxx>
33 #include <dmapper/DomainMapper.hxx>
34 #include <PropertyMap.hxx>
35 #include <doctok/resourceids.hxx>
36 #include <ooxml/resourceids.hxx>
37 #include <ConversionHelper.hxx>
38 #include <com/sun/star/uno/XComponentContext.hpp>
39 #include <com/sun/star/io/XInputStream.hpp>
40 #include <cppuhelper/implbase1.hxx>
41 #include <com/sun/star/awt/Size.hpp>
42 #include <com/sun/star/container/XNamed.hpp>
43 #include <com/sun/star/drawing/ColorMode.hpp>
45 #include <com/sun/star/graphic/XGraphicProvider.hpp>
46 #include <com/sun/star/graphic/XGraphic.hpp>
47 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
48 #include <com/sun/star/table/BorderLine.hpp>
49 #include <com/sun/star/text/GraphicCrop.hpp>
50 #include <com/sun/star/text/XTextContent.hpp>
51 #include <com/sun/star/text/TextContentAnchorType.hpp>
52 #include <com/sun/star/text/HoriOrientation.hpp>
53 #include <com/sun/star/text/RelOrientation.hpp>
54 #include <com/sun/star/text/VertOrientation.hpp>
55 #include <com/sun/star/text/WrapTextMode.hpp>
56 #include <com/sun/star/drawing/XShape.hpp>
57 #include <rtl/ustrbuf.hxx>
61 #include <resourcemodel/QNameToString.hxx>
64 #ifdef DEBUG_DOMAINMAPPER
65 #include <resourcemodel/TagLogger.hxx>
68 namespace writerfilter
{
71 using namespace ::std
;
72 using namespace ::com::sun::star
;
74 #ifdef DEBUG_DOMAINMAPPER
75 extern TagLogger::Pointer_t dmapper_logger
;
78 class XInputStreamHelper
: public cppu::WeakImplHelper1
81 const sal_uInt8
* m_pBuffer
;
82 const sal_Int32 m_nLength
;
83 sal_Int32 m_nPosition
;
86 const sal_uInt8
* m_pBMPHeader
; //default BMP-header
87 sal_Int32 m_nHeaderLength
;
89 XInputStreamHelper(const sal_uInt8
* buf
, size_t len
, bool bBmp
);
90 ~XInputStreamHelper();
92 virtual ::sal_Int32 SAL_CALL
readBytes( uno::Sequence
< ::sal_Int8
>& aData
, ::sal_Int32 nBytesToRead
) throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
);
93 virtual ::sal_Int32 SAL_CALL
readSomeBytes( uno::Sequence
< ::sal_Int8
>& aData
, ::sal_Int32 nMaxBytesToRead
) throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
);
94 virtual void SAL_CALL
skipBytes( ::sal_Int32 nBytesToSkip
) throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
);
95 virtual ::sal_Int32 SAL_CALL
available( ) throw (io::NotConnectedException
, io::IOException
, uno::RuntimeException
);
96 virtual void SAL_CALL
closeInput( ) throw (io::NotConnectedException
, io::IOException
, uno::RuntimeException
);
98 /*-- 01.11.2006 13:56:20---------------------------------------------------
100 -----------------------------------------------------------------------*/
101 XInputStreamHelper::XInputStreamHelper(const sal_uInt8
* buf
, size_t len
, bool bBmp
) :
107 static const sal_uInt8 aHeader
[] =
108 {0x42, 0x4d, 0xe6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 };
109 m_pBMPHeader
= aHeader
;
110 m_nHeaderLength
= m_bBmp
? sizeof( aHeader
) / sizeof(sal_uInt8
) : 0;
113 /*-- 01.11.2006 13:56:20---------------------------------------------------
115 -----------------------------------------------------------------------*/
116 XInputStreamHelper::~XInputStreamHelper()
119 /*-- 01.11.2006 13:56:21---------------------------------------------------
121 -----------------------------------------------------------------------*/
122 ::sal_Int32
XInputStreamHelper::readBytes( uno::Sequence
< ::sal_Int8
>& aData
, ::sal_Int32 nBytesToRead
)
123 throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
)
125 return readSomeBytes( aData
, nBytesToRead
);
127 /*-- 01.11.2006 13:56:21---------------------------------------------------
129 -----------------------------------------------------------------------*/
130 ::sal_Int32
XInputStreamHelper::readSomeBytes( uno::Sequence
< ::sal_Int8
>& aData
, ::sal_Int32 nMaxBytesToRead
)
131 throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
)
134 if( nMaxBytesToRead
> 0 )
136 if( nMaxBytesToRead
> (m_nLength
+ m_nHeaderLength
) - m_nPosition
)
137 nRet
= (m_nLength
+ m_nHeaderLength
) - m_nPosition
;
139 nRet
= nMaxBytesToRead
;
140 aData
.realloc( nRet
);
141 sal_Int8
* pData
= aData
.getArray();
142 sal_Int32 nHeaderRead
= 0;
143 if( m_nPosition
< m_nHeaderLength
)
145 //copy header content first
146 nHeaderRead
= m_nHeaderLength
- m_nPosition
;
147 memcpy( pData
, m_pBMPHeader
+ (m_nPosition
), nHeaderRead
);
149 m_nPosition
+= nHeaderRead
;
153 memcpy( pData
+ nHeaderRead
, m_pBuffer
+ (m_nPosition
- m_nHeaderLength
), nRet
);
159 /*-- 01.11.2006 13:56:21---------------------------------------------------
161 -----------------------------------------------------------------------*/
162 void XInputStreamHelper::skipBytes( ::sal_Int32 nBytesToSkip
) throw (io::NotConnectedException
, io::BufferSizeExceededException
, io::IOException
, uno::RuntimeException
)
164 if( nBytesToSkip
< 0 || m_nPosition
+ nBytesToSkip
> (m_nLength
+ m_nHeaderLength
))
165 throw io::BufferSizeExceededException();
166 m_nPosition
+= nBytesToSkip
;
168 /*-- 01.11.2006 13:56:22---------------------------------------------------
170 -----------------------------------------------------------------------*/
171 ::sal_Int32
XInputStreamHelper::available( ) throw (io::NotConnectedException
, io::IOException
, uno::RuntimeException
)
173 return ( m_nLength
+ m_nHeaderLength
) - m_nPosition
;
175 /*-- 01.11.2006 13:56:22---------------------------------------------------
177 -----------------------------------------------------------------------*/
178 void XInputStreamHelper::closeInput( ) throw (io::NotConnectedException
, io::IOException
, uno::RuntimeException
)
181 /*-- 02.11.2006 09:34:29---------------------------------------------------
183 -----------------------------------------------------------------------*/
184 struct GraphicBorderLine
186 sal_Int32 nLineWidth
;
187 // sal_Int32 nLineType;
188 sal_Int32 nLineColor
;
189 sal_Int32 nLineDistance
;
192 GraphicBorderLine() :
202 class GraphicImport_Impl
211 GraphicImportType eGraphicImportType
;
212 DomainMapper
& rDomainMapper
;
214 sal_Int32 nHoriScaling
;
215 sal_Int32 nVertScaling
;
216 sal_Int32 nLeftPosition
;
217 sal_Int32 nTopPosition
;
218 sal_Int32 nRightPosition
;
219 sal_Int32 nBottomPosition
;
222 sal_Int32 nRightCrop
;
223 sal_Int32 nBottomCrop
;
227 sal_Int16 nHoriOrient
;
228 sal_Int16 nHoriRelation
;
230 sal_Int16 nVertOrient
;
231 sal_Int16 nVertRelation
;
237 sal_Int32 nLeftMargin
;
238 sal_Int32 nRightMargin
;
239 sal_Int32 nTopMargin
;
240 sal_Int32 nBottomMargin
;
243 sal_Int32 nBrightness
;
246 sal_Int32 nFillColor
;
248 drawing::ColorMode eColorMode
;
250 GraphicBorderLine aBorders
[4];
251 sal_Int32 nCurrentBorderLine
;
257 sal_Int32 nBitsPerPixel
;
263 bool bPositionProtected
;
265 bool bInShapeOptionMode
;
266 sal_Int32 nShapeOptionType
;
268 ::rtl::OUString sName
;
269 ::rtl::OUString sAlternativeText
;
271 GraphicImport_Impl(GraphicImportType eImportType
, DomainMapper
& rDMapper
) :
276 ,eGraphicImportType( eImportType
)
277 ,rDomainMapper( rDMapper
)
288 ,bUseSimplePos(false)
289 ,nHoriOrient( text::HoriOrientation::NONE
)
290 ,nHoriRelation( text::RelOrientation::FRAME
)
291 ,bPageToggle( false )
292 ,nVertOrient( text::VertOrientation::NONE
)
293 ,nVertRelation( text::RelOrientation::FRAME
)
305 ,nFillColor( 0xffffffff )
306 ,eColorMode( drawing::ColorMode_STANDARD
)
307 ,nCurrentBorderLine(BORDER_TOP
)
315 ,bSizeProtected(false)
316 ,bPositionProtected(false)
317 ,bInShapeOptionMode(false)
320 void setXSize(sal_Int32 _nXSize
)
326 sal_uInt32
getXSize() const
331 bool isXSizeValid() const
336 void setYSize(sal_Int32 _nYSize
)
342 sal_uInt32
getYSize() const
347 bool isYSizeValis () const
352 /*-- 01.11.2006 09:42:42---------------------------------------------------
354 -----------------------------------------------------------------------*/
355 GraphicImport::GraphicImport(uno::Reference
< uno::XComponentContext
> xComponentContext
,
356 uno::Reference
< lang::XMultiServiceFactory
> xTextFactory
,
357 DomainMapper
& rDMapper
,
358 GraphicImportType eImportType
)
359 : m_pImpl( new GraphicImport_Impl( eImportType
, rDMapper
))
360 ,m_xComponentContext( xComponentContext
)
361 ,m_xTextFactory( xTextFactory
)
364 /*-- 01.11.2006 09:42:42---------------------------------------------------
366 -----------------------------------------------------------------------*/
367 GraphicImport::~GraphicImport()
371 /*-- 01.11.2006 09:45:01---------------------------------------------------
373 -----------------------------------------------------------------------*/
374 void GraphicImport::attribute(Id nName
, Value
& val
)
376 #ifdef DEBUG_DOMAINMAPPER
377 dmapper_logger
->startElement("attribute");
378 dmapper_logger
->attribute("name", (*QNameToString::Instance())(nName
));
380 sal_Int32 nIntValue
= val
.getInt();
381 /* WRITERFILTERSTATUS: table: PICFattribute */
384 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
385 case NS_rtf::LN_LCB
: break;//byte count
386 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
387 case NS_rtf::LN_CBHEADER
: break;//ignored
388 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
389 case NS_rtf::LN_MFP
: //MetafilePict
390 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
391 case NS_rtf::LN_DffRecord
: //dff record - expands to an sprm which expands to ...
392 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
393 case NS_rtf::LN_shpopt
: //shape options
394 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
395 case NS_rtf::LN_shpfbse
: //BLIP store entry
396 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
397 case NS_rtf::LN_BRCTOP
: //top border
398 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
399 case NS_rtf::LN_BRCLEFT
: //left border
400 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
401 case NS_rtf::LN_BRCBOTTOM
: //bottom border
402 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
403 case NS_rtf::LN_BRCRIGHT
: //right border
404 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
405 case NS_rtf::LN_shape
: //shape
406 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
407 case NS_rtf::LN_blip
: //the binary graphic data in a shape
411 case NS_rtf::LN_BRCTOP
: //top border
412 m_pImpl
->nCurrentBorderLine
= BORDER_TOP
;
414 case NS_rtf::LN_BRCLEFT
: //left border
415 m_pImpl
->nCurrentBorderLine
= BORDER_LEFT
;
417 case NS_rtf::LN_BRCBOTTOM
: //bottom border
418 m_pImpl
->nCurrentBorderLine
= BORDER_BOTTOM
;
420 case NS_rtf::LN_BRCRIGHT
: //right border
421 m_pImpl
->nCurrentBorderLine
= BORDER_RIGHT
;
423 case NS_rtf::LN_shpopt
:
424 m_pImpl
->bInShapeOptionMode
= true;
428 writerfilter::Reference
<Properties
>::Pointer_t pProperties
= val
.getProperties();
429 if( pProperties
.get())
431 pProperties
->resolve(*this);
435 case NS_rtf::LN_shpopt
:
436 m_pImpl
->bInShapeOptionMode
= false;
442 case NS_rtf::LN_payload
:
444 writerfilter::Reference
<BinaryObj
>::Pointer_t pPictureData
= val
.getBinary();
445 if( pPictureData
.get())
446 pPictureData
->resolve(*this);
449 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
450 case NS_rtf::LN_BM_RCWINMF
: //windows bitmap structure - if it's a bitmap
452 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
453 case NS_rtf::LN_DXAGOAL
: //x-size in twip
454 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
455 case NS_rtf::LN_DYAGOAL
: //y-size in twip
457 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
458 case NS_rtf::LN_MX
: m_pImpl
->nHoriScaling
= nIntValue
; break;// hori scaling in 0.001%
459 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
460 case NS_rtf::LN_MY
: m_pImpl
->nVertScaling
= nIntValue
; break;// vert scaling in 0.001%
461 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
462 case NS_rtf::LN_DXACROPLEFT
: m_pImpl
->nLeftCrop
= ConversionHelper::convertTwipToMM100(nIntValue
); break;// left crop in twips
463 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
464 case NS_rtf::LN_DYACROPTOP
: m_pImpl
->nTopCrop
= ConversionHelper::convertTwipToMM100(nIntValue
); break;// top crop in twips
465 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
466 case NS_rtf::LN_DXACROPRIGHT
: m_pImpl
->nRightCrop
= ConversionHelper::convertTwipToMM100(nIntValue
); break;// right crop in twips
467 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
468 case NS_rtf::LN_DYACROPBOTTOM
: m_pImpl
->nBottomCrop
= ConversionHelper::convertTwipToMM100(nIntValue
); break;// bottom crop in twips
469 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
470 case NS_rtf::LN_BRCL
: break;//border type - legacy -
471 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
472 case NS_rtf::LN_FFRAMEEMPTY
: break;// picture consists of a single frame
473 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
474 case NS_rtf::LN_FBITMAP
:
475 m_pImpl
->bIsBitmap
= nIntValue
> 0 ? true : false;
476 break;//1 if it's a bitmap ???
477 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
478 case NS_rtf::LN_FDRAWHATCH
: break;//1 if it's an active OLE object
479 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
480 case NS_rtf::LN_FERROR
: break;// 1 if picture is an error message
481 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
482 case NS_rtf::LN_BPP
: m_pImpl
->nBitsPerPixel
= nIntValue
; break;//bits per pixel 0 - unknown, 1- mono, 4 - VGA
484 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
485 case NS_rtf::LN_DXAORIGIN
: //horizontal offset of hand annotation origin
486 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
487 case NS_rtf::LN_DYAORIGIN
: //vertical offset of hand annotation origin
489 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
490 case NS_rtf::LN_CPROPS
:break;// unknown - ignored
492 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
494 // according to the documentation 99 or 98 are provided - but they are not!
495 // m_pImpl->bIsBitmap = 99 == nIntValue ? true : false;
496 // m_pImpl->bIsTiff = 98 == nIntValue ? true : false;
499 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
500 case NS_rtf::LN_XEXT
:
501 m_pImpl
->setXSize(nIntValue
);
503 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
504 case NS_rtf::LN_YEXT
:
505 m_pImpl
->setYSize(nIntValue
);
507 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
508 case NS_rtf::LN_HMF
: break; //identifier - ignored
510 //sprm 0xf004 and 0xf008, 0xf00b
511 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
512 case NS_rtf::LN_dfftype
://
513 m_pImpl
->nDffType
= nIntValue
;
515 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
516 case NS_rtf::LN_dffinstance
:
517 //todo: does this still work for PICF?
518 //in case of LN_dfftype == 0xf01f the instance contains the bitmap type:
519 if(m_pImpl
->nDffType
== 0xf01f)
522 case 0x216 : // Metafile header then compressed WMF
524 case 0x3D4 : // Metafile header then compressed EMF
526 case 0x542 : // Metafile hd. then compressed PICT
530 // rBLIPStream.SeekRel( nSkip + 20 );
531 // // read in size of metafile in EMUS
532 // rBLIPStream >> aMtfSize100.Width() >> aMtfSize100.Height();
533 // // scale to 1/100mm
534 // aMtfSize100.Width() /= 360, aMtfSize100.Height() /= 360;
535 // if ( pVisArea ) // seem that we currently are skipping the visarea position
536 // *pVisArea = Rectangle( Point(), aMtfSize100 );
537 // // skip rest of header
539 // bMtfBLIP = bZCodecCompression = TRUE;
544 case 0x46A : break;// One byte tag then JPEG (= JFIF) data
546 case 0x6E0 : break;// One byte tag then PNG data
548 case 0x7A8 : m_pImpl
->bIsBitmap
= true;
549 // nSkip += 1; // One byte tag then DIB data
554 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
555 case NS_rtf::LN_dffversion
:// ignored
559 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
560 case NS_rtf::LN_shptype
: break;
561 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
562 case NS_rtf::LN_shpid
: break;
563 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
564 case NS_rtf::LN_shpfGroup
: break;// This shape is a group shape
565 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
566 case NS_rtf::LN_shpfChild
: break;// Not a top-level shape
567 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
568 case NS_rtf::LN_shpfPatriarch
: break;// This is the topmost group shape. Exactly one of these per drawing.
569 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
570 case NS_rtf::LN_shpfDeleted
: break;// The shape has been deleted
571 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
572 case NS_rtf::LN_shpfOleShape
: break;// The shape is an OLE object
573 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
574 case NS_rtf::LN_shpfHaveMaster
: break;// Shape has a hspMaster property
575 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
576 case NS_rtf::LN_shpfFlipH
: // Shape is flipped horizontally
577 m_pImpl
->bHoriFlip
= nIntValue
? true : false;
579 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
580 case NS_rtf::LN_shpfFlipV
: // Shape is flipped vertically
581 m_pImpl
->bVertFlip
= nIntValue
? true : false;
583 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
584 case NS_rtf::LN_shpfConnector
: break;// Connector type of shape
585 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
586 case NS_rtf::LN_shpfHaveAnchor
: break;// Shape has an anchor of some kind
587 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
588 case NS_rtf::LN_shpfBackground
: break;// Background shape
589 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
590 case NS_rtf::LN_shpfHaveSpt
: break;// Shape has a shape type property
591 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
592 case NS_rtf::LN_shptypename
: break;// shape type name
593 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
594 case NS_rtf::LN_shppid
: m_pImpl
->nShapeOptionType
= nIntValue
; break; //type of shape option
595 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
596 case NS_rtf::LN_shpfBid
: break; //ignored
597 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
598 case NS_rtf::LN_shpfComplex
:break;
599 /* WRITERFILTERSTATUS: done: 50, planned: 10, spent: 5 */
600 case NS_rtf::LN_shpop
:
602 if(NS_dff::LN_shpwzDescription
!= sal::static_int_cast
<Id
>(m_pImpl
->nShapeOptionType
) )
603 ProcessShapeOptions( val
);
606 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
607 case NS_rtf::LN_shpname
: break;
608 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
609 case NS_rtf::LN_shpvalue
:
611 if( NS_dff::LN_shpwzDescription
== sal::static_int_cast
<Id
>(m_pImpl
->nShapeOptionType
) )
612 ProcessShapeOptions( val
);
617 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
618 case NS_rtf::LN_shpbtWin32
: break;
619 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
620 case NS_rtf::LN_shpbtMacOS
: break;
621 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
622 case NS_rtf::LN_shprgbUid
: break;
623 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
624 case NS_rtf::LN_shptag
: break;
625 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
626 case NS_rtf::LN_shpsize
: break;
627 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
628 case NS_rtf::LN_shpcRef
: break;
629 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
630 case NS_rtf::LN_shpfoDelay
: break;
631 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
632 case NS_rtf::LN_shpusage
: break;
633 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
634 case NS_rtf::LN_shpcbName
: break;
635 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
636 case NS_rtf::LN_shpunused2
: break;
637 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
638 case NS_rtf::LN_shpunused3
: break;
641 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
642 case NS_rtf::LN_shpblipbname
: break;
644 /* WRITERFILTERSTATUS: done: 100, planned: 1, spent: 1 */
645 case NS_rtf::LN_DPTLINEWIDTH
: // 0x1759
646 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].nLineWidth
= nIntValue
;
648 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
649 case NS_rtf::LN_BRCTYPE
: // 0x175a
650 //graphic borders don't support different line types
651 //m_pImpl->aBorders[m_pImpl->nCurrentBorderLine].nLineType = nIntValue;
653 /* WRITERFILTERSTATUS: done: 100, planned: 1, spent: 1 */
654 case NS_rtf::LN_ICO
: // 0x175b
655 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].nLineColor
= ConversionHelper::ConvertColor( nIntValue
);
657 /* WRITERFILTERSTATUS: done: 100, planned: 1, spent: 1 */
658 case NS_rtf::LN_DPTSPACE
: // 0x175c
659 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].nLineDistance
= nIntValue
;
661 /* WRITERFILTERSTATUS: done: 0, planned: 1, spent: 0 */
662 case NS_rtf::LN_FSHADOW
: // 0x175d
663 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].bHasShadow
= nIntValue
? true : false;
665 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
666 case NS_rtf::LN_FFRAME
: // ignored
667 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
668 case NS_rtf::LN_UNUSED2_15
: break;// ignored
670 // const QName_t LN_shpoptextraoffset = 20028;
671 // const QName_t LN_shptypename = 20029;
672 // const QName_t LN_shpblipbname = 20031;
673 // const QName_t LN_binary = 20032;
677 // case NS_rtf::LN_shpblipbname = 20031;
678 // case NS_rtf::LN_binary = 20032;
679 // case NS_rtf::LN_shpdgg = 10492;
680 // case NS_rtf::LN_shpfbse = 10493;
683 // case NS_rtf::LN_CPROPS: //unused
687 // case NS_rtf::LN_LINECOLOR = 10372;
688 // case NS_rtf::LN_LINEWIDTH = 10373;
689 // case NS_rtf::LN_LINETYPE = 10374;
691 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
692 case NS_rtf::LN_SPID
: break;
693 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
694 case NS_rtf::LN_XALEFT
: m_pImpl
->nLeftPosition
= ConversionHelper::convertTwipToMM100(nIntValue
); break; //left position
695 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
696 case NS_rtf::LN_YATOP
: m_pImpl
->nTopPosition
= ConversionHelper::convertTwipToMM100(nIntValue
); break; //top position
697 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
698 case NS_rtf::LN_XARIGHT
: m_pImpl
->nRightPosition
= ConversionHelper::convertTwipToMM100(nIntValue
); break; //right position
699 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
700 case NS_rtf::LN_YABOTTOM
: m_pImpl
->nBottomPosition
= ConversionHelper::convertTwipToMM100(nIntValue
); break;//bottom position
701 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
702 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
703 case NS_rtf::LN_FHDR
:
704 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
705 case NS_rtf::LN_XAlign
:
707 static const SwHoriOrient aHoriOriTab[ nCntXAlign ] =
709 HORI_NONE, // From left position
711 HORI_CENTER, // centered
713 // --> OD 2004-12-06 #i36649#
714 // - inside -> HORI_LEFT and outside -> HORI_RIGHT
716 HORI_RIGHT // outside
718 if( nIntValue
< 6 && nIntValue
> 0 )
720 static const sal_Int16 aHoriOrientTab
[ 6 ] =
722 text::HoriOrientation::NONE
,
723 text::HoriOrientation::LEFT
,
724 text::HoriOrientation::CENTER
,
725 text::HoriOrientation::RIGHT
,
726 text::HoriOrientation::INSIDE
,
727 text::HoriOrientation::OUTSIDE
729 m_pImpl
->nHoriOrient
= aHoriOrientTab
[nIntValue
];
730 m_pImpl
->bPageToggle
= nIntValue
> 3;
733 case NS_rtf::LN_YAlign
:
735 static const SwVertOrient aVertOriTab[ nCntYAlign ] =
737 VERT_NONE, // From Top position
739 VERT_CENTER, // centered
740 VERT_BOTTOM, // bottom
741 VERT_LINE_TOP, // inside (obscure)
742 VERT_LINE_BOTTOM // outside (obscure)
744 // CMC,OD 24.11.2003 #i22673# - to-line vertical alignment
745 static const SwVertOrient aToLineVertOriTab[ nCntYAlign ] =
748 VERT_LINE_BOTTOM, // top
749 VERT_LINE_CENTER, // centered
750 VERT_LINE_TOP, // bottom
751 VERT_LINE_BOTTOM, // inside (obscure)
752 VERT_LINE_TOP // outside (obscure)
754 if ( eVertRel == REL_VERT_LINE ) //m_pImpl->nVertRelation == text::RelOrientation::TEXT_LINE
756 eVertOri = aToLineVertOriTab[ nYAlign ];
760 eVertOri = aVertOriTab[ nYAlign ];
764 if( nIntValue
< 6 && nIntValue
> 0)
766 static const sal_Int16 aVertOrientTab
[ 6 ] =
768 text::VertOrientation::NONE
, // From Top position
769 text::VertOrientation::TOP
, // top
770 text::VertOrientation::CENTER
, // centered
771 text::VertOrientation::BOTTOM
, // bottom
772 text::VertOrientation::LINE_TOP
, // inside (obscure)
773 text::VertOrientation::LINE_BOTTOM
// outside (obscure)
775 static const sal_Int16 aToLineVertOrientTab
[ 6 ] =
777 text::VertOrientation::NONE
, // below
778 text::VertOrientation::LINE_BOTTOM
, // top
779 text::VertOrientation::LINE_CENTER
, // centered
780 text::VertOrientation::LINE_TOP
, // bottom
781 text::VertOrientation::LINE_BOTTOM
, // inside (obscure)
782 text::VertOrientation::LINE_TOP
// outside (obscure)
784 m_pImpl
->nVertOrient
= m_pImpl
->nVertRelation
== text::RelOrientation::TEXT_LINE
?
785 aToLineVertOrientTab
[nIntValue
] : aVertOrientTab
[nIntValue
];
788 case NS_rtf::LN_LayoutInTableCell
: break; //currently unknown
789 case NS_rtf::LN_XRelTo
:
790 case NS_rtf::LN_BX
: //hori orient relation
793 case 0: m_pImpl
->nHoriRelation
= text::RelOrientation::PAGE_PRINT_AREA
; break;
794 case 1: m_pImpl
->nHoriRelation
= text::RelOrientation::PAGE_FRAME
; break;
795 case 2: m_pImpl
->nHoriRelation
= text::RelOrientation::FRAME
; break;
797 default:m_pImpl
->nHoriRelation
= text::RelOrientation::CHAR
;
800 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
801 case NS_rtf::LN_YRelTo
:
802 case NS_rtf::LN_BY
: //vert orient relation
805 case 0: m_pImpl
->nVertRelation
= text::RelOrientation::PAGE_PRINT_AREA
; break;
806 case 1: m_pImpl
->nVertRelation
= text::RelOrientation::PAGE_FRAME
; break;
807 case 2: m_pImpl
->nVertRelation
= text::RelOrientation::FRAME
; break;
809 default:m_pImpl
->nVertRelation
= text::RelOrientation::TEXT_LINE
;
813 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
814 case NS_rtf::LN_WR
: //wrapping
817 case 0: //0 like 2, but doesn't require absolute object
818 m_pImpl
->bIgnoreWRK
= false;
819 case 2: //2 wrap around absolute object
820 m_pImpl
->nWrap
= text::WrapTextMode_PARALLEL
;
822 case 1: //1 no text next to shape
823 m_pImpl
->nWrap
= text::WrapTextMode_NONE
;
825 case 3: //3 wrap as if no object present
826 m_pImpl
->nWrap
= text::WrapTextMode_THROUGHT
;
828 case 4: //4 wrap tightly around object
829 m_pImpl
->bIgnoreWRK
= false;
830 case 5: //5 wrap tightly, but allow holes
831 m_pImpl
->nWrap
= text::WrapTextMode_PARALLEL
;
832 m_pImpl
->bContour
= true;
837 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
839 if( !m_pImpl
->bIgnoreWRK
)
842 case 0: //0 like 2, but doesn't require absolute object
843 case 2: //2 wrap around absolute object
844 m_pImpl
->nWrap
= text::WrapTextMode_PARALLEL
;
846 case 1: //1 no text next to shape
847 m_pImpl
->nWrap
= text::WrapTextMode_NONE
;
849 case 3: //3 wrap as if no object present
850 m_pImpl
->nWrap
= text::WrapTextMode_THROUGHT
;
852 case 4: //4 wrap tightly around object
853 case 5: //5 wrap tightly, but allow holes
854 m_pImpl
->nWrap
= text::WrapTextMode_PARALLEL
;
855 m_pImpl
->bContour
= true;
860 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
861 case NS_rtf::LN_FRCASIMPLE
:
862 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
863 case NS_rtf::LN_FBELOWTEXT
:
864 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
865 case NS_rtf::LN_FANCHORLOCK
:
866 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
867 case NS_rtf::LN_CTXBX
:
869 // sal_Int32 nValue1 = val.getInt();
873 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
874 case NS_rtf::LN_shptxt
:
877 /* case NS_rtf::LN_CH = 10421;
878 case NS_rtf::LN_UNUSED0_5 = 10422;
879 case NS_rtf::LN_FLT = 10423;
880 case NS_rtf::LN_shpLeft = 10424;
881 case NS_rtf::LN_shpTop = 10425;
883 case NS_rtf::LN_dffheader
: break;
884 case NS_ooxml::LN_CT_PositiveSize2D_cx
:// 90407;
885 case NS_ooxml::LN_CT_PositiveSize2D_cy
:// 90408;
887 sal_Int32 nDim
= ConversionHelper::convertEMUToMM100( nIntValue
);
888 if( nName
== NS_ooxml::LN_CT_PositiveSize2D_cx
)
889 m_pImpl
->setXSize(nDim
);
891 m_pImpl
->setYSize(nDim
);
894 case NS_ooxml::LN_CT_EffectExtent_l
:// 90907;
895 case NS_ooxml::LN_CT_EffectExtent_t
:// 90908;
896 case NS_ooxml::LN_CT_EffectExtent_r
:// 90909;
897 case NS_ooxml::LN_CT_EffectExtent_b
:// 90910;
898 //todo: extends the wrapping size of the object, e.g. if shadow is added
900 case NS_ooxml::LN_CT_NonVisualDrawingProps_id
:// 90650;
901 //id of the object - ignored
903 case NS_ooxml::LN_CT_NonVisualDrawingProps_name
:// 90651;
905 m_pImpl
->sName
= val
.getString();
907 case NS_ooxml::LN_CT_NonVisualDrawingProps_descr
:// 90652;
909 m_pImpl
->sAlternativeText
= val
.getString();
911 case NS_ooxml::LN_CT_GraphicalObjectFrameLocking_noChangeAspect
://90644;
912 //disallow aspect ratio change - ignored
914 case NS_ooxml::LN_CT_GraphicalObjectFrameLocking_noMove
:// 90645;
915 m_pImpl
->bPositionProtected
= true;
917 case NS_ooxml::LN_CT_GraphicalObjectFrameLocking_noResize
: // 90646;
918 m_pImpl
->bSizeProtected
= true;
920 case NS_ooxml::LN_CT_Anchor_distT
: // 90983;
921 case NS_ooxml::LN_CT_Anchor_distB
: // 90984;
922 case NS_ooxml::LN_CT_Anchor_distL
: // 90985;
923 case NS_ooxml::LN_CT_Anchor_distR
: // 90986;
925 //redirect to shape option processing
928 case NS_ooxml::LN_CT_Anchor_distT
: // 90983;
929 m_pImpl
->nShapeOptionType
= NS_dff::LN_shpdyWrapDistTop
;
931 case NS_ooxml::LN_CT_Anchor_distB
: // 90984;
932 m_pImpl
->nShapeOptionType
= NS_dff::LN_shpdyWrapDistBottom
;
934 case NS_ooxml::LN_CT_Anchor_distL
: // 90985;
935 m_pImpl
->nShapeOptionType
= NS_dff::LN_shpdxWrapDistLeft
;
937 case NS_ooxml::LN_CT_Anchor_distR
: // 90986;
938 m_pImpl
->nShapeOptionType
= NS_dff::LN_shpdxWrapDistRight
;
940 //m_pImpl->nShapeOptionType = NS_dff::LN_shpcropFromTop
943 ProcessShapeOptions(val
);
946 case NS_ooxml::LN_CT_Anchor_simplePos_attr
: // 90987;
947 m_pImpl
->bUseSimplePos
= nIntValue
> 0;
949 case NS_ooxml::LN_CT_Anchor_relativeHeight
: // 90988;
952 case NS_ooxml::LN_CT_Anchor_behindDoc
: // 90989; - in background
954 m_pImpl
->bOpaque
= false;
956 case NS_ooxml::LN_CT_Anchor_locked
: // 90990; - ignored
957 case NS_ooxml::LN_CT_Anchor_layoutInCell
: // 90991; - ignored
958 //true: inside cell, cell resizes, false: table is resized or relocated, object might be outside of the table
959 case NS_ooxml::LN_CT_Anchor_hidden
: // 90992; - ignored
961 case NS_ooxml::LN_CT_Anchor_allowOverlap
: // 90993;
962 //enable overlapping - ignored
964 case NS_ooxml::LN_CT_Point2D_x
: // 90405;
965 case NS_ooxml::LN_CT_Point2D_y
: // 90406;
966 if( m_pImpl
->bUseSimplePos
)
968 //todo: absolute positioning
969 NS_ooxml::LN_CT_Point2D_x
== nName
? m_pImpl
->nLeftPosition
= ConversionHelper::convertTwipToMM100(nIntValue
) :
970 m_pImpl
->nTopPosition
= ConversionHelper::convertTwipToMM100(nIntValue
);
974 case NS_ooxml::LN_CT_WrapTight_wrapText
: // 90934;
975 m_pImpl
->bContour
= true;
977 case NS_ooxml::LN_CT_WrapSquare_wrapText
: //90928;
978 switch ( val
.getInt() )
980 case NS_ooxml::LN_Value_wordprocessingDrawing_ST_WrapText_bothSides
: // 90920;
981 m_pImpl
->nWrap
= text::WrapTextMode_PARALLEL
;
983 case NS_ooxml::LN_Value_wordprocessingDrawing_ST_WrapText_left
: // 90921;
984 m_pImpl
->nWrap
= text::WrapTextMode_LEFT
;
986 case NS_ooxml::LN_Value_wordprocessingDrawing_ST_WrapText_right
: // 90922;
987 m_pImpl
->nWrap
= text::WrapTextMode_RIGHT
;
989 case NS_ooxml::LN_Value_wordprocessingDrawing_ST_WrapText_largest
: // 90923;
990 m_pImpl
->nWrap
= text::WrapTextMode_DYNAMIC
;
995 case NS_ooxml::LN_shape
:
996 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
998 val
.getAny() >>= m_xShape
;
1002 uno::Reference
< beans::XPropertySet
> xShapeProps
1003 (m_xShape
, uno::UNO_QUERY_THROW
);
1005 PropertyNameSupplier
& rPropNameSupplier
=
1006 PropertyNameSupplier::GetPropertyNameSupplier();
1007 xShapeProps
->setPropertyValue
1008 (rPropNameSupplier
.GetName(PROP_ANCHOR_TYPE
),
1010 (text::TextContentAnchorType_AS_CHARACTER
));
1011 xShapeProps
->setPropertyValue
1012 (rPropNameSupplier
.GetName(PROP_TEXT_RANGE
),
1014 (m_pImpl
->rDomainMapper
.GetCurrentTextRange()));
1016 awt::Point
aPoint(m_xShape
->getPosition());
1017 awt::Size
aSize(m_xShape
->getSize());
1019 if (m_pImpl
->isXSizeValid())
1020 aSize
.Width
= m_pImpl
->getXSize();
1021 if (m_pImpl
->isYSizeValis())
1022 aSize
.Height
= m_pImpl
->getYSize();
1024 m_xShape
->setSize(aSize
);
1026 m_pImpl
->bIsGraphic
= true;
1030 case NS_ooxml::LN_CT_Inline_distT
:
1031 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1032 case NS_ooxml::LN_CT_Inline_distB
:
1033 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1034 case NS_ooxml::LN_CT_Inline_distL
:
1035 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1036 case NS_ooxml::LN_CT_Inline_distR
:
1037 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1038 //TODO: need to be handled
1040 case NS_ooxml::LN_CT_GraphicalObjectData_uri
:
1042 //TODO: does it need to be handled?
1045 #if OSL_DEBUG_LEVEL > 0
1046 ::rtl::OString
sMessage( "GraphicImport::attribute() - Id: ");
1047 sMessage
+= ::rtl::OString::valueOf( sal_Int32( nName
), 10 );
1048 sMessage
+= ::rtl::OString(" / 0x");
1049 sMessage
+= ::rtl::OString::valueOf( sal_Int32( nName
), 16 );
1050 OSL_ENSURE( false, sMessage
.getStr())
1054 #ifdef DEBUG_DOMAINMAPPER
1055 dmapper_logger
->endElement("attribute");
1059 uno::Reference
<text::XTextContent
> GraphicImport::GetGraphicObject()
1061 uno::Reference
<text::XTextContent
> xResult
;
1063 if (m_xGraphicObject
.is())
1064 xResult
= m_xGraphicObject
;
1065 else if (m_xShape
.is())
1067 xResult
.set(m_xShape
, uno::UNO_QUERY_THROW
);
1073 /*-- 22.11.2006 09:46:48---------------------------------------------------
1075 -----------------------------------------------------------------------*/
1076 void GraphicImport::ProcessShapeOptions(Value
& val
)
1078 sal_Int32 nIntValue
= val
.getInt();
1079 sal_Int32 nTwipValue
= ConversionHelper::convertTwipToMM100(nIntValue
);
1080 /* WRITERFILTERSTATUS: table: ShapeOptionsAttribute */
1081 switch( m_pImpl
->nShapeOptionType
)
1083 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1084 // case NS_dff::LN_shprotation /*4*/: break;
1085 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1086 // case NS_dff::LN_shpfLockRotation /*119*/: break;
1087 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1088 // case NS_dff::LN_shpfLockAspectRatio /*120*/: break;
1089 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1090 // case NS_dff::LN_shpfLockPosition /*121*/: break;
1091 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1092 // case NS_dff::LN_shpfLockAgainstSelect /*122*/: break;
1093 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1094 // case NS_dff::LN_shpfLockCropping /*123*/: break;
1095 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1096 // case NS_dff::LN_shpfLockVertices /*124*/: break;
1097 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1098 // case NS_dff::LN_shpfLockText /*125*/: break;
1099 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1100 // case NS_dff::LN_shpfLockAdjustHandles /*126*/: break;
1101 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1102 // case NS_dff::LN_shpfLockAgainstGrouping /*127*/: break;
1103 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1104 // case NS_dff::LN_shpfLockAgainstGrouping /*127*/:
1105 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1106 // case NS_dff::LN_shplTxid /*128*/:
1107 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1108 // case NS_dff::LN_shpdxTextLeft /*129*/:
1109 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1110 // case NS_dff::LN_shpdyTextTop /*130*/:
1111 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1112 // case NS_dff::LN_shpdxTextRight /*131*/:
1113 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1114 // case NS_dff::LN_shpdyTextBottom /*132*/:
1115 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1116 // case NS_dff::LN_shpWrapText /*133*/:
1117 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1118 // case NS_dff::LN_shpscaleText /*134*/:
1119 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1120 // case NS_dff::LN_shpanchorText /*135*/:
1121 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1122 // case NS_dff::LN_shptxflTextFlow /*136*/:
1123 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1124 // case NS_dff::LN_shpcdirFont /*137*/:
1125 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1126 // case NS_dff::LN_shphspNext /*138*/:
1127 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1128 // case NS_dff::LN_shptxdir /*139*/:
1129 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1130 // case NS_dff::LN_shpfSelectText /*187*/:
1131 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1132 // case NS_dff::LN_shpfAutoTextMargin /*188*/:
1133 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1134 // case NS_dff::LN_shpfRotateText /*189*/:
1135 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1136 // case NS_dff::LN_shpfFitShapeToText /*190*/:
1137 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1138 // case NS_dff::LN_shpfFitTextToShape /*191*/:
1139 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1140 // case NS_dff::LN_shpgtextUNICODE /*192*/:
1141 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1142 // case NS_dff::LN_shpgtextRTF /*193*/:
1143 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1144 // case NS_dff::LN_shpgtextAlign /*194*/:
1145 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1146 // case NS_dff::LN_shpgtextSize /*195*/:
1147 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1148 // case NS_dff::LN_shpgtextSpacing /*196*/:
1149 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1150 // case NS_dff::LN_shpgtextFont /*197*/:
1151 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1152 // case NS_dff::LN_shpgtextFReverseRows /*240*/:
1153 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1154 // case NS_dff::LN_shpfGtext /*241*/:
1155 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1156 // case NS_dff::LN_shpgtextFVertical /*242*/:
1157 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1158 // case NS_dff::LN_shpgtextFKern /*243*/:
1159 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1160 // case NS_dff::LN_shpgtextFTight /*244*/:
1161 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1162 // case NS_dff::LN_shpgtextFStretch /*245*/:
1163 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1164 // case NS_dff::LN_shpgtextFShrinkFit /*246*/:
1165 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1166 // case NS_dff::LN_shpgtextFBestFit /*247*/:
1167 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1168 // case NS_dff::LN_shpgtextFNormalize /*248*/:
1169 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1170 // case NS_dff::LN_shpgtextFDxMeasure /*249*/:
1171 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1172 // case NS_dff::LN_shpgtextFBold /*250*/:
1173 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1174 // case NS_dff::LN_shpgtextFItalic /*251*/:
1175 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1176 // case NS_dff::LN_shpgtextFUnderline /*252*/:
1177 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1178 // case NS_dff::LN_shpgtextFShadow /*253*/:
1179 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1180 // case NS_dff::LN_shpgtextFSmallcaps /*254*/:
1181 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1182 // case NS_dff::LN_shpgtextFStrikethrough /*255*/:
1184 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1185 case NS_dff::LN_shpcropFromTop
/*256*/ : m_pImpl
->nTopCrop
= nTwipValue
; break;// rtf:shpcropFromTop
1186 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1187 case NS_dff::LN_shpcropFromBottom
/*257*/ : m_pImpl
->nBottomCrop
= nTwipValue
; break;// rtf:shpcropFromBottom
1188 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1189 case NS_dff::LN_shpcropFromLeft
/*258*/ : m_pImpl
->nLeftCrop
= nTwipValue
; break;// rtf:shpcropFromLeft
1190 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1191 case NS_dff::LN_shpcropFromRight
/*259*/ : m_pImpl
->nRightCrop
= nTwipValue
;break;// rtf:shpcropFromRight
1192 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1193 case NS_dff::LN_shppib
/*260*/: break; // rtf:shppib
1194 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1195 case NS_dff::LN_shppibName
/*261*/: break; // rtf:shppibName
1196 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1197 case NS_dff::LN_shppibFlags
/*262*/: // rtf:shppibFlags
1199 * // MSOBLIPFLAGS ñ flags for pictures
1202 msoblipflagDefault = 0,
1203 msoblipflagComment = 0, // Blip name is a comment
1204 msoblipflagFile, // Blip name is a file name
1205 msoblipflagURL, // Blip name is a full URL
1206 msoblipflagType = 3, // Mask to extract type
1207 // Or the following flags with any of the above.
1208 msoblipflagDontSave = 4, // A "dont" is the depression in the metal
1209 // body work of an automobile caused when a
1210 // cyclist violently thrusts his or her nose
1211 // at it, thus a DontSave is another name for
1213 msoblipflagDoNotSave = 4, // For those who prefer English
1214 msoblipflagLinkToFile = 8,
1219 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1220 // case NS_dff::LN_shppictureTransparent /*263*/:
1221 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1222 case NS_dff::LN_shppictureContrast
/*264*/: // rtf:shppictureContrast docu: "1<<16"
1224 0x10000 is msoffice 50%
1225 < 0x10000 is in units of 1/50th of 0x10000 per 1%
1226 > 0x10000 is in units where
1227 a msoffice x% is stored as 50/(100-x) * 0x10000
1229 plus, a (ui) microsoft % ranges from 0 to 100, OOO
1230 from -100 to 100, so also normalize into that range
1232 if ( nIntValue
> 0x10000 )
1234 double fX
= nIntValue
;
1236 fX
/= 51; // 50 + 1 to round
1238 m_pImpl
->nContrast
= static_cast<sal_Int32
>(fX
);
1239 m_pImpl
->nContrast
-= 100;
1240 m_pImpl
->nContrast
= -m_pImpl
->nContrast
;
1241 m_pImpl
->nContrast
= (m_pImpl
->nContrast
-50)*2;
1243 else if ( nIntValue
== 0x10000 )
1244 m_pImpl
->nContrast
= 0;
1247 m_pImpl
->nContrast
= nIntValue
* 101; //100 + 1 to round
1248 m_pImpl
->nContrast
/= 0x10000;
1249 m_pImpl
->nContrast
-= 100;
1252 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1253 case NS_dff::LN_shppictureBrightness
/*265*/: // rtf:shppictureBrightness
1254 m_pImpl
->nBrightness
= ( (sal_Int32
) nIntValue
/ 327 );
1256 /* WRITERFILTERSTATUS: done: 50, planned: 0, spent: 0 */
1257 case NS_dff::LN_shppictureGamma
/*266*/: // rtf:shppictureGamma
1258 //todo check gamma value with _real_ document
1259 m_pImpl
->fGamma
= double(nIntValue
/655);
1261 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1262 case NS_dff::LN_shppictureId
/*267*/: break; // rtf:shppictureId
1263 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1264 case NS_dff::LN_shppictureDblCrMod
/*268*/: break; // rtf:shppictureDblCrMod
1265 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1266 case NS_dff::LN_shppictureFillCrMod
/*269*/: break; // rtf:shppictureFillCrMod
1267 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1268 case NS_dff::LN_shppictureLineCrMod
/*270*/: break; // rtf:shppictureLineCrMod
1269 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1270 // case NS_dff::LN_shppibPrint /*271*/:
1271 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1272 // case NS_dff::LN_shppibPrintName /*272*/:
1273 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1274 // case NS_dff::LN_shppibPrintFlags /*273*/:
1275 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1276 // case NS_dff::LN_shpfNoHitTestPicture /*316*/:
1277 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1278 // case NS_dff::LN_shppictureGray /*317*/:
1279 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1280 // case NS_dff::LN_shppictureBiLevel /*318*/:
1282 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1283 case NS_dff::LN_shppictureActive
/*319*/: // rtf:shppictureActive
1284 switch( nIntValue
& 0x06 )
1286 case 0 : m_pImpl
->eColorMode
= drawing::ColorMode_STANDARD
; break;
1287 case 4 : m_pImpl
->eColorMode
= drawing::ColorMode_GREYS
; break;
1288 case 6 : m_pImpl
->eColorMode
= drawing::ColorMode_MONO
; break;
1292 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1293 // case NS_dff::LN_shpgeoLeft /*320*/:
1294 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1295 // case NS_dff::LN_shpgeoTop /*321*/:
1296 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1297 // case NS_dff::LN_shpgeoRight /*322*/:
1298 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1299 // case NS_dff::LN_shpgeoBottom /*323*/:
1300 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1301 // case NS_dff::LN_shpshapePath /*324*/:
1302 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1303 // case NS_dff::LN_shppVertices /*325*/:
1304 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1305 // case NS_dff::LN_shppSegmentInfo /*326*/:
1306 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1307 // case NS_dff::LN_shpadjustValue /*327*/:
1308 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1309 // case NS_dff::LN_shpadjust2Value /*328*/:
1310 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1311 // case NS_dff::LN_shpadjust3Value /*329*/:
1312 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1313 // case NS_dff::LN_shpadjust4Value /*330*/:
1314 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1315 // case NS_dff::LN_shpadjust5Value /*331*/:
1316 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1317 // case NS_dff::LN_shpadjust6Value /*332*/:
1318 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1319 // case NS_dff::LN_shpadjust7Value /*333*/:
1320 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1321 // case NS_dff::LN_shpadjust8Value /*334*/:
1322 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1323 // case NS_dff::LN_shpadjust9Value /*335*/:
1324 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1325 // case NS_dff::LN_shpadjust10Value /*336*/:
1326 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1327 // case NS_dff::LN_shpfShadowOK /*378*/:
1328 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1329 // case NS_dff::LN_shpf3DOK /*379*/:
1330 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1331 // case NS_dff::LN_shpfLineOK /*380*/:
1332 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1333 // case NS_dff::LN_shpfGtextOK /*381*/:
1334 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1335 // case NS_dff::LN_shpfFillShadeShapeOK /*382*/:
1336 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1337 // case NS_dff::LN_shpfFillOK /*383*/:
1338 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1339 // case NS_dff::LN_shpfillType /*384*/:
1340 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1341 case NS_dff::LN_shpfillColor
/*385*/:
1342 m_pImpl
->nFillColor
= (m_pImpl
->nFillColor
& 0xff000000) + ConversionHelper::ConvertColor( nIntValue
);
1344 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1345 case NS_dff::LN_shpfillOpacity
/*386*/:
1347 sal_Int32 nTrans
= 0xff - ( nIntValue
* 0xff ) / 0xffff;
1348 m_pImpl
->nFillColor
= (nTrans
<< 0x18 ) + (m_pImpl
->nFillColor
& 0xffffff);
1351 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1352 // case NS_dff::LN_shpfillBackColor /*387*/:
1353 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1354 // case NS_dff::LN_shpfillBackOpacity /*388*/:
1355 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1356 // case NS_dff::LN_shpfillCrMod /*389*/:
1357 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1358 // case NS_dff::LN_shpfillBlip /*390*/:
1359 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1360 // case NS_dff::LN_shpfillBlipName /*391*/:
1361 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1362 // case NS_dff::LN_shpfillBlipFlags /*392*/:
1363 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1364 // case NS_dff::LN_shpfillWidth /*393*/:
1365 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1366 // case NS_dff::LN_shpfillHeight /*394*/:
1367 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1368 // case NS_dff::LN_shpfillAngle /*395*/:
1369 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1370 // case NS_dff::LN_shpfillFocus /*396*/:
1371 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1372 // case NS_dff::LN_shpfillToLeft /*397*/:
1373 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1374 // case NS_dff::LN_shpfillToTop /*398*/:
1375 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1376 // case NS_dff::LN_shpfillToRight /*399*/:
1377 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1378 // case NS_dff::LN_shpfillToBottom /*400*/:
1379 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1380 // case NS_dff::LN_shpfillRectLeft /*401*/:
1381 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1382 // case NS_dff::LN_shpfillRectTop /*402*/:
1383 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1384 // case NS_dff::LN_shpfillRectRight /*403*/:
1385 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1386 // case NS_dff::LN_shpfillRectBottom /*404*/:
1387 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1388 // case NS_dff::LN_shpfillDztype /*405*/:
1389 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1390 // case NS_dff::LN_shpfillShadePreset /*406*/:
1391 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1392 // case NS_dff::LN_shpfillShadeColors /*407*/:
1393 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1394 // case NS_dff::LN_shpfillOriginX /*408*/:
1395 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1396 // case NS_dff::LN_shpfillOriginY /*409*/:
1397 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1398 // case NS_dff::LN_shpfillShapeOriginX /*410*/:
1399 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1400 // case NS_dff::LN_shpfillShapeOriginY /*411*/:
1401 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1402 // case NS_dff::LN_shpfillShadeType /*412*/:
1403 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1404 // case NS_dff::LN_shpfFilled /*443*/:
1405 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1406 // case NS_dff::LN_shpfHitTestFill /*444*/:
1407 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1408 // case NS_dff::LN_shpfillShape /*445*/:
1409 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1410 // case NS_dff::LN_shpfillUseRect /*446*/:
1411 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1412 case NS_dff::LN_shpfNoFillHitTest
/*447*/: break; // rtf:shpfNoFillHitTest
1413 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1414 case NS_dff::LN_shplineColor
/*448*/:
1415 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].nLineColor
= ConversionHelper::ConvertColor( nIntValue
);
1417 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1418 // case NS_dff::LN_shplineOpacity /*449*/:
1419 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1420 // case NS_dff::LN_shplineBackColor /*450*/:
1421 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1422 // case NS_dff::LN_shplineCrMod /*451*/:
1423 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1424 // case NS_dff::LN_shplineType /*452*/:
1425 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1426 // case NS_dff::LN_shplineFillBlip /*453*/:
1427 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1428 // case NS_dff::LN_shplineFillBlipName /*454*/:
1429 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1430 // case NS_dff::LN_shplineFillBlipFlags /*455*/:
1431 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1432 // case NS_dff::LN_shplineFillWidth /*456*/:
1433 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1434 // case NS_dff::LN_shplineFillHeight /*457*/:
1435 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1436 // case NS_dff::LN_shplineFillDztype /*458*/:
1437 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
1438 case NS_dff::LN_shplineWidth
/*459*/:
1439 //1pt == 12700 units
1440 m_pImpl
->aBorders
[m_pImpl
->nCurrentBorderLine
].nLineWidth
= ConversionHelper::convertTwipToMM100(nIntValue
/ 635);
1442 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1443 // case NS_dff::LN_shplineMiterLimit /*460*/:
1444 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1445 // case NS_dff::LN_shplineStyle /*461*/:
1446 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1447 case NS_dff::LN_shplineDashing
/*462*/:
1448 //graphic borders don't support different dashing
1450 msolineSolid, // Solid (continuous) pen
1451 msolineDashSys, // PS_DASH system dash style
1452 msolineDotSys, // PS_DOT system dash style
1453 msolineDashDotSys, // PS_DASHDOT system dash style
1454 msolineDashDotDotSys, // PS_DASHDOTDOT system dash style
1455 msolineDotGEL, // square dot style
1456 msolineDashGEL, // dash style
1457 msolineLongDashGEL, // long dash style
1458 msolineDashDotGEL, // dash short dash
1459 msolineLongDashDotGEL, // long dash short dash
1460 msolineLongDashDotDotGEL // long dash short dash short dash*/
1461 //m_pImpl->aBorders[nCurrentBorderLine].nLineType = nIntValue;
1463 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1464 // case NS_dff::LN_shplineDashStyle /*463*/:
1465 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1466 // case NS_dff::LN_shplineStartArrowhead /*464*/:
1467 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1468 // case NS_dff::LN_shplineEndArrowhead /*465*/:
1469 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1470 // case NS_dff::LN_shplineStartArrowWidth /*466*/:
1471 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1472 // case NS_dff::LN_shplineStartArrowLength /*467*/:
1473 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1474 // case NS_dff::LN_shplineEndArrowWidth /*468*/:
1475 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1476 // case NS_dff::LN_shplineEndArrowLength /*469*/:
1477 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1478 // case NS_dff::LN_shplineJoinStyle /*470*/:
1479 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1480 // case NS_dff::LN_shplineEndCapStyle /*471*/:
1481 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1482 // case NS_dff::LN_shpfArrowheadsOK /*507*/:
1483 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1484 // case NS_dff::LN_shpfLine /*508*/:
1485 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1486 // case NS_dff::LN_shpfHitTestLine /*509*/:
1487 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1488 // case NS_dff::LN_shplineFillShape /*510*/:
1489 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1490 case NS_dff::LN_shpfNoLineDrawDash
/*511*/: break; // rtf:shpfNoLineDrawDash
1491 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1492 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1493 // case NS_dff::LN_shpshadowType /*512*/:
1494 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1495 // case NS_dff::LN_shpshadowColor /*513*/:
1496 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1497 // case NS_dff::LN_shpshadowHighlight /*514*/:
1498 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1499 // case NS_dff::LN_shpshadowCrMod /*515*/:
1500 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1501 // case NS_dff::LN_shpshadowOpacity /*516*/:
1502 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1503 // case NS_dff::LN_shpshadowOffsetX /*517*/:
1504 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1505 // case NS_dff::LN_shpshadowOffsetY /*518*/:
1506 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1507 // case NS_dff::LN_shpshadowSecondOffsetX /*519*/:
1508 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1509 // case NS_dff::LN_shpshadowSecondOffsetY /*520*/:
1510 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1511 // case NS_dff::LN_shpshadowScaleXToX /*521*/:
1512 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1513 // case NS_dff::LN_shpshadowScaleYToX /*522*/:
1514 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1515 // case NS_dff::LN_shpshadowScaleXToY /*523*/:
1516 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1517 // case NS_dff::LN_shpshadowScaleYToY /*524*/:
1518 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1519 // case NS_dff::LN_shpshadowPerspectiveX /*525*/:
1520 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1521 // case NS_dff::LN_shpshadowPerspectiveY /*526*/:
1522 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1523 // case NS_dff::LN_shpshadowWeight /*527*/:
1524 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1525 // case NS_dff::LN_shpshadowOriginX /*528*/:
1526 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1527 // case NS_dff::LN_shpshadowOriginY /*529*/:
1528 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1529 // case NS_dff::LN_shpfShadow /*574*/:
1530 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1531 // case NS_dff::LN_shpfshadowObscured /*575*/:
1532 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1533 // case NS_dff::LN_shpperspectiveType /*576*/:
1534 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1535 // case NS_dff::LN_shpperspectiveOffsetX /*577*/:
1536 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1537 // case NS_dff::LN_shpperspectiveOffsetY /*578*/:
1538 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1539 // case NS_dff::LN_shpperspectiveScaleXToX /*579*/:
1540 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1541 // case NS_dff::LN_shpperspectiveScaleYToX /*580*/:
1542 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1543 // case NS_dff::LN_shpperspectiveScaleXToY /*581*/:
1544 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1545 // case NS_dff::LN_shpperspectiveScaleYToY /*582*/:
1546 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1547 // case NS_dff::LN_shpperspectivePerspectiveX /*583*/:
1548 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1549 // case NS_dff::LN_shpperspectivePerspectiveY /*584*/:
1550 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1551 // case NS_dff::LN_shpperspectiveWeight /*585*/:
1552 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1553 // case NS_dff::LN_shpperspectiveOriginX /*586*/:
1554 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1555 // case NS_dff::LN_shpperspectiveOriginY /*587*/:
1556 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1557 // case NS_dff::LN_shpfPerspective /*639*/:
1558 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1559 // case NS_dff::LN_shpc3DSpecularAmt /*640*/:
1560 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1561 // case NS_dff::LN_shpc3DDiffuseAmt /*641*/:
1562 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1563 // case NS_dff::LN_shpc3DShininess /*642*/:
1564 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1565 // case NS_dff::LN_shpc3DEdgeThickness /*643*/:
1566 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1567 // case NS_dff::LN_shpc3DExtrudeForward /*644*/:
1568 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1569 // case NS_dff::LN_shpc3DExtrudeBackward /*645*/:
1570 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1571 // case NS_dff::LN_shpc3DExtrudePlane /*646*/:
1572 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1573 // case NS_dff::LN_shpc3DExtrusionColor /*647*/:
1574 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1575 // case NS_dff::LN_shpc3DCrMod /*648*/:
1576 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1577 // case NS_dff::LN_shpf3D /*700*/:
1578 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1579 // case NS_dff::LN_shpfc3DMetallic /*701*/:
1580 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1581 // case NS_dff::LN_shpfc3DUseExtrusionColor /*702*/:
1582 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1583 // case NS_dff::LN_shpfc3DLightFace /*703*/:
1584 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1585 // case NS_dff::LN_shpc3DYRotationAngle /*704*/:
1586 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1587 // case NS_dff::LN_shpc3DXRotationAngle /*705*/:
1588 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1589 // case NS_dff::LN_shpc3DRotationAxisX /*706*/:
1590 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1591 // case NS_dff::LN_shpc3DRotationAxisY /*707*/:
1592 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1593 // case NS_dff::LN_shpc3DRotationAxisZ /*708*/:
1594 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1595 // case NS_dff::LN_shpc3DRotationAngle /*709*/:
1596 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1597 // case NS_dff::LN_shpc3DRotationCenterX /*710*/:
1598 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1599 // case NS_dff::LN_shpc3DRotationCenterY /*711*/:
1600 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1601 // case NS_dff::LN_shpc3DRotationCenterZ /*712*/:
1602 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1603 // case NS_dff::LN_shpc3DRenderMode /*713*/:
1604 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1605 // case NS_dff::LN_shpc3DTolerance /*714*/:
1606 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1607 // case NS_dff::LN_shpc3DXViewpoint /*715*/:
1608 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1609 // case NS_dff::LN_shpc3DYViewpoint /*716*/:
1610 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1611 // case NS_dff::LN_shpc3DZViewpoint /*717*/:
1612 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1613 // case NS_dff::LN_shpc3DOriginX /*718*/:
1614 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1615 // case NS_dff::LN_shpc3DOriginY /*719*/:
1616 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1617 // case NS_dff::LN_shpc3DSkewAngle /*720*/:
1618 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1619 // case NS_dff::LN_shpc3DSkewAmount /*721*/:
1620 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1621 // case NS_dff::LN_shpc3DAmbientIntensity /*722*/:
1622 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1623 // case NS_dff::LN_shpc3DKeyX /*723*/:
1624 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1625 // case NS_dff::LN_shpc3DKeyY /*724*/:
1626 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1627 // case NS_dff::LN_shpc3DKeyZ /*725*/:
1628 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1629 // case NS_dff::LN_shpc3DKeyIntensity /*726*/:
1630 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1631 // case NS_dff::LN_shpc3DFillX /*727*/:
1632 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1633 // case NS_dff::LN_shpc3DFillY /*728*/:
1634 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1635 // case NS_dff::LN_shpc3DFillZ /*729*/:
1636 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1637 // case NS_dff::LN_shpc3DFillIntensity /*730*/:
1638 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1639 // case NS_dff::LN_shpfc3DConstrainRotation /*763*/:
1640 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1641 // case NS_dff::LN_shpfc3DRotationCenterAuto /*764*/:
1642 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1643 // case NS_dff::LN_shpfc3DParallel /*765*/:
1644 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1645 // case NS_dff::LN_shpfc3DKeyHarsh /*766*/:
1646 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1647 // case NS_dff::LN_shpfc3DFillHarsh /*767*/:
1648 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1649 // case NS_dff::LN_shphspMaster /*769*/:
1650 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1651 // case NS_dff::LN_shpcxstyle /*771*/:
1652 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1653 // case NS_dff::LN_shpbWMode /*772*/:
1654 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1655 // case NS_dff::LN_shpbWModePureBW /*773*/:
1656 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1657 // case NS_dff::LN_shpbWModeBW /*774*/:
1658 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1659 // case NS_dff::LN_shpfOleIcon /*826*/:
1660 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1661 // case NS_dff::LN_shpfPreferRelativeResize /*827*/:
1662 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1663 // case NS_dff::LN_shpfLockShapeType /*828*/:
1664 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1665 // case NS_dff::LN_shpfDeleteAttachedObject /*830*/:
1666 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1667 // case NS_dff::LN_shpfBackground /*831*/:
1668 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1669 // case NS_dff::LN_shpspcot /*832*/:
1670 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1671 // case NS_dff::LN_shpdxyCalloutGap /*833*/:
1672 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1673 // case NS_dff::LN_shpspcoa /*834*/:
1674 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1675 // case NS_dff::LN_shpspcod /*835*/:
1676 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1677 // case NS_dff::LN_shpdxyCalloutDropSpecified /*836*/:
1678 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1679 // case NS_dff::LN_shpdxyCalloutLengthSpecified /*837*/:
1680 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1681 // case NS_dff::LN_shpfCallout /*889*/:
1682 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1683 // case NS_dff::LN_shpfCalloutAccentBar /*890*/:
1684 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1685 // case NS_dff::LN_shpfCalloutTextBorder /*891*/:
1686 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1687 // case NS_dff::LN_shpfCalloutMinusX /*892*/:
1688 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1689 // case NS_dff::LN_shpfCalloutMinusY /*893*/:
1690 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1691 // case NS_dff::LN_shpfCalloutDropAuto /*894*/:
1692 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1693 // case NS_dff::LN_shpfCalloutLengthSpecified /*895*/:
1694 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1695 // case NS_dff::LN_shpwzName /*896*/:
1696 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1697 case NS_dff::LN_shpwzDescription
/*897*/: //alternative text
1698 m_pImpl
->sAlternativeText
= val
.getString();
1700 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1701 // case NS_dff::LN_shppihlShape /*898*/:
1702 case NS_dff::LN_shppWrapPolygonVertices
/*899*/: break; // rtf:shppWrapPolygonVertices
1703 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1704 case NS_dff::LN_shpdxWrapDistLeft
/*900*/: // contains a twip/635 value
1705 //todo: changes have to be applied depending on the orientation, see SwWW8ImplReader::AdjustLRWrapForWordMargins()
1706 m_pImpl
->nLeftMargin
= nIntValue
/ 360;
1708 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1709 case NS_dff::LN_shpdyWrapDistTop
/*901*/: // contains a twip/635 value
1710 //todo: changes have to be applied depending on the orientation, see SwWW8ImplReader::AdjustULWrapForWordMargins()
1711 m_pImpl
->nTopMargin
= nIntValue
/ 360;
1713 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1714 case NS_dff::LN_shpdxWrapDistRight
/*902*/:// contains a twip/635 value
1715 //todo: changes have to be applied depending on the orientation, see SwWW8ImplReader::AdjustLRWrapForWordMargins()
1716 m_pImpl
->nRightMargin
= nIntValue
/ 360;
1718 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1719 case NS_dff::LN_shpdyWrapDistBottom
/*903*/:// contains a twip/635 value
1720 //todo: changes have to be applied depending on the orientation, see SwWW8ImplReader::AdjustULWrapForWordMargins()
1721 m_pImpl
->nBottomMargin
= nIntValue
/ 360;
1723 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1724 // case NS_dff::LN_shplidRegroup /*904*/:
1725 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1726 // case NS_dff::LN_shpfEditedWrap /*953*/:
1727 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1728 // case NS_dff::LN_shpfBehindDocument /*954*/:
1729 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1730 // case NS_dff::LN_shpfOnDblClickNotify /*955*/:
1731 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1732 // case NS_dff::LN_shpfIsButton /*956*/:
1733 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1734 // case NS_dff::LN_shpfOneD /*957*/:
1735 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1736 // case NS_dff::LN_shpfHidden /*958*/:
1737 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1738 case NS_dff::LN_shpfPrint
/*959*/: break; // rtf:shpfPrint
1741 OSL_ENSURE( false, "shape option unsupported?");
1744 /*-- 01.11.2006 09:45:02---------------------------------------------------
1746 -----------------------------------------------------------------------*/
1747 void GraphicImport::sprm(Sprm
& rSprm
)
1749 #ifdef DEBUG_DOMAINMAPPER
1750 dmapper_logger
->startElement("sprm");
1751 dmapper_logger
->chars(rSprm
.toString());
1754 sal_uInt32 nSprmId
= rSprm
.getId();
1755 Value::Pointer_t pValue
= rSprm
.getValue();
1757 /* WRITERFILTERSTATUS: table: PICFsprmdata */
1760 case 0xf004: //dff record
1761 case 0xf00a: //part of 0xf004 - shape properties
1762 case 0xf00b: //part of 0xf004
1764 case 0xf122: //udefprop
1765 case NS_ooxml::LN_CT_Inline_extent
: // 90911;
1766 case NS_ooxml::LN_CT_Inline_effectExtent
: // 90912;
1767 case NS_ooxml::LN_CT_Inline_docPr
: // 90913;
1768 case NS_ooxml::LN_CT_Inline_cNvGraphicFramePr
: // 90914;
1769 case NS_ooxml::LN_CT_NonVisualGraphicFrameProperties_graphicFrameLocks
:// 90657
1770 case NS_ooxml::LN_CT_Inline_a_graphic
:// 90915
1771 case NS_ooxml::LN_CT_Anchor_simplePos_elem
: // 90975;
1772 case NS_ooxml::LN_CT_Anchor_positionH
: // 90976;
1773 case NS_ooxml::LN_CT_Anchor_positionV
: // 90977;
1774 case NS_ooxml::LN_CT_Anchor_extent
: // 90978;
1775 case NS_ooxml::LN_CT_Anchor_effectExtent
: // 90979;
1776 case NS_ooxml::LN_EG_WrapType_wrapSquare
: // 90945;
1777 case NS_ooxml::LN_EG_WrapType_wrapTight
: // 90946;
1778 case NS_ooxml::LN_CT_Anchor_docPr
: // 90980;
1779 case NS_ooxml::LN_CT_Anchor_cNvGraphicFramePr
: // 90981;
1780 case NS_ooxml::LN_CT_Anchor_a_graphic
: // 90982;
1781 case NS_ooxml::LN_CT_WrapPath_start
: // 90924;
1782 case NS_ooxml::LN_CT_WrapPath_lineTo
: // 90925;
1783 case NS_ooxml::LN_CT_WrapTight_wrapPolygon
: // 90933;
1784 case NS_ooxml::LN_graphic_graphic
:
1785 case NS_ooxml::LN_pic_pic
:
1787 writerfilter::Reference
<Properties
>::Pointer_t pProperties
= rSprm
.getProps();
1788 if( pProperties
.get())
1790 pProperties
->resolve(*this);
1797 if( nSprmId
!= 0x271c || m_pImpl
->nDffType
== 0xf01f || m_pImpl
->nDffType
== 0xf01e )
1799 writerfilter::Reference
<BinaryObj
>::Pointer_t pPictureData
= rSprm
.getBinary();
1800 if( pPictureData
.get())
1801 pPictureData
->resolve(*this);
1805 case NS_ooxml::LN_EG_WrapType_wrapNone
: // 90944; - doesn't contain attributes
1806 //depending on the behindDoc attribute text wraps through behind or in fron of the object
1807 m_pImpl
->nWrap
= text::WrapTextMode_THROUGHT
;
1809 case NS_ooxml::LN_EG_WrapType_wrapTopAndBottom
: // 90948;
1810 m_pImpl
->nWrap
= text::WrapTextMode_NONE
;
1812 case NS_ooxml::LN_EG_WrapType_wrapThrough
: // 90947;
1813 m_pImpl
->nWrap
= text::WrapTextMode_THROUGHT
;
1817 //ignore - doesn't contain useful members
1819 case NS_ooxml::LN_CT_GraphicalObject_graphicData
:// 90660;
1821 m_pImpl
->bIsGraphic
= true;
1823 writerfilter::Reference
<Properties
>::Pointer_t pProperties
= rSprm
.getProps();
1824 if( pProperties
.get())
1825 pProperties
->resolve(*this);
1829 #if OSL_DEBUG_LEVEL > 0
1830 ::rtl::OString
sMessage( "GraphicImport::sprm() - Id: ");
1831 sMessage
+= ::rtl::OString::valueOf( sal_Int32( nSprmId
), 10 );
1832 sMessage
+= ::rtl::OString(" / 0x");
1833 sMessage
+= ::rtl::OString::valueOf( sal_Int32( nSprmId
), 16 );
1834 OSL_ENSURE( false, sMessage
.getStr())
1841 #ifdef DEBUG_DOMAINMAPPER
1842 dmapper_logger
->endElement("sprm");
1845 /*-- 01.11.2006 09:45:02---------------------------------------------------
1847 -----------------------------------------------------------------------*/
1848 void GraphicImport::entry(int /*pos*/, writerfilter::Reference
<Properties
>::Pointer_t
/*ref*/)
1851 /*-- 16.11.2006 16:14:32---------------------------------------------------
1852 crop is stored as "fixed float" as 16.16 fraction value
1853 related to width/or height
1854 -----------------------------------------------------------------------*/
1855 void lcl_CalcCrop( sal_Int32
& nCrop
, sal_Int32 nRef
)
1857 nCrop
= ((nCrop
>> 16 ) * nRef
)
1858 + (((nCrop
& 0xffff) * nRef
) >> 16);
1861 /*-- 01.11.2006 09:45:02---------------------------------------------------
1863 -----------------------------------------------------------------------*/
1864 void GraphicImport::data(const sal_uInt8
* buf
, size_t len
, writerfilter::Reference
<Properties
>::Pointer_t
/*ref*/)
1868 uno::Reference
< graphic::XGraphicProvider
> xGraphicProvider(
1869 m_xComponentContext
->getServiceManager()->createInstanceWithContext(
1870 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.graphic.GraphicProvider")),
1871 m_xComponentContext
),
1872 uno::UNO_QUERY_THROW
);
1873 uno::Reference
< io::XInputStream
> xIStream
= new XInputStreamHelper( buf
, len
, m_pImpl
->bIsBitmap
);
1875 PropertyNameSupplier
& rPropNameSupplier
= PropertyNameSupplier::GetPropertyNameSupplier();
1877 ::com::sun::star::beans::PropertyValues
aMediaProperties( 1 );
1878 aMediaProperties
[0].Name
= rPropNameSupplier
.GetName(PROP_INPUT_STREAM
);
1879 aMediaProperties
[0].Value
<<= xIStream
;
1880 uno::Reference
< graphic::XGraphic
> xGraphic
= xGraphicProvider
->queryGraphic( aMediaProperties
);
1884 clog
<< "Graphic loaded" << endl
;
1886 uno::Reference
< beans::XPropertySet
> xGraphicObjectProperties(
1887 m_xTextFactory
->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextGraphicObject"))),
1888 uno::UNO_QUERY_THROW
);
1889 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName(PROP_GRAPHIC
), uno::makeAny( xGraphic
));
1890 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName(PROP_ANCHOR_TYPE
),
1891 uno::makeAny( m_pImpl
->eGraphicImportType
== IMPORT_AS_SHAPE
|| m_pImpl
->eGraphicImportType
== IMPORT_AS_DETECTED_ANCHOR
?
1892 text::TextContentAnchorType_AT_CHARACTER
:
1893 text::TextContentAnchorType_AS_CHARACTER
));
1894 m_xGraphicObject
= uno::Reference
< text::XTextContent
>( xGraphicObjectProperties
, uno::UNO_QUERY_THROW
);
1896 //shapes have only one border, PICF might have four
1897 table::BorderLine aBorderLine
;
1898 for( sal_Int32 nBorder
= 0; nBorder
< 4; ++nBorder
)
1900 if( m_pImpl
->eGraphicImportType
== IMPORT_AS_GRAPHIC
|| !nBorder
)
1902 aBorderLine
.Color
= m_pImpl
->aBorders
[m_pImpl
->eGraphicImportType
== IMPORT_AS_SHAPE
? BORDER_TOP
: static_cast<BorderPosition
>(nBorder
) ].nLineColor
;
1903 aBorderLine
.InnerLineWidth
= 0;
1904 aBorderLine
.OuterLineWidth
= (sal_Int16
)m_pImpl
->aBorders
[m_pImpl
->eGraphicImportType
== IMPORT_AS_SHAPE
? BORDER_TOP
: static_cast<BorderPosition
>(nBorder
) ].nLineWidth
;
1905 aBorderLine
.LineDistance
= 0;
1907 PropertyIds aBorderProps
[4] =
1914 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( aBorderProps
[nBorder
]), uno::makeAny(aBorderLine
));
1917 // setting properties for all types
1918 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_ALTERNATIVE_TEXT
),
1919 uno::makeAny( m_pImpl
->sAlternativeText
));
1920 if( m_pImpl
->bPositionProtected
)
1921 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_POSITION_PROTECTED
),
1922 uno::makeAny(true));
1923 if( m_pImpl
->bSizeProtected
)
1924 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_SIZE_PROTECTED
),
1925 uno::makeAny(true));
1927 if( m_pImpl
->eGraphicImportType
== IMPORT_AS_SHAPE
|| m_pImpl
->eGraphicImportType
== IMPORT_AS_DETECTED_ANCHOR
)
1929 sal_Int32 nWidth
= m_pImpl
->nRightPosition
- m_pImpl
->nLeftPosition
;
1930 if( m_pImpl
->eGraphicImportType
== IMPORT_AS_SHAPE
)
1932 sal_Int32 nHeight
= m_pImpl
->nBottomPosition
- m_pImpl
->nTopPosition
;
1933 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName(PROP_SIZE
),
1934 uno::makeAny( awt::Size( nWidth
, nHeight
)));
1937 if( (m_pImpl
->nHoriOrient
== text::HoriOrientation::LEFT
&&
1938 (m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_PRINT_AREA
||
1939 m_pImpl
->nHoriRelation
== text::RelOrientation::FRAME
) ) ||
1940 (m_pImpl
->nHoriOrient
== text::HoriOrientation::INSIDE
&&
1941 m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_PRINT_AREA
))
1942 m_pImpl
->nLeftMargin
= 0;
1943 if((m_pImpl
->nHoriOrient
== text::HoriOrientation::RIGHT
&&
1944 (m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_PRINT_AREA
||
1945 m_pImpl
->nHoriRelation
== text::RelOrientation::FRAME
) ) ||
1946 (m_pImpl
->nHoriOrient
== text::HoriOrientation::INSIDE
&&
1947 m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_PRINT_AREA
))
1948 m_pImpl
->nRightMargin
= 0;
1949 // adjust top/bottom margins
1950 if( m_pImpl
->nVertOrient
== text::VertOrientation::TOP
&&
1951 ( m_pImpl
->nVertRelation
== text::RelOrientation::PAGE_PRINT_AREA
||
1952 m_pImpl
->nVertRelation
== text::RelOrientation::PAGE_FRAME
))
1953 m_pImpl
->nTopMargin
= 0;
1954 if( m_pImpl
->nVertOrient
== text::VertOrientation::BOTTOM
&&
1955 ( m_pImpl
->nVertRelation
== text::RelOrientation::PAGE_PRINT_AREA
||
1956 m_pImpl
->nVertRelation
== text::RelOrientation::PAGE_FRAME
))
1957 m_pImpl
->nBottomMargin
= 0;
1958 if( m_pImpl
->nVertOrient
== text::VertOrientation::BOTTOM
&&
1959 m_pImpl
->nVertRelation
== text::RelOrientation::PAGE_PRINT_AREA
)
1960 m_pImpl
->nBottomMargin
= 0;
1963 if( m_pImpl
->nHoriOrient
== text::HoriOrientation::INSIDE
&&
1964 m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_FRAME
)
1966 // convert 'left to page' to 'from left -<width> to page text area'
1967 m_pImpl
->nHoriOrient
= text::HoriOrientation::NONE
;
1968 m_pImpl
->nHoriRelation
= text::RelOrientation::PAGE_PRINT_AREA
;
1969 m_pImpl
->nLeftPosition
= - nWidth
;
1971 else if( m_pImpl
->nHoriOrient
== text::HoriOrientation::OUTSIDE
&&
1972 m_pImpl
->nHoriRelation
== text::RelOrientation::PAGE_FRAME
)
1974 // convert 'right to page' to 'from left 0 to right page border'
1975 m_pImpl
->nHoriOrient
= text::HoriOrientation::NONE
;
1976 m_pImpl
->nHoriRelation
= text::RelOrientation::PAGE_RIGHT
;
1977 m_pImpl
->nLeftPosition
= 0;
1980 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_HORI_ORIENT
),
1981 uno::makeAny(m_pImpl
->nHoriOrient
));
1982 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_HORI_ORIENT_POSITION
),
1983 uno::makeAny(m_pImpl
->nLeftPosition
));
1984 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_HORI_ORIENT_RELATION
),
1985 uno::makeAny(m_pImpl
->nHoriRelation
));
1986 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_PAGE_TOGGLE
),
1987 uno::makeAny(m_pImpl
->bPageToggle
));
1988 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_VERT_ORIENT
),
1989 uno::makeAny(m_pImpl
->nVertOrient
));
1990 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_VERT_ORIENT_POSITION
),
1991 uno::makeAny(m_pImpl
->nTopPosition
));
1992 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_VERT_ORIENT_RELATION
),
1993 uno::makeAny(m_pImpl
->nVertRelation
));
1994 if( !m_pImpl
->bOpaque
)
1996 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_OPAQUE
),
1997 uno::makeAny(m_pImpl
->bOpaque
));
1999 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_SURROUND
),
2000 uno::makeAny(m_pImpl
->nWrap
));
2002 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_SURROUND_CONTOUR
),
2003 uno::makeAny(m_pImpl
->bContour
));
2004 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_CONTOUR_OUTSIDE
),
2005 uno::makeAny(true));
2006 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_LEFT_MARGIN
),
2007 uno::makeAny(m_pImpl
->nLeftMargin
));
2008 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_RIGHT_MARGIN
),
2009 uno::makeAny(m_pImpl
->nRightMargin
));
2010 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_TOP_MARGIN
),
2011 uno::makeAny(m_pImpl
->nTopMargin
));
2012 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_BOTTOM_MARGIN
),
2013 uno::makeAny(m_pImpl
->nBottomMargin
));
2015 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_CONTOUR_POLY_POLYGON
),
2017 if( m_pImpl
->eColorMode
== drawing::ColorMode_STANDARD
&&
2018 m_pImpl
->nContrast
== -70 &&
2019 m_pImpl
->nBrightness
== 70 )
2021 // strange definition of WATERMARK!
2022 m_pImpl
->nContrast
= 0;
2023 m_pImpl
->nBrightness
= 0;
2024 m_pImpl
->eColorMode
= drawing::ColorMode_WATERMARK
;
2027 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_ADJUST_CONTRAST
),
2028 uno::makeAny((sal_Int16
)m_pImpl
->nContrast
));
2029 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_ADJUST_LUMINANCE
),
2030 uno::makeAny((sal_Int16
)m_pImpl
->nBrightness
));
2031 if(m_pImpl
->eColorMode
!= drawing::ColorMode_STANDARD
)
2032 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_GRAPHIC_COLOR_MODE
),
2033 uno::makeAny(m_pImpl
->eColorMode
));
2034 if(m_pImpl
->fGamma
> 0. )
2035 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_GAMMA
),
2036 uno::makeAny(m_pImpl
->fGamma
));
2037 if(m_pImpl
->bHoriFlip
)
2039 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_HORI_MIRRORED_ON_EVEN_PAGES
),
2040 uno::makeAny( m_pImpl
->bHoriFlip
));
2041 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_HORI_MIRRORED_ON_ODD_PAGES
),
2042 uno::makeAny( m_pImpl
->bHoriFlip
));
2044 if( m_pImpl
->bVertFlip
)
2045 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_VERT_MIRRORED
),
2046 uno::makeAny( m_pImpl
->bVertFlip
));
2047 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_BACK_COLOR
),
2048 uno::makeAny( m_pImpl
->nFillColor
));
2049 //there seems to be no way to detect the original size via _real_ API
2050 uno::Reference
< beans::XPropertySet
> xGraphicProperties( xGraphic
, uno::UNO_QUERY_THROW
);
2051 awt::Size aGraphicSize
, aGraphicSizePixel
;
2052 xGraphicProperties
->getPropertyValue(rPropNameSupplier
.GetName( PROP_SIZE100th_M_M
)) >>= aGraphicSize
;
2053 xGraphicProperties
->getPropertyValue(rPropNameSupplier
.GetName( PROP_SIZE_PIXEL
)) >>= aGraphicSizePixel
;
2054 if( aGraphicSize
.Width
&& aGraphicSize
.Height
)
2056 //todo: i71651 graphic size is not provided by the GraphicDescriptor
2057 lcl_CalcCrop( m_pImpl
->nTopCrop
, aGraphicSize
.Height
);
2058 lcl_CalcCrop( m_pImpl
->nBottomCrop
, aGraphicSize
.Height
);
2059 lcl_CalcCrop( m_pImpl
->nLeftCrop
, aGraphicSize
.Width
);
2060 lcl_CalcCrop( m_pImpl
->nRightCrop
, aGraphicSize
.Width
);
2062 xGraphicProperties
->setPropertyValue(rPropNameSupplier
.GetName( PROP_GRAPHIC_CROP
),
2063 uno::makeAny(text::GraphicCrop(m_pImpl
->nTopCrop
, m_pImpl
->nBottomCrop
, m_pImpl
->nLeftCrop
, m_pImpl
->nRightCrop
)));
2067 if(m_pImpl
->eGraphicImportType
== IMPORT_AS_DETECTED_INLINE
|| m_pImpl
->eGraphicImportType
== IMPORT_AS_DETECTED_ANCHOR
)
2069 if( m_pImpl
->getXSize() && m_pImpl
->getYSize() )
2070 xGraphicObjectProperties
->setPropertyValue(rPropNameSupplier
.GetName(PROP_SIZE
),
2071 uno::makeAny( awt::Size( m_pImpl
->getXSize(), m_pImpl
->getYSize() )));
2074 if( m_pImpl
->sName
.getLength() )
2076 uno::Reference
< container::XNamed
> xNamed( xGraphicObjectProperties
, uno::UNO_QUERY_THROW
);
2077 xNamed
->setName( m_pImpl
->sName
);
2080 catch( const uno::Exception
& )
2086 catch( const uno::Exception
& )
2088 clog
<< __FILE__
<< __LINE__
<< " failed!" << endl
;
2092 /*-- 01.11.2006 09:45:03---------------------------------------------------
2094 -----------------------------------------------------------------------*/
2095 void GraphicImport::startSectionGroup()
2098 /*-- 01.11.2006 09:45:03---------------------------------------------------
2100 -----------------------------------------------------------------------*/
2101 void GraphicImport::endSectionGroup()
2104 /*-- 01.11.2006 09:45:03---------------------------------------------------
2106 -----------------------------------------------------------------------*/
2107 void GraphicImport::startParagraphGroup()
2110 /*-- 01.11.2006 09:45:03---------------------------------------------------
2112 -----------------------------------------------------------------------*/
2113 void GraphicImport::endParagraphGroup()
2116 /*-- 01.11.2006 09:45:03---------------------------------------------------
2118 -----------------------------------------------------------------------*/
2119 void GraphicImport::startCharacterGroup()
2122 /*-- 01.11.2006 09:45:04---------------------------------------------------
2124 -----------------------------------------------------------------------*/
2125 void GraphicImport::endCharacterGroup()
2128 /*-- 01.11.2006 09:45:04---------------------------------------------------
2130 -----------------------------------------------------------------------*/
2131 void GraphicImport::text(const sal_uInt8
* /*_data*/, size_t /*len*/)
2134 /*-- 01.11.2006 09:45:05---------------------------------------------------
2136 -----------------------------------------------------------------------*/
2137 void GraphicImport::utext(const sal_uInt8
* /*_data*/, size_t /*len*/)
2140 /*-- 01.11.2006 09:45:05---------------------------------------------------
2142 -----------------------------------------------------------------------*/
2143 void GraphicImport::props(writerfilter::Reference
<Properties
>::Pointer_t
/*ref*/)
2146 /*-- 01.11.2006 09:45:06---------------------------------------------------
2148 -----------------------------------------------------------------------*/
2149 void GraphicImport::table(Id
/*name*/, writerfilter::Reference
<Table
>::Pointer_t
/*ref*/)
2152 /*-- 01.11.2006 09:45:07---------------------------------------------------
2154 -----------------------------------------------------------------------*/
2155 void GraphicImport::substream(Id
/*name*/, ::writerfilter::Reference
<Stream
>::Pointer_t
/*ref*/)
2158 /*-- 01.11.2006 09:45:07---------------------------------------------------
2160 -----------------------------------------------------------------------*/
2161 void GraphicImport::info(const string
& /*info*/)
2164 /*-- 09.08.2007 10:17:00---------------------------------------------------
2166 -----------------------------------------------------------------------*/
2167 bool GraphicImport::IsGraphic() const
2169 return m_pImpl
->bIsGraphic
;