Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 0A195200C59 for ; Mon, 17 Apr 2017 19:13:27 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 08ABC160BAB; Mon, 17 Apr 2017 17:13:27 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2AFC1160B92 for ; Mon, 17 Apr 2017 19:13:26 +0200 (CEST) Received: (qmail 39219 invoked by uid 500); 17 Apr 2017 17:13:25 -0000 Mailing-List: contact commits-help@poi.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@poi.apache.org Delivered-To: mailing list commits@poi.apache.org Received: (qmail 39210 invoked by uid 99); 17 Apr 2017 17:13:25 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Apr 2017 17:13:25 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id B85903A0EA9 for ; Mon, 17 Apr 2017 17:13:24 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1791696 - in /poi: site/src/documentation/content/xdocs/ trunk/src/java/org/apache/poi/ddf/ trunk/src/ooxml/testcases/org/apache/poi/sl/ trunk/src/scratchpad/src/org/apache/poi/hslf/record/ trunk/src/scratchpad/src/org/apache/poi/hslf/user... Date: Mon, 17 Apr 2017 17:13:23 -0000 To: commits@poi.apache.org From: kiwiwings@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20170417171324.B85903A0EA9@svn01-us-west.apache.org> archived-at: Mon, 17 Apr 2017 17:13:27 -0000 Author: kiwiwings Date: Mon Apr 17 17:13:23 2017 New Revision: 1791696 URL: http://svn.apache.org/viewvc?rev=1791696&view=rev Log: #60998 - HSLFTable.setRowHeight sets row height incorrect Modified: poi/site/src/documentation/content/xdocs/status.xml poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java Modified: poi/site/src/documentation/content/xdocs/status.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1791696&r1=1791695&r2=1791696&view=diff ============================================================================== --- poi/site/src/documentation/content/xdocs/status.xml (original) +++ poi/site/src/documentation/content/xdocs/status.xml Mon Apr 17 17:13:23 2017 @@ -58,6 +58,7 @@ + HSLFTable.setRowHeight sets row height incorrect Multiple embedded objects on same sheet are ignored Grid and rowspan calculation in table cells is wrong Support for "PolylineTo" as well as existing alternate spelling "PolyLineTo" Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java?rev=1791696&r1=1791695&r2=1791696&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java (original) +++ poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java Mon Apr 17 17:13:23 2017 @@ -624,7 +624,7 @@ public final class EscherProperties { addProp( m, GROUPSHAPE__BORDERBOTTOMCOLOR, "groupshape.borderBottomColor" ); // 0x039D; addProp( m, GROUPSHAPE__BORDERRIGHTCOLOR, "groupshape.borderRightColor" ); // 0x039E; addProp( m, GROUPSHAPE__TABLEPROPERTIES, "groupshape.tableProperties" ); // 0x039F; - addProp( m, GROUPSHAPE__TABLEROWPROPERTIES, "groupshape.tableRowProperties" ); // 0x03A0; + addProp( m, GROUPSHAPE__TABLEROWPROPERTIES, "groupshape.tableRowProperties", EscherPropertyMetaData.TYPE_ARRAY ); // 0x03A0; addProp( m, GROUPSHAPE__WEBBOT, "groupshape.wzWebBot" ); // 0x03A5; addProp( m, GROUPSHAPE__METROBLOB, "groupshape.metroBlob" ); // 0x03A9; addProp( m, GROUPSHAPE__ZORDER, "groupshape.dhgt" ); // 0x03AA; Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java?rev=1791696&r1=1791695&r2=1791696&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java Mon Apr 17 17:13:23 2017 @@ -88,7 +88,12 @@ public class TestTable { // assert ppt and pptx versions of the same table have the same shape confirmTableShapeEqual(ts, tsx); - + + // change row height and validate again + tsx.setRowHeight(1, 50); + ts.setRowHeight(1, 50); + confirmTableShapeEqual(ts, tsx); + pptx.close(); ppt.close(); } @@ -115,7 +120,7 @@ public class TestTable { } @Test - public void textDirectionHSLF() throws IOException { + public void directionHSLF() throws IOException { assumeFalse(xslfOnly); SlideShow ppt1 = new HSLFSlideShow(); testTextDirection(ppt1); @@ -123,7 +128,7 @@ public class TestTable { } @Test - public void textDirectionXSLF() throws IOException { + public void directionXSLF() throws IOException { SlideShow ppt1 = new XMLSlideShow(); testTextDirection(ppt1); ppt1.close(); Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java?rev=1791696&r1=1791695&r2=1791696&view=diff ============================================================================== --- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java Mon Apr 17 17:13:23 2017 @@ -204,6 +204,7 @@ public enum RecordTypes { EscherDeletedPspl(0xf11d,null), EscherSplitMenuColors(0xf11e,null), EscherOleObject(0xf11f,null), + // same as EscherTertiaryOptRecord.RECORD_ID EscherUserDefined(0xf122,null); private static final Map LOOKUP; Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java?rev=1791696&r1=1791695&r2=1791696&view=diff ============================================================================== --- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java Mon Apr 17 17:13:23 2017 @@ -361,30 +361,38 @@ implements HSLFShapeContainer, TableShap } @Override - public void setRowHeight(int row, double height) { + public void setRowHeight(int row, final double height) { if (row < 0 || row >= cells.length) { throw new IllegalArgumentException("Row index '"+row+"' is not within range [0-"+(cells.length-1)+"]"); } - int pxHeight = Units.pointsToPixel(height); - double currentHeight = cells[row][0].getAnchor().getHeight(); - double dy = pxHeight - currentHeight; - + // update row height in the table properties + AbstractEscherOptRecord opt = getEscherChild(RecordTypes.EscherUserDefined.typeID); + EscherArrayProperty p = opt.lookup(EscherProperties.GROUPSHAPE__TABLEROWPROPERTIES); + byte[] masterBytes = p.getElement(row); + double currentHeight = Units.masterToPoints(LittleEndian.getInt(masterBytes, 0)); + LittleEndian.putInt(masterBytes, 0, Units.pointsToMaster(height)); + p.setElement(row, masterBytes); + + // move the cells + double dy = height - currentHeight; for (int i = row; i < cells.length; i++) { - for (int j = 0; j < cells[i].length; j++) { - Rectangle2D anchor = cells[i][j].getAnchor(); + for (HSLFTableCell c : cells[i]) { + if (c == null) { + continue; + } + Rectangle2D anchor = c.getAnchor(); if(i == row) { - anchor.setRect(anchor.getX(), anchor.getY(), anchor.getWidth(), pxHeight); + anchor.setRect(anchor.getX(), anchor.getY(), anchor.getWidth(), height); } else { - anchor.setRect(anchor.getX(), anchor.getY()+dy, anchor.getWidth(), pxHeight); + anchor.setRect(anchor.getX(), anchor.getY()+dy, anchor.getWidth(), anchor.getHeight()); } - cells[i][j].setAnchor(anchor); + c.setAnchor(anchor); } } Rectangle2D tblanchor = getAnchor(); tblanchor.setRect(tblanchor.getX(), tblanchor.getY(), tblanchor.getWidth(), tblanchor.getHeight() + dy); setExteriorAnchor(tblanchor); - } @Override @@ -453,7 +461,7 @@ implements HSLFShapeContainer, TableShap } private void updateRowHeightsProperty() { - AbstractEscherOptRecord opt = getEscherOptRecord(); + AbstractEscherOptRecord opt = getEscherChild(RecordTypes.EscherUserDefined.typeID); EscherArrayProperty p = opt.lookup(EscherProperties.GROUPSHAPE__TABLEROWPROPERTIES); byte[] val = new byte[4]; for (int rowIdx = 0; rowIdx < cells.length; rowIdx++) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org For additional commands, e-mail: commits-help@poi.apache.org