From 82fa836d1f1b7ff644c90258af20e05850e1ade3 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Fri, 29 Jul 2022 08:10:51 +0000 Subject: [PATCH] code to handle smart art rotations git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1903096 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/XSLFDiagram.java | 11 ++++++- .../poi/xslf/usermodel/TestXSLFDiagram.java | 27 ++++++++++++++++++ .../slideshow/smartart-rotated-text.pptx | Bin 0 -> 43459 bytes 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 test-data/slideshow/smartart-rotated-text.pptx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFDiagram.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFDiagram.java index c63e6ca0ac..ccd7711697 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFDiagram.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFDiagram.java @@ -172,7 +172,6 @@ public class XSLFDiagram extends XSLFGraphicFrame { // We can't easily (is it even possible?) set a separate xfrm for the text on the openxml CTShape. // Instead, we create a separate textbox shape with the same xfrm. org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties textShapeProps = textShapeCT.addNewSpPr(); - textShapeProps.setXfrm(msShapeCt.getTxXfrm()); textShapeCT.setTxBody(msShapeCt.getTxBody()); textShapeCT.setStyle(msShapeCt.getStyle()); @@ -182,6 +181,16 @@ public class XSLFDiagram extends XSLFGraphicFrame { textShapeCT.setNvSpPr((CTShapeNonVisual) nonVisualCt.copy()); textShapeCT.getNvSpPr().getCNvSpPr().setTxBox(true); + textShapeProps.setXfrm(msShapeCt.getTxXfrm()); + int shapeRotation = msShapeCt.getSpPr().getXfrm().getRot(); + int textRotation = msShapeCt.getTxXfrm().getRot(); + if (textRotation != 0) { + // SmartArt diagrams (e.g. hexagon) have rotated shapes and the txXfrm can change the rotation for visual + // reasons. We perform that same calculation here again and calculate a new rotation for the text box. + int resolvedRotation = shapeRotation + textRotation; + textShapeProps.getXfrm().setRot(resolvedRotation); + } + return textShapeCT; } diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java index 9552cfd656..13e14ac67c 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java @@ -35,6 +35,7 @@ import static org.junit.jupiter.api.Assertions.*; public class TestXSLFDiagram { private static final String SIMPLE_DIAGRAM = "smartart-simple.pptx"; + private static final String ROTATED_TEXT_DIAGRAM = "smartart-rotated-text.pptx"; private static List extractDiagrams(XMLSlideShow slideShow) { return slideShow.getSlides() @@ -149,4 +150,30 @@ public class TestXSLFDiagram { assertEquals(ContentTypes.IMAGE_JPEG, texturePaint.getContentType()); } } + + @Test + public void testTextRotationOnShape() throws IOException { + try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(ROTATED_TEXT_DIAGRAM)) { + List diagrams = extractDiagrams(inputPptx); + assertEquals(1, diagrams.size()); + + XSLFDiagram diagram = diagrams.get(0); + XSLFGroupShape groupShape = diagram.getGroupShape(); + + List shapes = groupShape.getShapes(); + + // Text shapes have separate rotation calculation + XSLFTextBox abcText = (XSLFTextBox) shapes.get(1); + assertEquals(-41.3187, abcText.getRotation(), 1E-4); + + XSLFTextBox defText = (XSLFTextBox) shapes.get(5); + assertEquals(49.1812, defText.getRotation(), 1E-4); + + XSLFTextBox ghiText = (XSLFTextBox) shapes.get(9); + assertEquals(0.0, ghiText.getRotation(), 1E-4); + + XSLFTextBox jklText = (XSLFTextBox) shapes.get(11); + assertEquals(0.0, jklText.getRotation(), 1E-4); + } + } } diff --git a/test-data/slideshow/smartart-rotated-text.pptx b/test-data/slideshow/smartart-rotated-text.pptx new file mode 100644 index 0000000000000000000000000000000000000000..f308a7d0f865659a787427a5d78f387f9a4d32d5 GIT binary patch literal 43459 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%0D}ysDwsXg?(20%jdAoCS^k`b=+7uWXKc8Xv<$C zZ&kxILItP^Ut9Kc;~u{2%gR@>ky-2hLX(#)8S7RuO7P=5p5>hA^wnc{#CcJD2k0;Y znQ8eUeZcpM)3OsN2QKM4`IJ%esxYhPHF7Jo4wew5S0L3$B`LePxGg<;^WF*RY z+C$?GRBsIC14(~N*&ESJUcmCvnL2TnrMoPd!*P8m7ANoXS6#To9m=+2w8Z(6j|-l3 zK0Aj@P3~nK5%wNjJ`}}XOb^+c0*Ej4>Af09(hO~nCa5AoNfHXkqK@$}T{dDPnw7$R zD_-{B*XU8|{NB7SC&s&XMyuinZC7u+-vPmV$K7U?+3JV{-yP#SSy~sacpJaX?M132 z!@knI0|J0m1`DHoH)cAM`hBcK&=SO}Kj*JS190OlZ*A{LAH26GAj~>QXT4uiNPQp_7Nc{TCtiI00+OBm9<|BTj?=rAA!NhFJ zo(^kbqgRbPEgcIv?Yy;IeVh9eA?Y!D_qc9t5ZIS{r8rr!-|=6=`6-S(ju$Oay9>=P zIaPsH1~tj=$M~uO_jBG`7qxdr4~`doBA#dnB^E{9Z*z`yiF$5VJ^ubD5|udzm8R@F z(mu?*37NS|=Ds?e+1>tIFKkfbm}`$mY|8RNKLCh5wa(rck_%-fGtQnyEe)BH+?+$y z9^tb&9V#s5YkYF%{cI*)M8H8I=|xA=J$IwuIq9@b7ChZI<A`_g}3%QQAp>)Qj+2HwsN z0AK;{>i4vq|5`f8LEqKf#`I4l#fj#c?Fu`xFG1D&r%4{m_#AO6GX?P)C3wn~ABTSJ z%ujZ+N4*JX9EVl!-eL+3NvtcYMu^yg?sgB(gRMK4t|@S@PvbJ$>gjFAqYYg3!!%Z! z?g4)E0V#STIUQ%OG+X7QyFR$D!A2GG|69|aLAp%xma&}>@BS; z$FP=9H19CZO?A8fHY7GAKUz~gQ3sq-VVJUCux7RHavX8%ZrXDAJnn9qv{Z}`Y+;1( zu^OYb*q#cW7XOF#smVCG%9@G$E!@RZLK6|vS}HL)rWmOa3ar+G2#hv4NHm_WL|dom zVcK~1_G*%`+}v?8Z!=ZP^3n3vYyp4&cjN|ah-VFs!Un0pkTC1D0M!S^%7>AJ7n7=K z9FZ>Vm=zV+nc3T_uX8Uw7fNso+5&CkE6WN9oY60$6&l8R?!+ADPoLOSmMCk-_?J}V zRqbqW)YWJE)vnWNm(XU=1Dm9+8gU=#?$W78I?6|AsY)eX6LEIs=hOuep7YJu;Xg|` zI%mGaVjo}H&*&iDhm;&Yy~UQzt6rUL8q_2l$^;c*AH!iLz<&8DN%r6_KMay~i;Y-i ztI|MLioV+8bWmsZULbUPvQ4u?Z|rLfeUrGQlp?&Yt_;(-(R*aNtIW1+7)~q)#hG1B zfqgzxzSS@iWz4?|(Nyg~o9n(@PM=hfd3TcZ*0vf^3^UsU8n`lr9r1#3DqfRfEf#~6 zvw?E>x?&=yn~#tRH0VU`;LZ7v$b+3E1z172W~RLj4a2gmMqV>GhTgCP5SaUYd23fLOR+V zV>G8r&Zl%?n8mv8+sTjl{8Qy^PngeJLgsnx2IT^RaT+e?br*A@JZZ}8SgZVNtIw@T zd;MbW?w9C!J6gJNHj~FuU$x2_fy&VG8s7AZ zSs5O|!Q96^p*Z2~!rMx$Su|z&DbD=8L)dMX*^#3VnF0LP3*j zrau$~Rohupc@T;DZo}~*KY_prQxL&iF?EOPL;8+hbcygvL-*oSj1qF0$i4zL6$UA0 z0cRPC6I{0$ik*QO9vCJrL?#$IKC8HC!qIF76A`e~eq*k=BRjR4M_>aHxkin|KeimO zz=yJ{BS1%Z(c&3DaYi$Jz6}iuz+(CbY#V_TvaV<&!0_bjdEHt!5N9ZsMRLZa+W{Lt)AFkG~O=hT+<`!mE)wjY0#?sQO zL3e~5X5Cm%%=f(5fnnym>hl~oEKy1==1@!8k3&RZ=L5uH-}VVu^87Cr4bPO;4t>|T zZlSYu2Z3~WbRJ{rT`!!N14`uthBtjqj1XGTA}QoT6p=udXrYA|`N%cnz9OlVw>a3T zkhbP;iuYX3S&H|~^iI1ilM&ui?iqs|axw*j!H<&3XOSDL+|M|F<%M>v0*CkrTwk^j z`@hysbTTuxHU>Iif!n`H3U!$X91hG5j3GP0F&lU+{4}Tev}tMEr#GVZBmeqV>PZY4vw~ z&U_QRuM~8zZuYlbYWJU+zJNtT$&lulY*?{!>o-e@g&|vryof%I)VPK43MxtdrDl^A z$}!P|$^XNORG+&4%O-fJdpP-IiWw3ruL&mZCS&{zLlDef%~Hh*Nh^_WZDp<`b)_9r zcf9lZ?sZf_B>E*I_fSli%c6TH9x)AlAg zH-xJhEtJ^-AZlqv9ajuFh0a4_NFS612h4+#7{S{S5r%d1NjzqUk6fe|yp7xQ2MT}q zqO=~^g(#Y3m$0Nn7V}Q3jgfa!E~Au?-)v)J^4=D0k|JKZmIunT**ZD% z9^+>iRKixVLTIe9GsCj}Tjb|R2X2&2en{`oC?c)_Lu>Z($cinsU&c1Xl-K3`zb^0( z6b&2%1Sz-`DiFk_=~1S7+|Yl5M@B{JOOFhJQ4)U`&gHtU_j4p-!6O#xW)#dwx3Z~j z7QGKn#By9l8s?pklin|{t2D*P<9Y{B2z6^heMaJ}!0yT2ztX-&Do z?;T*Pr{7(%JH9%V|G0^y+YV)yyejI@?S*z8v;FFec5Z#_ejneiVD4PR5PdcxKK67q~J~ug%xR(TS7Ur*DH)Yyq%+nfWcfe;wOK}^>IobTyaTV<`(%X=s5Ok zqC>M>kx8y?{lwU|F!pYFy~br5HNp?I`cdx!vy|5OA3!U>wB&r9KdA>o z#t7SjT|N#$fwm>FTxbnu;WWX-?1y;9LyZnK@TUz*sgWj3LHs>NXBq8i-LvxFf3Wk!4PEqRrgOAKv!s z4d^H5xvo1iuxor6r^69%uuQw%d9}VGQ=wT~P}`esuW-&3I&L^cJ?|h&EGp-oDKd^k zm~A-4 zKb=YrTHeuoEm**gg#5m87KyLE`Pn~Hr`Iv9*Ck*5x-ERBj^*i8Hh*vSn6Gfo5-D>% zSEOujD8dp&r{D7ZuX7o;m$ZLi2g(s64gdg{{Pn*NJFNb!gY!38qOszT%Zcp0QSu5E zeqSABYp<{)ZOopqTs~rKvHc3b3YGKL3+XRafn&3v^BN1ztWmEq|KAY8P z15;_rBk#e6-wci!pkqVfg-InkY_ zE4+YA8K@oF+Sn%Kb^#IaEc273Dj~2uX{&fV$v2tfM&0Cg`PH z6GW*W<2ADmkr=M9A=t$#>+^6T*f;HrYLHH2UT^jXM@rTpl$`<;1=3k=EchIP`_WF5 zE~H8jC{%UcH3-DMVa72Z42RwrozIpZcoG@yKs6;|eQgo)PKdk%SE2b%zA&Xf0UjQ9Q7H6XMTxvX$+@Z7BA$oec;YyMbPMjWG$pcom- z2vNQ4CtVi+?--!w$rSvJ5Jew$S~9j+C03s1ljxtXHBzyCz7EfIS`r5o3|(JdiTA}W zn+}X41q|KbWf%JVv2luhq?WM`)jgk&T1fi&s+e9ot%itlW*#sWA7BTpY^5>J`Z*U2 zh8}Qcq7aSzAR?qn{5&t03A-@Zof+Or_?7`_RO_u^nq*D)nL?^_;GrWFg0a4>-4gzO z9Gpo^F<=+ebf}><5QG*#tnRSoSwQT~HyIQ#KT-FlLJ3hykuT>NNlIoNcj-LG_T5g@ z$q{{2j-hnrMPr`%fgu$sB)=%ml<6Bd6z(|or9%75MTW+9cA_>K@0*O^!%k-b(IOla zI=bNv8kMt+50sK!sW@}8oW@mP2}tuoMn+Iqur85rKL0uov+4NX1l&J$U3H5kRSu2Igg+csgz<53Oi2RJp;#%xQ4bOO zB1nWjOKAJ!9qJ8AKEoR{=J^hPDZ1&lAIV6JZOs9hSHDiOrqD^{*qHS)(HPww_seO7 z`Qo@goy{5z*ZTQj{AZnDYhn$u{;6I#m4CY+7kXX;YzcaPQvCEox#FZ7Zpe2N>=I(< zsc6LfY7>{RNlBVzuT;gco3>`1IyJ858+YN>4sU~~o0WX!8~*BTzjbL%T@c8=;27e3 z;+pC3c`faFJ|9JQ{5p}4lN{=oZ(RuMM_GI9u%x8$K(=Bo}5T!3@ zjK@7mi;K$=<&s~i<|OA^OcI@?*LE(&=+0Q;U>c<-%PaK;o9bC<>dLS2ujHeK6N$FT zl)2!=I{o{zYcNh4t_6HEndYX0&INpXhl=0%|GrWEIb$7dv|l)p@{jLM>7q&=C9_}k z7!k!Xg9y}(qYwP!5|umD?SP}nF9$G`GV}|W!f#Q2WWlm$Yta>e4&}b#a#94hXh*~VVR-A3Bi>*rLN&SDpz%}*~V^3`RmoO z!MbvIX@KFJ8=w9{))?Aa**ZA>P1a;++b%N#msz7Y75Lnt3#P5i(RG976uZX0uX*^0jBEH_#nd!EiuC98&ovl-Xr8@3ABWH4|JsKGKi9 zo{{2hFRRD(cKwN@BGXGUb)qm+ZHnIYw=v?UYYX%Qbd7 z94|8PU1npQSRZ@o)yq7NqQ%zfxJ9O7Y`R;{KfD5%NZP2v+hEm_1=YQ{F_mEJjqC~Q zu5{(-4$qrrb}{*R;JJc7gb;ORVOc{fPmoS*S>d+dy>a4SZ5tI+d{p835{B2t%aQr5x3a+h|sTF?;9^61*?OJUf9E`T?WCM>ATYJE3W>+&#(}d$k*ZVtl-bPNP zO_PjtqIF{JV`ST4w+P&F;Wn&oI@DUkOY%Y9gt7T-h!g{N9ES&|8Qkl%XV7zZQ#C2L zj1A6V_fYrG#}_2&2P<4}bu+#(YN{v_CNYjQU$eby+zl7tr>~<%uc*Lo4YBBf-q^ng zO;;byOG5=R7=k=7F#DgCIeTYwLrX;`cdNe}2h!JMR~XR-flP)+yb+UEB~wI9$gczg zBLlq%*3^)o#_3YErm*hgk_O36)EyigJ=!esVPT(>OJK!!&;>DCrFkHsP0_fHa`>y=?!m=%A(&31;yytl=LhAF8D<;^5@hCW=LPO( zY9ty*F47cE4~@(X`TSbT-22JvQ1|5{t`XawKgr7JtcN!P-@Zm9OUl#)CA-4e|CFk! z@>rHMiDF6G&@UL5QI;SNCb00Xdrm&zcZD0ac^(|fwBjKn->vdxWoSoTiZ6+e^~&rE zGVCm5JYvWom|%II3_>o)iz};T{#=)eCNh@wZoZj1X%ItzKN-6UEA`d?nv7|lgZy)z zC26{Pu6JF5BH8hP?l5;PbL?dl`u21}q!doY0H|mo$@hrn5vL1XRO=?n;6cxjo>o5o zz~M^zQ@iC2g>!k`APk^WyfS;CBtf-!H20pi<2CRL!ab$BtIe|pwiDvyngyl+Rr$ps}X5JziVUs0C*9{#? ziP;{n7$$~*H;a=HX+frMh9v$FeZ!AY`OBx@KY?Gh{P5z8O9@D{avf?K4)}qq`w2G#T%s@mgn^Y@n6;VRwAcZ6xVC_ z8jDo;h2L2Z#&ISB%tWFk4q-qMoW8VK)g@xcNoz-ii3q2)36ZnCAQQ4-FDTe;D~Al3 z@u(dLBF?Cn^Wf*9-+yINZ(L3s)PFTNTD!URd-}q^PV+#YHbkie&LeOK@)K}%uRjAL zI|pOOKeHTuPv|I17!L6~A!sJ@tGCmwXU3H?pPl6 zg|NF_qxZXwq117rs$#5uvX9FYuh~_8Sr-ww=0LSAl0~AAaar0g9otpP-ZtmwCdVs# zemz`+fG;0o6y)@#S{n~!HjY*7XYdEHHhKGsw?1zpEkBL2J|~+m@aqs+nE;w44ti_Cqh(b$3x{e&(O|w}IxdWdEUcUCfPL|Fd-?6{X~M7?C?j zE(wS?x@DHEmx`#SVNZ2p1uZshPRzHHbg!DoPAg5X%*^X?JtTkK@(tW=XV;Uj2z@@) z9==+E8SRp&tSglQ#%4D+n_`h~B{Hsm8g}tJ(RcT*hwcXk+DVN;cj*&J&gY@Q{*-6e zgIIq8L|a%Al#8Pcq?J=dvb5+*QFq8}B{854H63Eqd1?Qy*@wP0=}~4@Kj-s!Vi*G^&mNJz(xr3*)TB5v&yp_cOrElRK1dKY!g znpQ7K?be^0UhEA~b=rpQM6YtG13mI@09TuzkKk&bRtUNd?u|a|r(J(qE?!TVz1M)s zhGG#r@i~2$U#MGBMvk|!CO3BjW}(vwT*dQ&O5CEN75K}hTzrj+DFZTS1F(GfJEJ=3 z8(10tk#&y0SrvXv0x^IQQ*f(2%+>78n@(7s6s?Dl#`OqU(Y;V} zaWE|p)&YB^`MKueS87@x!5RVJt^aF3z13(g#|F-QVgq`Hkpa*k|2fS{-_GtgW`sH5 zAe2A;%z*-)|L+TVN;0-9jPUJ9i@wNSwuwgCRgmG~#3Hf6wUD7RnaUB-LBsKc#pEQ58Gl_TVWpL;}uz!GIyI_YfO@(AbTVIsLGT~I7S;Dx3{H4h0sJ{tr5m* zFrb&%-XHwS+nqOa0|dYH1gfj_9~2}8=LBd3f+QoTNFH0FFx~K2j4GhpSw<9MOXuxu z*$HiN1;i0DXi=orhtGJwsLGp16m(w1c5=?{(1t9Vqxf%7un)^4VxCUZHp(Ap&2T3oZsNaZ&4NJlFg_N!m2nA+_A{uiPQwRP&Q2p ztk@8H&?KYSgd3HUpry_SE0~;bA@yJIzdduV38R!#e0uE*OEub+2RF<3ZtS_0#K>f6 zZXH|YLgdj=MGjemK!|l34|CV-T}J;{_*w9RzIu+^Ye8Th|263US=pxkCt6t?|La}2 zCiQpt%jWg((Em95xN%$kJL!2<8E^A$?{uuao4?+;qR}Wn0qVqqt4@!!gB&~ z&*yzP{vGBHPDZEabd2}{lnLue%ls#@o>yMwVTU?0VS^ zFa2+iP#XKE6P3{!+kP$l%l+wMiop@}-1mmp*Sz@n{YX95!s6MowcV*enT^0aC5W7# zlJkpFM>7wgH;2lxHM@BMyz8MEVTLm|^U8YhJe>+YDoWt7@pmZ{xbpKpGH z;pw5%&uY(2zP#Oc`Rz>{W(jMqWHmkNSim51-D%ZTmc4pu4|TcLBztXe(w?zEHp1lW zy7fVEf$MmmxP>RoVUezwylG0f@RqW5izK4=wN1KtLikj>cdpm7KNr^&9Q`34&FIG= z`A|qk_>AElj>D_W7c~cch>NV9y-1X!Z()Pbl+6}>Ni`|5GcLu+WK0&`G$k+mpz9Xy z>Z6?Aarlc%@A3Xdxscln>il@i1L?L|-pY~*_e!JOM&pqou^l8I^`kr#`B44e&-aAmc~LLf~FPhDX5U4Lsf#2^a!*okBJygEu0hYy4R2#j6U` z$PZMefTWFqAr-g@8nhM(eC`O!=`P^08my*SYEGQC1n7j7z=;J>6w^)sJ&I%+*if)J z=nj(BGiB!iI_Lthfd-nnK!Eu`kAaMU_y*J@2Zl*vNoIZ?C`7QjXP?UQ`M~|a3_iS& z$#R5YAAlkt!_bXEcaH9s9W7NrwHf{l3}OiFK-M7vhzW?bT8SlzSiN+nYFnxmFnq0` zH*O+~DUd@771%a%aM(aNSdBx!L>yt2J zB8d_i>M&@U)N7+0l_-#GB0jp)Xq-{6HXZiNYc9QxG<2;*WL@EZp{#S7gy^z*|J#-+L9H_i}zHX6El z=qD8;%=7UiU>??dfqXuLF2XP%E8Q21d6=g)fKA0(jvyNiI{EO{=KN5B`;_yh~O>PS!#$?2SjKrJV z6HJWBh(iwXnT(q3CWR1VG9+`5nCxbT5@R&tFg|>aMorN3!-z2%aljqA$>_(#A+pNS za3qsqrsx-sa>1rf&R)I*FxUp$Cz0{TJ`gb5|BXb#CiEE_>L z1$_z-VakJUG*gf!1kp`FpXWfB;@FR73fim(x=HAxya