Kaydet (Commit) 8c23e31a authored tarafından Andre Fischer's avatar Andre Fischer Kaydeden (comit) Caolán McNamara

Resolves: #i119551# Avoid grouping shapes on import from PPT...

under certain conditions.

Reported by: Li Feng Wang
Patch and review by: Ma Bingbing and Armin Le Grand
(cherry picked from commit f425d556)

Conflicts:
	sd/source/filter/eppt/epptso.cxx

Change-Id: I7e610b754ff7215201bc1ac47d618869e4e8fe2b
üst 25f25a2d
......@@ -2242,7 +2242,10 @@ void PPTWriter::ImplCreateTextShape( EscherPropertyContainer& rPropOpt, EscherSo
void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& aSolverContainer, PageType ePageType, sal_Bool bMasterPage, int nPageNumber )
{
sal_uInt32 nInstance, nGroups, nShapes, nShapeCount, nPer, nLastPer, nIndices, nGroupLevel = 0, nOlePictureId;
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// sal_uInt32 nGroupLevel = 0;
sal_uInt32 nInstance, nGroups, nShapes, nShapeCount, nPer, nLastPer, nIndices, nOlePictureId;
sal_uInt16 nEffectCount;
::com::sun::star::awt::Point aTextRefPoint;
......@@ -2497,8 +2500,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
aPolygon.Rotate( aRect.TopLeft(), (sal_uInt16)( mnAngle / 10 ) );
if ( ImplGetText() )
{
mpPptEscherEx->EnterGroup( 0,0 );
nGroupLevel = mpPptEscherEx->GetGroupLevel();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( 0,0 );
// nGroupLevel = mpPptEscherEx->GetGroupLevel();
bNeedText = sal_False;
bAdditionalText = sal_True;
mnTextSize = 0;
......@@ -2693,7 +2697,8 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
aTextRefPoint = ::com::sun::star::awt::Point( maRect.Left(), maRect.Top() );
mnTextSize = 0;
bAdditionalText = sal_True;
mpPptEscherEx->EnterGroup( &maRect,0 );
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( &maRect,0 );
}
mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
sal_uInt32 nFlags = 0xa00; // Flags: Connector | HasSpt
......@@ -2711,8 +2716,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
{
if ( ImplGetText() )
{
mpPptEscherEx->EnterGroup( 0,0 );
nGroupLevel = mpPptEscherEx->GetGroupLevel();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( 0,0 );
// nGroupLevel = mpPptEscherEx->GetGroupLevel();
bAdditionalText = sal_True;
mnTextSize = 0;
}
......@@ -2730,8 +2736,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
{
if ( ImplGetText() )
{
mpPptEscherEx->EnterGroup( 0,0 );
nGroupLevel = mpPptEscherEx->GetGroupLevel();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( 0,0 );
// nGroupLevel = mpPptEscherEx->GetGroupLevel();
bAdditionalText = sal_True;
mnTextSize = 0;
}
......@@ -2749,8 +2756,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
{
if ( ImplGetText() )
{
mpPptEscherEx->EnterGroup( 0,0 );
nGroupLevel = mpPptEscherEx->GetGroupLevel();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( 0,0 );
// nGroupLevel = mpPptEscherEx->GetGroupLevel();
bAdditionalText = sal_True;
mnTextSize = 0;
}
......@@ -2768,8 +2776,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
{
if ( ImplGetText() )
{
mpPptEscherEx->EnterGroup( 0,0 );
nGroupLevel = mpPptEscherEx->GetGroupLevel();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->EnterGroup( 0,0 );
// nGroupLevel = mpPptEscherEx->GetGroupLevel();
bAdditionalText = sal_True;
mnTextSize = 0;
}
......@@ -2826,8 +2835,22 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
else
{
ImplCreateShape( ESCHER_ShpInst_PictureFrame, 0xa00, aSolverContainer );
const Rectangle aOldRect100thmm(aRect100thmm);
if ( aPropOpt.CreateGraphicProperties( mXPropSet, OUString( "GraphicURL" ), sal_False, sal_True ) )
{
aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
if(aOldRect100thmm != aRect100thmm)
{
// #119536# graphic has been adapted (rotated) so that it can be saved without angle,
// adapt local values as needed
maPosition = ImplMapPoint( ::com::sun::star::awt::Point( aRect100thmm.Left(), aRect100thmm.Top() ) );
maSize = ImplMapSize( ::com::sun::star::awt::Size ( aRect100thmm.GetWidth(), aRect100thmm.GetHeight() ) );
maRect = Rectangle( Point( maPosition.X, maPosition.Y ), Size( maSize.Width, maSize.Height ) );
mnAngle = 0;
}
}
}
}
}
......@@ -3493,8 +3516,10 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
mnAngle += 0x8000;
mnAngle &=~0xffff; // round nAngle to full grad
aPropOpt.AddOpt( ESCHER_Prop_Rotation, mnAngle );
mpPptEscherEx->SetGroupSnapRect( nGroupLevel, maRect );
mpPptEscherEx->SetGroupLogicRect( nGroupLevel, maRect );
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->SetGroupSnapRect( nGroupLevel, maRect );
// mpPptEscherEx->SetGroupLogicRect( nGroupLevel, maRect );
}
if ( !pClientTextBox )
pClientTextBox = new SvMemoryStream( 0x200, 0x200 );
......@@ -3516,7 +3541,9 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
delete pClientTextBox, pClientTextBox = NULL;
mpPptEscherEx->CloseContainer(); // ESCHER_SpContainer
mpPptEscherEx->LeaveGroup();
// #i119551# PPT does not support groups of polygons and text (MS patch KB2289187)
// mpPptEscherEx->LeaveGroup();
}
}
ClearGroupTable(); // storing groups if any are still open, which should not be the case
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment