diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2018-02-09 12:52:52 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2018-03-06 15:45:28 +0100 |
commit | acf0bad4e2b8c3c43aaaee8312c8a61d3552fcc2 (patch) | |
tree | 4650737dd242e2fef7322e6fc1c8ec2f02987a33 /sc/qa | |
parent | 2b69156c43261ceae55eb4d3b644c4c2d73231ba (diff) |
tdf#114552 Add a third anchor type for calc graphics
This allows to have two cell anchored types:
* Only cell anchored (moves with the cell when sorting etc)
* Cell anchored, also resizes with the cell
Beforehand, all cell anchored images would resize with the cell,
which was often not what users expected.
The new default (when inserting images) is now that inserted images
are only anchored to the cell, but don't resize with the cell.
This makes use of the ODF elements table:end-cell-address, table:end-x, table:end-y.
When images should resize with the cell, the end address is written
(it has always been written earlier, so documents would still import correctly).
If not, they are omitted.
Also implements xlsx import & export
Change-Id: I5f96242f88943ed77a0fd12b7f39b444e1380df7
Reviewed-on: https://gerrit.libreoffice.org/49490
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sc/qa')
-rw-r--r-- | sc/qa/extras/anchor.cxx | 4 | ||||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 6 | ||||
-rw-r--r-- | sc/qa/unit/ucalc.cxx | 12 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_sort.cxx | 2 |
4 files changed, 12 insertions, 12 deletions
diff --git a/sc/qa/extras/anchor.cxx b/sc/qa/extras/anchor.cxx index 4cdc766c7ffb..5d79caad7df9 100644 --- a/sc/qa/extras/anchor.cxx +++ b/sc/qa/extras/anchor.cxx @@ -99,7 +99,7 @@ void ScAnchorTest::testUndoAnchor() CPPUNIT_ASSERT(pDrawView->AreObjectsMarked() ); // Set Cell Anchor - ScDrawLayer::SetCellAnchoredFromPosition(*pObject, rDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObject, rDoc, 0, false); // Check state ScAnchorType oldType = ScDrawLayer::GetAnchorType(*pObject); CPPUNIT_ASSERT_EQUAL(SCA_CELL, oldType); @@ -169,7 +169,7 @@ void ScAnchorTest::testTdf76183() SdrCircObj* pObj = new SdrCircObj(OBJ_CIRC, aOrigRect); pPage->InsertObject(pObj); // Anchor to cell - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0, false); const tools::Rectangle& rNewRect = pObj->GetLogicRect(); // Set word wrap to true diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 47ed37c4ee76..3d93aac63cb3 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -3514,7 +3514,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS() // Check cell anchor state ScAnchorType oldType = ScDrawLayer::GetAnchorType(*pObj); - CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType); + CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType); // Get anchor data ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj); @@ -3576,7 +3576,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS() // Check cell anchor state oldType = ScDrawLayer::GetAnchorType(*pObj); - CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType); + CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType); // Get anchor data pData = ScDrawLayer::GetObjData(pObj); @@ -3637,7 +3637,7 @@ void ScExportTest::testMoveCellAnchoredShapesODS() // Check cell anchor state oldType = ScDrawLayer::GetAnchorType(*pObj); - CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL, oldType); + CPPUNIT_ASSERT_EQUAL_MESSAGE( "Failed to get anchor type", SCA_CELL_RESIZE, oldType); // Get anchor data pData = ScDrawLayer::GetObjData(pObj); diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 4310cc3020fb..d2544ab010fd 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -2726,7 +2726,7 @@ void Test::testGraphicsInGroup() CPPUNIT_ASSERT_EQUAL_MESSAGE("Should not change when page anchored", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true); CPPUNIT_ASSERT_EQUAL_MESSAGE("That shouldn't change size or positioning", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); @@ -2751,7 +2751,7 @@ void Test::testGraphicsInGroup() CPPUNIT_ASSERT_EQUAL_MESSAGE("Position and size of the circle shouldn't change when inserted into the page.", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false); CPPUNIT_ASSERT_EQUAL_MESSAGE("Size changed when cell anchored. Not good.", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); @@ -2784,7 +2784,7 @@ void Test::testGraphicsInGroup() CPPUNIT_ASSERT_EQUAL_MESSAGE("Size differ.", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false); CPPUNIT_ASSERT_EQUAL_MESSAGE("Size changed when cell-anchored. Not good.", const_cast<const tools::Rectangle &>(aOrigRect), rNewRect); @@ -2820,7 +2820,7 @@ void Test::testGraphicsOnSheetMove() tools::Rectangle aObjRect(2,2,100,100); SdrObject* pObj = new SdrRectObj(aObjRect); pPage->InsertObject(pObj); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false); CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be one object on the 1st sheet.", static_cast<size_t>(1), pPage->GetObjCount()); @@ -5652,7 +5652,7 @@ void Test::testAnchoredRotatedShape() double nCos=cos(nAngle*nPi180); pObj->Rotate(aRef1,nAngle,nSin,nCos); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true); tools::Rectangle aSnap = pObj->GetSnapRect(); CPPUNIT_ASSERT_EQUAL( true, testEqualsWithTolerance( aRotRect.GetHeight(), aSnap.GetHeight(), TOLERANCE ) ); @@ -6419,7 +6419,7 @@ void Test::testUndoDataAnchor() tools::Rectangle aObjRect(2,1000,100,1100); SdrObject* pObj = new SdrRectObj(aObjRect); pPage->InsertObject(pObj); - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false); // Get anchor data ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj); diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx index 825c608f3643..2aa4a441ab0c 100644 --- a/sc/qa/unit/ucalc_sort.cxx +++ b/sc/qa/unit/ucalc_sort.cxx @@ -1916,7 +1916,7 @@ void Test::testSortImages() CPPUNIT_ASSERT(pPage); pPage->InsertObject(pObj); // Anchor to cell - ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false); // Move to cell B2 ScAddress aCellPos(1, 1, 0); pDrawLayer->MoveObject(pObj, aCellPos); |