From 19d5258d956e257e986cabed4aa52976b09c0a65 Mon Sep 17 00:00:00 2001 From: Aliaksandr Dziarkach <18146690+AliaksandrDziarkach@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:05:32 +0300 Subject: [PATCH] Backmerge: #2513 - Elliptical arrows can not be saved to the png backmerge to master --- .../ref/rendering/render_reactions.py.out | 2 + .../tests/rendering/reactions/issue_2513.ket | 102 +++++++++++++++ .../tests/rendering/ref/linux/issue_2513.png | Bin 0 -> 8331 bytes .../tests/rendering/ref/mac/issue_2513.png | Bin 0 -> 8482 bytes .../tests/rendering/ref/win/issue_2513.png | Bin 0 -> 8331 bytes .../tests/rendering/render_reactions.py | 12 ++ core/render2d/src/render_context.cpp | 2 +- .../backend/service/tests/api/indigo_test.py | 122 ++++++++++++++++++ .../tests/api/ref/render-eleptical-arrow.png | Bin 0 -> 5563 bytes 9 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 api/tests/integration/tests/rendering/reactions/issue_2513.ket create mode 100644 api/tests/integration/tests/rendering/ref/linux/issue_2513.png create mode 100644 api/tests/integration/tests/rendering/ref/mac/issue_2513.png create mode 100644 api/tests/integration/tests/rendering/ref/win/issue_2513.png create mode 100644 utils/indigo-service/backend/service/tests/api/ref/render-eleptical-arrow.png diff --git a/api/tests/integration/ref/rendering/render_reactions.py.out b/api/tests/integration/ref/rendering/render_reactions.py.out index 7d74ddb834..5fdd2c5b3a 100644 --- a/api/tests/integration/ref/rendering/render_reactions.py.out +++ b/api/tests/integration/ref/rendering/render_reactions.py.out @@ -13,3 +13,5 @@ issue 2444 wrong arrow and plus width issue_2444.png rendering status: OK issue 2512 two short equilibrium half arrows issue_2512.png rendering status: OK +issue 2513 elliptical-arc-arrow render error +issue_2513.png rendering status: OK diff --git a/api/tests/integration/tests/rendering/reactions/issue_2513.ket b/api/tests/integration/tests/rendering/reactions/issue_2513.ket new file mode 100644 index 0000000000..07c0ccfcc3 --- /dev/null +++ b/api/tests/integration/tests/rendering/reactions/issue_2513.ket @@ -0,0 +1,102 @@ +{ + "root": { + "nodes": [ + { + "$ref": "mol0" + }, + { + "$ref": "mol1" + }, + { + "$ref": "mol2" + }, + { + "type": "arrow", + "data": { + "mode": "elliptical-arc-arrow-open-angle", + "pos": [ + { + "x": 5.799999999999997, + "y": -8.200000000000003, + "z": 0 + }, + { + "x": 7.205569279687058, + "y": -8.200000000000003, + "z": 0 + } + ], + "height": 1 + } + }, + { + "type": "arrow", + "data": { + "mode": "open-angle", + "pos": [ + { + "x": 7.775, + "y": -8.225, + "z": 0 + }, + { + "x": 8.875, + "y": -8.225, + "z": 0 + } + ] + } + }, + { + "type": "plus", + "location": [ + 6.525, + -8.225, + 0 + ], + "prop": {} + } + ], + "connections": [], + "templates": [] + }, + "mol0": { + "type": "molecule", + "atoms": [ + { + "label": "N", + "location": [ + 5.749999999999999, + -8.350000000000001, + 0 + ] + } + ] + }, + "mol1": { + "type": "molecule", + "atoms": [ + { + "label": "O", + "location": [ + 7.3999999999999995, + -8.3, + 0 + ] + } + ] + }, + "mol2": { + "type": "molecule", + "atoms": [ + { + "label": "C", + "location": [ + 9.15, + -8.3, + 0 + ] + } + ] + } +} \ No newline at end of file diff --git a/api/tests/integration/tests/rendering/ref/linux/issue_2513.png b/api/tests/integration/tests/rendering/ref/linux/issue_2513.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed22ae2c3246625dc89da54d376b7a2641f9618 GIT binary patch literal 8331 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 Q!1;)(l9poeUDM$I0b$H|-T(jq literal 0 HcmV?d00001 diff --git a/api/tests/integration/tests/rendering/ref/mac/issue_2513.png b/api/tests/integration/tests/rendering/ref/mac/issue_2513.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb5b46e2e48c700e729baf5d6802708711a4155 GIT binary patch literal 8482 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 Q!1;)(l9poeUDM$I0b$H|-T(jq literal 0 HcmV?d00001 diff --git a/api/tests/integration/tests/rendering/render_reactions.py b/api/tests/integration/tests/rendering/render_reactions.py index 2b3d8cd68d..954bcc6ccc 100644 --- a/api/tests/integration/tests/rendering/render_reactions.py +++ b/api/tests/integration/tests/rendering/render_reactions.py @@ -105,6 +105,18 @@ def renderRxnfile(filename, outfile): renderer.renderToFile(rxn, joinPathPy("out/" + png_fname, __file__)) print(checkImageSimilarity(png_fname)) +print("issue 2513 elliptical-arc-arrow render error") +indigo.resetOptions() +indigo.setOption("ignore-stereochemistry-errors", "true") +indigo.setOption("render-background-color", "255, 255, 255") +indigo.setOption("render-output-format", "png") +fname = "issue_2513" +png_fname = fname + ".png" +ket_fname = joinPathPy("reactions/%s.ket" % fname, __file__) +rxn = indigo.loadReactionFromFile(ket_fname) +renderer.renderToFile(rxn, joinPathPy("out/" + png_fname, __file__)) +print(checkImageSimilarity(png_fname)) + if isIronPython(): renderer.Dispose() indigo.Dispose() diff --git a/core/render2d/src/render_context.cpp b/core/render2d/src/render_context.cpp index 6e7d2fdebd..31fdcafebd 100644 --- a/core/render2d/src/render_context.cpp +++ b/core/render2d/src/render_context.cpp @@ -1036,7 +1036,7 @@ void RenderContext::drawPlus(const Vec2f& pos, const float linewidth, const floa void RenderContext::drawHalfEllipse(const Vec2f& v1, const Vec2f& v2, const float height, const bool is_negative) { - float h = abs(height); + float h = std::fabs(height); double angle1 = height > 0 ? -M_PI : 0; double angle2 = height > 0 ? 0 : M_PI; Vec2f d; diff --git a/utils/indigo-service/backend/service/tests/api/indigo_test.py b/utils/indigo-service/backend/service/tests/api/indigo_test.py index 78c5d709af..273e1b6209 100644 --- a/utils/indigo-service/backend/service/tests/api/indigo_test.py +++ b/utils/indigo-service/backend/service/tests/api/indigo_test.py @@ -1670,6 +1670,128 @@ def test_check_overlap(self): result_data["overlapping_atoms"], ) + def test_render_eleptical_arrow(self): + ket = """{ + "root": { + "nodes": [ + { + "$ref": "mol0" + }, + { + "$ref": "mol1" + }, + { + "$ref": "mol2" + }, + { + "type": "arrow", + "data": { + "mode": "elliptical-arc-arrow-open-angle", + "pos": [ + { + "x": 5.799999999999997, + "y": -8.200000000000003, + "z": 0 + }, + { + "x": 7.205569279687058, + "y": -8.200000000000003, + "z": 0 + } + ], + "height": 1 + } + }, + { + "type": "arrow", + "data": { + "mode": "open-angle", + "pos": [ + { + "x": 7.775, + "y": -8.225, + "z": 0 + }, + { + "x": 8.875, + "y": -8.225, + "z": 0 + } + ] + } + }, + { + "type": "plus", + "location": [ + 6.525, + -8.225, + 0 + ], + "prop": {} + } + ], + "connections": [], + "templates": [] + }, + "mol0": { + "type": "molecule", + "atoms": [ + { + "label": "N", + "location": [ + 5.749999999999999, + -8.350000000000001, + 0 + ] + } + ] + }, + "mol1": { + "type": "molecule", + "atoms": [ + { + "label": "O", + "location": [ + 7.3999999999999995, + -8.3, + 0 + ] + } + ] + }, + "mol2": { + "type": "molecule", + "atoms": [ + { + "label": "C", + "location": [ + 9.15, + -8.3, + 0 + ] + } + ] + } +}""" + ref_path = joinPathPy("ref/", __file__) + headers, data = self.get_headers( + { + "output_format": "image/png", + "struct": ket, + } + ) + result = requests.post( + self.url_prefix + "/render", + headers=headers, + data=data, + ) + fname = "render-eleptical-arrow.png" + # with open(os.path.join(ref_path, fname), "wb") as file: + # file.write(result.content) + with open(os.path.join(ref_path, fname), "rb") as file: + ref = file.read() + self.assertEqual(result.content, ref) + def test_check_stereo(self): # up headers, data = self.get_headers( diff --git a/utils/indigo-service/backend/service/tests/api/ref/render-eleptical-arrow.png b/utils/indigo-service/backend/service/tests/api/ref/render-eleptical-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..39157a278f2f4bb10caf06f99a43a0b94e7e6562 GIT binary patch literal 5563 zcmZ`-c|25Y*dB(llL?bu(+mj{$`YcyLu9FlWRJ3B9m`lIhNOlp*`-jgiOOImOC#H0 zY-K6SnC!BJA+pw3zVUwFzu$9yzq8!;b6?kWKj)n1Ip=7a!=vq0LrDezAR1_jynHkK<;r;2pwv)A$9jcxDC{KC z=2+VY0i66Dq=pJeipu7D92p9j3Fc;d$ioo`h--E=QPp-eyX4g_MO<7tCdXmzm#Fyf zsYi0`H;`G!mR5RX`|7+jFuxeRjP8l=`I8GTFZ9($$Z!1Be(jFXv%7I*}$A9`yZ=YFHa=rD+Wdi#ahZ7mjvr~`cx4Y_-krwcR z(-Fu>85%<(@f>LO1AsE@0W@(`AJE$|QpvKlZi1q@>yf*UGC~~q#}eT;h0{{5&-V&N z5g&y}5bqc>U$WK5ZINFHJV>ZE+v2iais-%Ws!asZqBYJJxf_693g~5iJ759DZ&P%{ z@MZ71*$y6snrm|}Ki87Gr`#I*3vdNE%%1TAS1K7UMOVA042AZ)NwV)eE2m&(v?28P zJxphrpcJ>`ljMl263gmS#=gE;tQ@Y(PL)s|q>HX)#1;Z2tMz9qHrvyuZS4B$Ve5Us z-WCKr5odDQ7qpkv&bI-ltWf+#Dg^xH0=d^jy1;{_^jEIJ!aR%<5*2V24n#>50_!I< zWK~{gX$7YjLT9)G7eYODNk`YZ);+} z;VUEG-JQ%PgI}*HDQbD72(?0B+$uwcm2wR@wuMC8C)$AnUdor9o+4HfaI^E;gc-wz zmfcj!{a82OtXTSqQsar#5>jj<6q^3p<$4pKz-WP%{-6fvTtt$XrNz352rr&?qHruh z>igIxxkcQ)fH4V!*wlH~977`{> zS=U*hppaNTYtWOa;M9t>J@8Owo?6Oomp=qJ`JbbipDMPvA)3b*GahF&d|?~bXsja( z#|jGr%1<7s4+yo!(@@)Tjq{s4v^hs4zA6RQc;}!y@O3C*of?J<=Q#mZ))7vN(QGO1 zS{HpbY+Wzvq1&cLEj%`sJb@8bd>&1y+~sSB5Ni~=`Yw1SW#Bq*^(sUIRzTB+O3BW2 z@X5x$J3K@m;!h;f-b;CXnLAksV!z1GQP6yNyBk0gJQB~hd9u-GH;WZfCQRYlHOSz) zj>*7<5UtlBF#$yruCEzM0w1=bG&`Q~Ss-Bs%kGsAnIq@W{E$4?eCZ#cNq;fKdEvAN zV@XX@ObZH`8p5{o<1k5{Eh^4P0h&&7T7!iDVpC!TzbC|ohOb50mc$$t2cV!ck{&~y9r(i;V+A3>Hj+G|5m0ci?A@~C#=;au1t z9jK!h6xx&UBE!#(LdG{rpY>7c7;PBvE z4mwJXcIlK6y6L0kbB-KIyhoI*8Rgxsk6CL=ygW~S%pu22%297v5cfd~BPj-D8Wa`V zwQJB9aFjhBm9aLQJ?J$Nz1?1zE5ifH#+kUI+g)%@$5avCy}(_AVHDd8Soqzt{9f|h zGAPL`@0^(3V`gQPj;kXSN_yh#<7v8dxpGDA|AJ$L!a%h=oD-{~BO zORYlx8Q($H#8wTLzq1t7ly_i%zt*Tm;;*AyTwJBaRS{h@kKNI{Ro)XhIFn>06vVbN zwwY}voiQHItaRpmaPElBMI6vgb+U7kW_9nV+4bpw90AWNF{jVIMGKtBnO#sDE8Ky2 z8Mz57#z+Q2tOjDsS!~hU9a!}sM+zB<{F#ac-S64_TKm^kL8iQKzwKybh>(MG3uVA| z_#a*AWQXHv?4Q`fnm1)MYfN>9^L9P|lJ!{RRzbghAaW4`;+a+5E4#Xv2_mWpVa0bA zYc8L^pK^8V*Fl-NNuBu5b{qvU*@%f{si!Rh>r3b*BsVUre%ia1FAysv z1}NoVslQq*v<6>gUvy#dmuZO|&efk{jT;nRsd3Qa6+$7ylC)4*$SR+BCNA@7Mbx78 zphbOBbi!fK#50z5ljhkA(q9D&n1xhcm}1V0i#t192jy9@I1^I5iTSnJaC60SNNkv1 z>dL_9OGx}nTJvOMl^F|_z(a02E(>g6u|nZ%7soiig3pgMb+=C&-1#nll&)Na(`U)$ zTCBPz+4l3|9bfL)FaBlxNMxc?1-0tU!hz`p>1!jchEu3M_p9bm_Su|V&7H9dDoiM1 zb&}1(8V3kQDRLTsRKa;~^ZEY=<-OQpb9 z78U#UTh|KdI1|&^v|QT8*dbc5BYk^QirBe9NB^f*A(dLyxNr~_tess|!b#yP=&13! zCkM6CyRA@+aDB8uS`?Qx8yO8QV0KiU=M`3bsW1L3K>KUo1|7q4B>r-A73gyhh+LIT z4vl#ml6jj;yLDqMj1*dcMAo-Y$?9EDc69`|EABQ4HKj%n{ss{PjDP!2722;~!I@x2 z1;W@qaEAiR?f8~!PmJrRp@i7=TlVvFvi*R0-@d|jy=^r-4gC4jMqI_kW-ZR-kj4bMVGQCQy`6xVq3mcz z!~>nRI{6uJ+QZK}YJU({q6*eg_^579#BaTMhiddcQz3hm$%Ri;UY~?YpI)Y(rw1Pr zl2T8tz{_c~>byhQ$g4^$YiDqiZJEkPvVF#vk+(H4EBmYF{bx*lED-Ni5;8B9f(OQq zVidf~x{QwGbRJPPb@%OR_ZQ^7(|E^<07rCZEqu_PnK8lKFQ(x~(pfh~t&VK+@_e=Y z5esaYiuZnkFZjPpyiLyUD*UILW>!8{ex~@lA1uuqIq-Rz|7Tbd=ORezaCceK61r~1 zc!_x>+{Yh*o_CXVJrgLswnZVCfR1APryKoet(=nw^KLq%8*c#xIi0WYykEJOpDPx= zddm%*!%FGCS^8t}O|H&J?@$*viD&C5Si?~4wfFu_zy~UGjRl*$phJrlp?Gxqe;xU~9P{>`hqhuW_pyp9)x#=I>U%ilX2jo;9p_+*X3N(aj0 z8p3`}yWAv7GSv(Kj3+uXA$bW@?Dja_)bfVU^|%=KScSEUCCBgcKq2-gQwGy#M*{T7 z=TJ@0v4Y|^n@_6^C6)(`b}m&#kt(O+sfW*;MuRE2nWU@h=hJf&^IkKdHkw zhlx~Ms2lAibA>9eYOPhX9U88)>*fp%=vk$iTp0dBEtxfQC=Q}@p(f3q+Z4Gk(H zqSd-4xG3wCRALR)I8yqSj;R#DF*z!yctOOaEuJ!Iyjmx$EnF&HtK1qX(U_7?T@`pK zZoZGe))?Oi*jvO@ zStn}svul$s(*NUfz@Cyfh%U%!`B~>!n$AIisO0-5jsy5yqccaeWbLorOlErT&06Y? z1X^9#ug=`v#nwEel7#-|u@8@n61h6^TsE4Wkj9!DL!~5ZqojMP^PO-`A1h7(8H3aV z{5cEG0+5FXv0?`Lu>$CEmpGY{p{XVSI#Bs?3F*e)GIFNWX>?Y9vI8_`%k%#15JZ2ggFqNF89*IlkU*T$yy{1l(_9v)OSP>v-a+t$cwVI4FZ3Jd^(pg zaF64R`@JVG{o<&=h%P^l0)B@V-T(G0P)xx#`TkJA*ge(liSprKW)mq$uG*_FIIX8QcH#?@o z9mp@#1`>OiKQsj<#X33MHNa|sGfD7`C*)~0@p44xpUvP zw?paS3b7O@>uw#Vp=`16#K#Wxcegc0z>0C@^UMw9X#5pvl=<1$Gx_6*PyGvmyD zDlgZ=Q)JlcK33JV5@%tx8SVPu@~9qV`%K#FB$T-8RLO6z@7t*x8*}= zoBTWvg&uRq2)=AlCBE{Nr=pwR5M*ycVyJ9y>%^`nQRaK4G_LFuMwMpa{Ci09#TtZg zWge5(QFIRBX``FE>M4_tU1=H+RXJ&c^i=$=Z6fkVSAw24SNW=>-`s7fJ#yAY{v?C* zWt_^0O^B>p@~>-m+&%SKzq#`CF`H$!$yQ?zS@7w0^*=mlL%^zk)iopk)SjQ@Z*%7g ziqC;yIX7+`w=&w)t+#o0`nLwVHVVzh_{`fG(YA1ifq zbL>yW>XI_z`-o;GPo?`_0QJOce_gSV!EjUu&+G@V-hb7DR9Yz0(g#svcdz=?KOE^9 zKw_zRA-jTBU8OR307xKTA1a@%1p6rUy!(s&_h6@=C~SADf0|Clqv-Y;`o~Xw6e_B% zmAK~C)|`75n5scCNQ;z5`paJR6B{jq^OGf^l zt|U!vp0Z1wchneZzqx*C_RrAqteRHGh|)V|N@LfzM)XFaK2Nk)>DcNnw%;!@&Cb)t zjqI!pa#V1Y-ZRRv#R`UvW}DEq-)!rSb@wmjfTO*)Fo8MVTQxV$6yO%-qsRi6D3IeI zHAHk(%U7Nzs-Jor@cCt~EvNI(h*c;fFT`rtnmLjGq-WHwPmD6#>9e45?4wCGf(5vD zCEbZO`gBeq9Gjw7OcgQjhkA7iC+fltVc0qK4w(Dx!<*)UlY7x z=zhq@9!A8zyUkA7BK?+=H+bL#qr*9(=L=oZevn$FsaZJSMOfeGU`PaN(VlwLAHI2) zrFOImwEVss7=FBigDH828Jus|O&I}|xEi2`H^g4yVbiST;pKzsgnM=h4;ATCW8^u# z@}~^l&AG@Npjo_fze{2AbNE9U(q?(M`SjIj%FA+a>Eb(?>Jz#BVhGyTfj(YFJ@+YPH;5iogT^a|Gk`Ox<5=I@}P zH9RWVYh2<=z@{&&p2O$6^5MxpTe&#bv_0gv_H^S$(nC%8mNaTmig*P>e6wyJ; zeeg&=rH*b+?sM13ZL=%<>qjc@_Sw?g!N%yaQ%^&o@E@gZMjs6TN}P!|ST&o-VeHk8 zT7l&^)f|#kT8Zb2_#T-+U0UeIM{