From 26e8f71db35c4ef25c5d23b84ad763088eaaee54 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Tue, 17 Sep 2024 11:08:27 -0400 Subject: [PATCH] xlights_2024.16 --- bin/wxrc-3.3 | Bin 771048 -> 801528 bytes include/lua.h | 8 +- include/luaconf.h | 9 + include/wx-3.3/wx/app.h | 43 +- include/wx-3.3/wx/aui/auibar.h | 31 +- include/wx-3.3/wx/aui/auibook.h | 2 +- include/wx-3.3/wx/aui/tabart.h | 7 +- include/wx-3.3/wx/buffer.h | 10 + include/wx-3.3/wx/checkbox.h | 16 +- include/wx-3.3/wx/control.h | 2 +- include/wx-3.3/wx/cpp.h | 14 + include/wx-3.3/wx/datetime.h | 10 +- include/wx-3.3/wx/dc.h | 286 ++++++------ include/wx-3.3/wx/dcclient.h | 176 ++++++++ include/wx-3.3/wx/defs.h | 16 +- include/wx-3.3/wx/event.h | 35 +- include/wx-3.3/wx/features.h | 2 +- include/wx-3.3/wx/filepicker.h | 15 +- include/wx-3.3/wx/gdicmn.h | 5 +- include/wx-3.3/wx/generic/creddlgg.h | 7 +- include/wx-3.3/wx/generic/filepickerg.h | 74 ++-- include/wx-3.3/wx/generic/grid.h | 216 ++++++++-- include/wx-3.3/wx/generic/gridctrl.h | 8 +- include/wx-3.3/wx/generic/gridsel.h | 26 ++ include/wx-3.3/wx/generic/textdlgg.h | 8 +- include/wx-3.3/wx/generic/treectlg.h | 2 +- include/wx-3.3/wx/geometry.h | 204 +++++---- include/wx-3.3/wx/hashmap.h | 8 +- include/wx-3.3/wx/image.h | 13 +- include/wx-3.3/wx/list.h | 406 +++++++++--------- include/wx-3.3/wx/log.h | 3 +- include/wx-3.3/wx/osx/app.h | 2 + include/wx-3.3/wx/osx/bitmap.h | 7 +- include/wx-3.3/wx/osx/cocoa/private.h | 7 +- include/wx-3.3/wx/osx/core/private.h | 4 + include/wx-3.3/wx/osx/dataview.h | 2 + include/wx-3.3/wx/osx/textctrl.h | 4 + include/wx-3.3/wx/osx/webview_webkit.h | 2 +- include/wx-3.3/wx/overlay.h | 34 +- include/wx-3.3/wx/propgrid/propgrid.h | 3 - include/wx-3.3/wx/renderer.h | 5 +- include/wx-3.3/wx/ribbon/art.h | 65 +-- include/wx-3.3/wx/ribbon/buttonbar.h | 2 +- include/wx-3.3/wx/richtext/richtextbuffer.h | 92 ++-- include/wx-3.3/wx/richtext/richtextctrl.h | 2 +- include/wx-3.3/wx/richtext/richtextstyles.h | 2 +- include/wx-3.3/wx/richtext/richtextxml.h | 2 +- include/wx-3.3/wx/scrolwin.h | 24 +- include/wx-3.3/wx/simplebook.h | 6 +- include/wx-3.3/wx/string.h | 2 +- include/wx-3.3/wx/sysopt.h | 1 + include/wx-3.3/wx/systhemectrl.h | 3 + include/wx-3.3/wx/textctrl.h | 20 +- include/wx-3.3/wx/tglbtn.h | 1 + include/wx-3.3/wx/typeinfo.h | 19 +- include/wx-3.3/wx/utils.h | 4 + include/wx-3.3/wx/versioninfo.h | 28 +- include/wx-3.3/wx/webrequest.h | 273 ++++++++++-- include/wx-3.3/wx/webview.h | 12 +- include/wx-3.3/wx/webview_chromium.h | 8 + include/wx-3.3/wx/window.h | 9 +- include/wx-3.3/wx/wxprec.h | 12 +- include/xlsxwriter.h | 9 +- include/xlsxwriter/app.h | 3 +- include/xlsxwriter/chart.h | 3 +- include/xlsxwriter/chartsheet.h | 3 +- include/xlsxwriter/comment.h | 3 +- include/xlsxwriter/common.h | 8 +- include/xlsxwriter/content_types.h | 4 +- include/xlsxwriter/core.h | 3 +- include/xlsxwriter/custom.h | 3 +- include/xlsxwriter/drawing.h | 3 +- include/xlsxwriter/format.h | 3 +- include/xlsxwriter/hash_table.h | 3 +- include/xlsxwriter/metadata.h | 6 +- include/xlsxwriter/packager.h | 7 +- include/xlsxwriter/relationships.h | 4 +- include/xlsxwriter/rich_value.h | 51 +++ include/xlsxwriter/rich_value_rel.h | 50 +++ include/xlsxwriter/rich_value_structure.h | 53 +++ include/xlsxwriter/rich_value_types.h | 49 +++ include/xlsxwriter/shared_strings.h | 3 +- include/xlsxwriter/styles.h | 3 +- include/xlsxwriter/table.h | 3 +- include/xlsxwriter/theme.h | 3 +- include/xlsxwriter/third_party/ioapi.h | 8 +- include/xlsxwriter/third_party/zip.h | 6 +- include/xlsxwriter/utility.h | 8 +- include/xlsxwriter/vml.h | 3 +- include/xlsxwriter/workbook.h | 13 +- include/xlsxwriter/worksheet.h | 169 +++++++- include/xlsxwriter/xmlwriter.h | 5 +- lib/libSDL2.a | 4 +- lib/libavcodec.a | 4 +- lib/libavdevice.a | 4 +- lib/libavfilter.a | 4 +- lib/libavformat.a | 4 +- lib/libavutil.a | 4 +- lib/libhidapi.a | 4 +- lib/libliquidfun.a | 4 +- lib/liblog4cpp.a | 4 +- lib/liblua.a | 4 +- lib/libpostproc.a | 4 +- lib/libsharpyuv.a | 4 +- lib/libswresample.a | 4 +- lib/libswscale.a | 4 +- lib/libwebp.a | 4 +- lib/libwebpdemux.a | 4 +- lib/libwx_baseu-3.3.a | 4 +- lib/libwx_baseu_net-3.3.a | 4 +- lib/libwx_baseu_xml-3.3.a | 4 +- lib/libwx_osx_cocoau_adv-3.3.a | 4 +- lib/libwx_osx_cocoau_aui-3.3.a | 4 +- lib/libwx_osx_cocoau_core-3.3.a | 4 +- lib/libwx_osx_cocoau_gl-3.3.a | 4 +- lib/libwx_osx_cocoau_html-3.3.a | 4 +- lib/libwx_osx_cocoau_propgrid-3.3.a | 4 +- lib/libwx_osx_cocoau_qa-3.3.a | 4 +- lib/libwx_osx_cocoau_richtext-3.3.a | 4 +- lib/libwx_osx_cocoau_webview-3.3.a | 4 +- lib/libwxexpat-3.3.a | 4 +- lib/libwxjpeg-3.3.a | 4 +- lib/libwxpng-3.3.a | 4 +- lib/libwxregexu-3.3.a | 4 +- lib/libwxzlib-3.3.a | 4 +- lib/libxlsxwriter.a | 4 +- lib/libzstd.a | 4 +- libdbg/libSDL2.a | 4 +- libdbg/libavcodec.a | 4 +- libdbg/libavdevice.a | 4 +- libdbg/libavfilter.a | 4 +- libdbg/libavformat.a | 4 +- libdbg/libavutil.a | 4 +- libdbg/libhidapi.a | 4 +- libdbg/libliquidfun.a | 4 +- libdbg/liblog4cpp.a | 4 +- libdbg/liblua.a | 4 +- libdbg/libpostproc.a | 4 +- libdbg/libsharpyuv.a | 4 +- libdbg/libswresample.a | 4 +- libdbg/libswscale.a | 4 +- libdbg/libwebp.a | 4 +- libdbg/libwebpdemux.a | 4 +- libdbg/libwx_baseu-3.3.0.0.0.dylib | 4 +- libdbg/libwx_baseu_net-3.3.0.0.0.dylib | 4 +- libdbg/libwx_baseu_xml-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_adv-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_aui-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_core-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_gl-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_html-3.3.0.0.0.dylib | 4 +- .../libwx_osx_cocoau_propgrid-3.3.0.0.0.dylib | 4 +- libdbg/libwx_osx_cocoau_qa-3.3.0.0.0.dylib | 4 +- .../libwx_osx_cocoau_richtext-3.3.0.0.0.dylib | 4 +- .../libwx_osx_cocoau_webview-3.3.0.0.0.dylib | 4 +- libdbg/libxlsxwriter.a | 4 +- libdbg/libzstd.a | 4 +- share/bakefile/presets/wx_win32.bkl | 2 + 158 files changed, 2152 insertions(+), 921 deletions(-) create mode 100644 include/xlsxwriter/rich_value.h create mode 100644 include/xlsxwriter/rich_value_rel.h create mode 100644 include/xlsxwriter/rich_value_structure.h create mode 100644 include/xlsxwriter/rich_value_types.h diff --git a/bin/wxrc-3.3 b/bin/wxrc-3.3 index 4eb37d4e0a4bd1d58455adccf846c6db0879a899..167c255fd441502ad99680dda7a68bc80015edbe 100755 GIT binary patch literal 801528 zcmeFa33yz^@h>{Uc97X55)5VwVmF&D0|J9t1bAQo8-&4NR@oSXS?w4LOoBl|J}{$` z34)*?LI5Q!QGkFFA|e)n42~oW!D1I%5Mk>9gOvbAtiHcrRrfh(Mk53F{olRseIM{y z)2F+-s=BJWx_UW%mVNW!Be7U)t%6u=ZTt?4#foFG5$y|+UJrTe;Wrlh5&!KwfWI5? z@rVC@kiZWT_(1|cNZ49{3pB0I+4x$pLP2~-_9|C=9v*`8p*s3lS$W}t zs?#qFvU2(R>fHjtx6HEVo?V4Pi;qhr{7>;!&Y6AQyxH^RIh()EjN<#bWs1*P{|(~r ztXZ=vXD^&Jd)|V|1v5|2<*)oB#kXQ3#lq(tNoJw1tekb>g864(aF)%@#kcFQwWPgc ziWGp)(f_ia*xp%lFSsyNNG`tPeysTVeymvdoQorhzp}FGf{V|-;Ec+%FF1293Ucx7 zxxM1+fQ|A$KCcNM?QRSJDk~=)blgEwMgPFQMDkeflK-6j*=P0#{tNYb*4(g_L*wgL zY_S;dvA+9{crJDi_^qrwe=Zw&_JYbYt1g%|h`)ZzU!kqT=P16B5nN1GR-QMr^1@5b zKYi|bmGc(NAB1nf;!9d2e2(H{|7wWf9IV%D`Bm?!^6Rm7%;&6r7Qw}2W#t(&7t9PZ zbM;ZNkK%Lf<#Uw3u%@QS-}&dyy};$?;+t;q<@7EGuDTDNVzJQAO+NgnBjb|}Kh74G zTRW+?+~Ar2EnK9}#2=-xO)OSjN&vvoZzk|N1FNXblh=whcYP*?-r zLuSrDeeMPM5o=jqyySe1{2nrQ*4&vxpk)#2E59@F8^~c@hyknbYvA{os+sc_{QQu) z^JnKr9+q4DbE5cT2C7;k{)4K{ID77KbLXCS`rL*2DMTTFoBvUt6Ywu+N9-^R)1c#Q z3-+a|9eeOt*xA{qvsONR(X!Ua-_i4CUvSvu{G4f-#moK@@?-JNows1zd2?sYJdYNC z#_4DA=i-Hxr_a1_c2(uV^UvFDkFk4*LJh&*Q84)}M1*=znOM8!< zJ*#T|*$Xbo-(pt^ocwRF9_Y!}&eFr#7@{v4yL(g(QjdNrXy5EYRLs`jtX*~)JKomX z0kG1~XRH-#gQj<~&-7bA{P%+devrTq68JwMfoX}OzM zZ8a&tR}tV#O*7zw?E>kAg|VW=8#+$>@qWXpgYtlGmu1gqPDLfQ9A%kTS&zzD2#U}e6X7-Nch8vw9O&y-~$?ka{gAC)jeoc#i@@M zZB>ohuKgwC_fZbGX04YCVu@5&B4u?^HDLBeeumIM(ue9Lr#=ppP|K1O7@g9eimxz_ zVuFs$esj@_1+gLI6_xL{f!x+0Uy)nCHkJXX5RlNGlqQp;s%U8aY#z{w>POqlz{>oX zSiXOIm%n7&d*ut?slAWi_Z{qM&FwvfB)_e_zj)ixiMF@6EB+M~7+5(hJq_#K1k5YS zh&>pF9JCN;&;E!%Z;9!Tk4)QNN)qY)+xt;BT{h}J1u=6h@I2as(7`+o^#|fKW)<=oeLswkZvoZ!XK%=AUs%9H^CDK*K>;*_CwT@NQEAUuQ zwD?pDY!1V`Eg64QAnM|eHWw6mjQivn1c=EIxJv58f#gF)@)Ic(V{kCDTwQc;0Dcex zk~Nds$fC}$u4EmGJ}A@zCjDwQAQk`0A>{-Wya1QuMFg?ka|JO!{uL|%J_xw_%%RWb z=|9px>5o&>RzO94fE2gvJ`mr}n~vSNb%jX~&{Bj}ByuQ$hq=vx&1rh>kG&T6zJ)!s%5t6>Fb zfB^Wdl65nroAkN{QDBZx;Cf{uEojV2sV{A4R3h)eYEW9PM4CwCw@O3+{8q`@M~K`z zhzN6p$ooo!XiS~dS2-q0z0=zS`LXdGtCkcbz3Wk@Xz|HnX~Ic0GN7ysIsrHtt(+v0 zX^NE-0q|RyrKk!_^D}JqZ;&HutCOVS&ekKT35VUV-c`Z~IujSDGn|Q8g673dC|F@< z4r+j%AF1@sHzNIc$TT$q)Gh#it7Mf3AD25m623Jb<_KAKN)RC$^E0V$1;c_)?@{E( zS_(ukXQ57!7ZFSaGQi11RZ)j>G98)bvyI7ay8!sD%u-YZ=IR~_=1k;R!7!Qhh&x*_ z%n=UhdsYb}If5ZU(=L=mFy*KLcD7e`>Xn@YGR+(TYUm??-!5=|D@zhJkIjMH&Fbaw zju1CR!HVY05bYR6yQ`{yj-o9k+6}YN3Y_1{5}?J<6f@00oAeGuj%_THd!o5J5(qX= zQeTdW#p)!7Zd5ccolaF1c*8gq<+p1aMjXEhhr`lDO_vaQ2{XeHoy~ns-=4vWQk3(d z)%`TVAIt%FO8W~7ZyH=EV!n=rTywR3U{y7{J_fa|sCFw@6(@|S?lZ&`HLNmKiltMm zs-_zms*2AlN3jaGyar+X9gD}Y7^RUv*?{I$K+q0GiMm@w-8G$5GFsXE_3G8*pEV}} zCgG2mI!bLI-Cm7+vj@dY+yE@6m8M$>pGY^bc>EJ)sw19F5^w}J+oHa$YR zj3hfXOBoYM%++C@?MBQM#`iTVxb34Mu?})zU{y8!Ai5i8g%H>w=miOlmS&LUYcb`9 zR3*I(_$-@ndd(=&UKlYmRyDt3$&QF#@lhILKq2r z(yapebr;R=G{+k-h&z4|;B}H67~F#*u~A1UQVCfsj>n$}1SO%2nIT9|bx7+xCIdvX z1rb8XbStr#qfU1%J(4BSmY$H4;n>@pt;y~4C=`6(AWB#Jw;3NI!-?ii7Rq9Ul~oTj zW?;1f68)9NKiza)-LQA7{q`nteO2}5*OS7`e)We0hCd{TnRIhlEEyLnWkL8^95lMT zMgXE!v@%h-FF7#z1Y`t@Vb3y~CjgN0Dx3t-Ii%Q6Gb_RFcoMB5U1l^gNs#=gfMttY zvB9~LsJUN|c0v**eC#?TWOg1hpbla|Tcmj5O<}QZDxpkiq>Yks_4;H)an@>DxLKR+ zwXM@mO)fISb2@cCPc5?BTXBi(9-`bI!uE8Qb=;hrQI=ya`EU!*uObe1JTKR@@O&)k z90s)GJK+4%?QHlXVlAm8+%n zwKIVOQKQH^S`1*siuK)S+YbLG9B=hX!fr3~iP>>W} z40}&{6GMG4ne>Ryx_u^--oE&|N=W7?NU$7)aimUQauxLGx=ulF_lbf&Mz9GE0tGSdYQ*y&vjrlBDIbb6J1unO7-@(UDn=Q>V7GuX)Sj|B>1 zl|VsK_#zx$(wh+KgUO^vd{#kBCcVA!ca@OLQIKG1!cb8sFu4l)DR|KybjTZ`ps5-T zGX7Bo9ZLn>8~WX{TNR=k5ay**LIp|4lx~&$4n{h&18R20SI4@%rQm^1D)XT@5pNEjgAl6&dFmFil_4W} zy6nf=;70Pk1GxYUwJ#Yb!r^6Q>`90Pgop$M4tf(7-YC_}-h5BG!aSl~4)^V_NXA+b zw36{UA@T&sQrN*lv{G?6{;%uUt{@p-9kv);aBwi!09@j=BocM;)!P*m-QR(@l(8q` zQVVsigF2lFu0L)Mi^$%usac^xwX6wZZLhT+-43Yx%=(uLjTSR$v1^*&E~R#=ekrgf zy{iFl4VlTnJR2z^f5cg9v#W3fqwht=nUYZo9v3nUJ1kI#-zpI4MJ)&hr0j!QN7w@Y zb_6n7BbsSW#c#{37zRpKRg&>+PKKj(vQ%fG?@2>O$ZRy_EtEEwouE-o1^K!cjZ=O4 zty(O6N!jP^p~XnXT0|UGE!hB7DSQVy$s9HzvrD;IB2_xEsW%2>8OUIA{S^sAShVzow3^KiV!G`2Z;9DfFl)LO z!jKtrF);b%6)A6l$fSJ?puizf>NIMOYrNlJL5Le5#Ft2?S-~6wERM8f^bHd>gytC& zC0z)>@vF?0ScbEplyIwJYhbDQ!^5GVB_jo3v_?4n=M_k&9z%oPKyR%^Z3x)QW2#)0WBsT1$6ZEFUX7;+kH zMzAV3Q8IuvUDao%V|pPdv4qpTs=6C>uq+_L0E6ZdC?ynz3stt}z0r{HlE zI4k>w9b7hmBiKX&the1*n=P%_0jr(T$?$%l{TyAFKSklV=#tNDiD>a{-#UH>Q7frxzg4dUl}undjq&DPJx3Z zS%E``>$4MXw=l96p>(ap>Qm<92|t}6ZZ3@MIg$uGA`U{)yNEPhcFLO^p3v@za4@#M zQgSOL=#*Cr2`rN=sy4Uo?%+@hZll`#ey=d6+WZ=m3_-XV5ynX+;+rzBb6F{xF)9Z_ zh#cjRyZ~)v{=_=z_IWbu{>>Su6-b0l14hs<$3L5T#(|#?@IfmA^r^eUxk+<7y}7`P zX%&Auy#x7Rr&U~82&PrXehookD@a%U%`1)%trASD%E{#AU__T4goLgx49Pf%j)4W z%8CKXA22gR-D=b|F&L{Ff$j$+(h~QY4PXE+pG1(~O!z|s3U>cs6fMOfOMO8=VajZY ze3f)T<{F47%LEp41`x4{p+&M6P-dp(fM-Py900QxK6FIX-HnTBAeOriJ`cI0zB1pi zYicLyl0y!h#dUd?qMeA7VwtflN7&5fr`pFrIp!?I#~D67Ewhf(te9q%FzX;@4c5TE z=pR^zBnbBkC5@~B>6m)X;cS`^^o}fZD$}*?EXHWL z1f2^l=2NG4IrBQbqxoZAP|UFqb34;8!*gH9KFvia#xV?P86rogWYYG=Z;-ST_h(QB zRS7fLaX|qP90~+fF6fwFLAkc|?JQO<3TVzK#uToHP)(3<(p!mgOO46F)MjN->r-m| zuL-pZ;wgzxW3e`t)L0B^BBI@e+8Y5ikIAIRW+{0|CcS?lW0i<2$0-P{JwIb9Wtvke z?cNxrb%G&q8S9A45F1F0XrW?KUJpoMe6Y&w69u%ANhg`H<$?9I3vjxXP&&yPf1oQw zAdXx!<7G7A50p}*6KCp#mTpx^uk6l+Kya5;W$0EPu*wQ)=%#N@kl8sHVGqLLBfTh0 zuu!eiq|pWlqT2}{*2J{6@XUC2Uu)WreJW|OnER1-`zWH++arZHu<$w&_n;AUN-1f# z&Y-C6js=}>dz;8_J10;JQPZiLs5o;=mfD~qe*@m1V!b&+0FvRgnAG< zh?z6)2@9EPR(>K)A_DUk(>OyS$Xba^wfv+Lx#RLdtt8&%9!<;A<{vaozi57gw7N{t z4ctsUc=yGT^6(s1bJa6t;82~9LR2FgBJsY=k72`Eh6LA=WhVLDyEJRGaw5%IPtzit zn5KpEPd=8W3+G1D!ue~O7DwB+Klp-o#){s`0&Nb*f>n4b@?`5k;xjujs&W7**(}_1@U4w=s*7f3FwCz{fI5FZ1VKs0ka6})2)PqZ)2%>|IR>Y zx?cGVfE}(EfU7H>BsM>uggY?Q4kvy$?!q?6V57u*Tb7pbhha9hf!WEeP;D3Hl7x2Q zeK6U!RTuRGJ7$oFP9jn|0xrmaQCYya78WCb{$CK z*zSejUQ=3fE}$Lbm8>~{#nvpESCa_@Twn?+{qnG&<)TuRN&`#HCVvW5DjDAZSepYJ zL?SX7Sh;$&FO7sB@(uz$k&XO;KHz{-@nmK=Fh=>XESNii(_y*?m@-@)M&zdImXj+m z%)`_$V`S^@kgZW=nm>lf)2&i`OIR!mT4?0PpkdW3ja2Z4KKj<(o5My*#-_>;Va%3b z2+RrI4Ux{WVIA&a!!Mz4!-jjERlo#nD8MY4DsGQh7l>q0ElHEda6{^sGL3$qcKfS? zh=}{<92T)=up0$pWj#j*Pd)fL4YOpIFC*x2s&)-FS_x`qhA?Gc^N6?|c+W=Mob;9l z%-ZbTKVpo-?7*CRM9F16T3Ptr6;MJrb2NKp)Rv>;$xy~E0&a^-`$fPHe;5k51?kM; z;>k6<5iC!m4@K!%;h57Yn!n@}X0FT0aE(5WxG!d*Kcb&!FZ>Cx7m-uJ9e7N69f3gn zR;E$22}&?`9xdET`e~#C=^U(GKnmU=5MF{nctFt~0F)}F=mvpxz*6CPRLEc}iCU42 z$B7{@1W)29P9qDtMRQ}w%6$$k*16Z$d5@vNfu-h_+rlm>8CL=r=tW(1ibhzzOw-b<<|7??o0HhEsC7=IwxSu| z#ayLrH=rN6w%xQ%*tP;CE^YhteVA81XU^ty!%`ggPXQ2V;l4xD!u{WfU<&NhdKiQ| z15|3$j!Lz9+?gnpxs&j;C2^eOpVtOUd@k*KrhsBj4VD%E;kf zI2~{GS@s@|h9JKQ`54-zcw(rJQ3ah++%3hegfe5p;&#St(C+PUWEP>0DvFJzX2~By z?Mg;7fI*Qc&D|N1kKk?6w6Jg;(xG<$l{1!P?R<#W_%7NN;=4qMkBboBHbQ(8q%$q* z4A)lil#rKbD$VZ$ZkUI3%vgfaI4S9EAa7+QW5iffiK zwhdQ8hw`j~@U#fR(}7T;+0Um??Km&EMH3_DJnsk9tdOlN#?P{a(mI-5K8Rl#-eN5J zy&x=`kL@uqEn(!-?}Y*&6x@X5-vN@&KS;(407Ru89i}b9ABXZN>sc;Xn>px?p|~M! zk{Qq%TCqWjuR=3iv1BX^k(={0&2a|INML?;$V}N}9IFA=Lcyxz|7jr?qpsBAQYA_# zb4*w)qqoEQlMrkBbcNSy4bq=?2&;`MSFF_vMPTz~qz#SW6_ztUG846})*8Ai>E9Bz znl%I-O(BfA=v@)7pgu>_!o_KtCSzu*rlnDbYFb9)eVOi(y>XGb-#(hcv%BS3t>RNn z7neB9QInyRlvj)_)qt(BRI4cT#mTA@me_+R@NiD=~gz^9E@T?>M*mC z&R&JN%;_{R_2B7Jq*LCm_?!7X7#o}o$%x^d@(w^Q%L|hEDNSq;Levzi+6Fa|rsbK9 ziDg25EI7uV2a6tj9)vt|XI`3_tMX@`kv|(QD<8=r+avaJFphCMdpY!NX`9%~zM2+$ z8LMfrmu)mH_Oh|2#a`AyI#VKAZcr_|82z*k>0IT|n<>0GFxOE>X+B49^d2ex@}{7; zy#)ER|6m#y^m?t)Kmgg;7y}; z^nHaYTz$B&2vwN)&%Z+^-qEx$aY=-UKU0vpVQA97Er`|I^@|El53<)U3`Y*Pe$g+( zNZFmsC}CN@7~r7s4cm%W?O2K#lK^4hn0;d)D=Zb9NM10jMrrQ)#b!^6#za2X1~Gu& zDzpRtFCA%^+ogug3GZC}mz(Ff`uE>tp{`$CK%BEfYn`GYFqm2jsLXn~liL4s>K6^t z@`O~vjTa#@l0@2AGhMc_T^dvj2F-Yq0Bu@*KYB52Y=eCQW+f~koLj%x8S03Fn+*Ys zs)B12>G=&R7iaJ9DX}Jch|!_QM?J6k-N=WOq#FAClu{`}?}LS7`p z12A|Yj7jy0fCcX&q_gIvy-Ssp~3q5ojEt&Av`@x~@X6f+BGuU%NR4m^a$b>%u)R(Sd?Du+-eq7`9t7 z(z@?O7<0`V(r&@)XX`chWrq}RrnF~U3&axyBZvF8}%!@{KaFJZCnA!0JjYPAR3#;H+~9I8~X zX!^9E-BQJLZ6qv7ypuYXHm8SbJmqdqs220mbaVbi9-^zU05Q>Z7=6L|SR`$LY zHPB_>fWWsHs7U-8MIjPz0E*1>VWc6BH0vsVI+p3~0^`IDeJ@R3^QtXG?81)A&Zj)j?hkjXD+@3%_bo*)K^hF2kM8O+a zYBt2)lj}K>F+eY9kCA`%iU^O?O~0mvg}0Fooznlzd{v15B0~J~2=NOe#Lq%HbBBz4 zWq05_8<;I2gIh7*`hb`={HyVSB*h014q{}f8U5?9;gYc$zz)|ip@(4Ow_K{KS;`0| zh^y2*^VpG~X^WtF7<-&DOFfooI7_|g8k}v)zP|$Jl@YbOlSDbCOBLo?}$cSyr< z0|Ts0i~)Yd>`yySd5wV8hGSa8dVZQ&VttoVPJm7LRUKx1?8e9f?5M|a-~)^$&GDfW z&ftLGKUfp_0DvBS>A*X-xH`y}Ce|f!N*}dGXv|dh z0zxOet)D2uYn1jx&}Q5P7u}}IuF%M84qa%vp&UQvc9@G*ZG)JEzPygw^#avOU~_!{ zg_n*LNt+fE%FGXo+xs+Mi>Gy)Q(T#SQH$lli(2E*9@tkhVqZ+Byu~yx?2;3E?~9Tq zM)Q=Wg=&YUg~7jRTAI|1v@aM^-g-19E7Znc*{0UEGaIKihNIKjvsHCz9{LE=Ws{{wFq;TU6xkYe=YgL^jlOFMjtm`D1^lFf?N=W9M znh-2~FK|bJFu|JnwGwiUI1Rk$L91G9wc?=Fj(GbY&E&Wzec^$FX)P;@18XgNRbv?m z8#dW3$d@W`*pgoaww={W#=nqZ(VG7vZ4Z@Yy#Xdh{#ImYm5jN$-C$~NMl?Dcs-uYd zUw%GR|35V?>R+O1QGctZMg4z5Ix{tgp`oSxbAoT11D-X8+g>XYc?u$R66vFOGtfw< zcQFKyV?q4s^bX^LJ+D&@?FA-Z^rma0{mB56g@Hu#(q#UTR7Q?eONsst! z29rteGW=a7By&tiu-x<jkWu5Tg@wcjySq zk{SxM0Kz=Kb7(580uz$_r$TtS2gck8*Jjb0dy!UIWxoPN0T11Vm!CzGugEo@JZ@DO z*d;>mK&0*Q8u6CV^K*BDX{auiK`4YhSw12`R%J$W28eQGF()&Dk;)tm9-ubuf`Z_goKaNxp;quo{3}Z%j*)BFYrqickE@A%de`&sHD?M zS+bai8alPS5{m|`i!s-j8@A&^D@!H%M@(US=hS%|6XZn)UXz(6 z7$RGT2t9+b%&t6im?K>MgOG6V_Orb_V}kf&RdP`L;m*VJ{PSJU0jHd+4$nX1{ISF* zVtji3xQ{mF1jsYdatV`M4q#Y>hNBT}=5C1q${xV6S3K97U7--`!piQJ%=YPMmf0xG zU(}XJSJh+uV*#Q&Sb1Y8AqAh^BSNY-r%0mgY(-T{R8O$oqR4dF;hJB_{J(_xB+*J> zP+^%;**!u5zWbzi${3gk^Mw$BL5O8a=n1I6a@a04 zexrm0Yn>AMqaqYf`WYJOT6D4Ii&uRk%ojog1|gOyp&1cEQe!tIBv`jrLWe3sam~L9 z5tePB`J;i%TomRDAp(OC%aqV(SA{K-8cUxR(FxWzrZLZ0>T29KTq`%*LIJwF{SXNYfzme11XG0Tk=R@ zGiW&FEp?TANm2@nM_~BMY#JHYld1UP%sIIk(Q$+jXtFqrSx=E;c$AZn$n5bQs!5mL zRjO&1E@92jp)NNc5DxMXls@|3Cq+ckN8d#{^XPY|DV?rOYf7iPn>Arh-%3+@(Pdgw zdeMB=JTkZD*xZb0*fvyq#PGLK++z3}Yg!Edx75o^)TW&!36=+QGrkKQF|7xeg{F0n zrp2`6O^R7S8?kC0r4sYbyz4B+Uf>YiVX&Uqne=c|sp$G?wZ}>tBhC>_=mNG@n z87({GZ{YqO4v)UvAA_O3A7RHl8I|x>;Cv+1$@#5<7i)^hGABjy1=v?Y>1i!^Q&m7V zDGj}`WbE|>bpWKhApyb#tMISLJCV}I?oFWTX1;oSY;H!hM-T#CP_XuOTdXf3k=cUP zlo!*<61)?^w$v=8a6|{w$^V^FhBt@KuXg)GF8+w#|9b2{hnBa4mw4qF2N#W3`lSsG zl-uN#N4g1rMDr7HvwUrvujui5+N$0}YFbZf%2Si&23>hYN_h5h8E?v)gKAyz6;KgY z0sBYF&nJ9Jq~o}CGTw-Yu?hACq*aXxe_9hn+-#P8YE2r#AO<++X0r=SOO;8GmjIIR zamM!}Ch!gxz@n-i|3qpTa8;WPLPg?f9UuX8xr6qro>Iv6OOa*%QW((Cj2>jbxY&Aq z)y_iGYRrA(LTJgj8|nb|QipxAFKIu$A9AoaM6$p}UePj&2``&`emULyu6VHgk2s`T zh3rom;PR7q9^~T-1T2AS$zDVgk#&7SdBp2MzJ#c-*F{#Ch84*V-d~ZY5pQ*6 zfkUQ2;6mkTJ!l;a32*(ie#}hF68x$r^HT`T8AGpGrbPqhO-Yaj4n@ICupaXm;)r$N z;zdg9q8f1Eba7`(%zVtJnx$kcl&H>xVOUj)w9OPQf;4jPr;auP{o&jx{bLdZ-MrD) z`M(m^Q1dF}m0Y5;<@iebBF)y)MtRe<4=nYYKY@(Qkr_1|e%qU90 z4v@?cyvrZA^^RvfsN1A|A>tpx9;5#5Cp|zo#P|}m&&>n4(BFNZ@^fEzbi(>ID>@kG zIkO0-bC9D~&$h_h%zFFfa!klY=Nqn%OGyUsrZ*yGY*4%G&5+F-KHdc? zZ+KmcM;Ut-PgeLIvkX1Bc3@c1Vl3SfagS+}oZ&?tKTHO}wwb*U4M-91qXbV$@MIlM zE7MfggE(Koxci)+JLLvjH*(0Z+QONa1qbKzlEwM_mLo~Jiq_F&GExrvv61Ejob13* zOy4C8fG>Bn>mHh zq_gh)P}3G_=06=M{5Q`bV3Pq&3YPD0A>-+?o$i1SuuH<*4>$#3A4w*QG7OoUR)zVD zq`{B`*9~8U`I501#2m6hB8#ruOAm}jC6-O8c|@e<(|9K+Gfs|9$ZNnLH(lDlFqF$Y zuwkbCgsXXrLY*-g=QH zv{om{r1x`V4E=KJiH~v(kuU+nAPOc%yo7^Ex`y}_wgj<;xb1I5MLh_Zbq(t#fbRSF^5=yX(*|hz>k08G|2J5Lsdlb4%SaI2~bjo5{MpC zQmMF3WXnb}QjZ9zu<$ilv(?OoK;hm6uA=QkyT$>Wu17M47T3-|pDD@#&w3YlDDx8T zK4=fQtBi1WA%)l`(`D%$;aXoBfW<6tt@#`MP3n^pu;({i_TFrNG1eE0$vyI*U=)-4E7F-$ zb8D98WDKpP`K-TT4tUnVc`y4pd;nnb{*5jCaink(3wIJ8^#Y8{&$K3oza3GC`Bu{IEF?28Ynx>#?1%t<(*`WQ z@W@Zj=mjBq#T>%sHWzZeGtapiT;GmXqWO*Zk^LlR|B`VJ@JWp2$uV|Bc9$ZNDJO+* z(V5i0z}1ht`unkdTsTDJ$b-=0nj|>D)lFo^ufnu~U)jNTA=c-6*NicjiXq|SIkg6KYX z{^Ic0cG&BO2F({{WCiCs`D{TD2<{BGz1b5zWK;>_@ISD6S30!u?!7260@2WGWx5ElUOiJ*ybQ&fwyas=-; z|7;AX;no|hrwqeN^c+(4r!*&0g;GWLui7$jvzSRNodFr<%C97=eUT4(1e*KFvmjZ^ zPYVtHUW=2TU%qe%{cyes1LnN2&ykX=lep#<@Aa!zKorK@{GzlA_EOagNtm%PY&4+{ zgfaCj+N#{mkBbEf*Pk9@m7Mhi%MZTaWZB7SZ_SEQjxX|w83=Iz!>=65!TB59(FAX6 zsy?7xC5$N<4p`Kx?PX;%0g0A$n==G@s}P#WV0haaRdDTO zfmLi~fy8#Yv&b(HWEM%xT(-MIH%id`G(^W_fDW!N3*GjtP4n2Gm(BEwT|Kx_rXg}z z+LRXDMhcTaXgyAU#`0%8I?CsWC3w)IXfZZXsDTz>iLqw7>^C>CiF%^vU#(UeiV0U| zlpWY4#WKx#)D>e$Wo;z{C@i9+8)kr7A}vSc&2#5l57z0C2_iZ|5Mk+HQw*uNTm%wO z!KazDk&7^?JrMJ1j{iq%wQloo_#Rx-5msZ;eyihaB#S)Go1EfGUA4QU+E-yUCbO!| ziB#LtRa+p{z6`4|nN^J&G>+Ogw^%db6~{^Mi=dh$lOFlg#!6C^fm`z-!=(2)3RkI^ ztn(QuO^2wS{ws^9&73$()X^fPm4i#E33Dw<>jZgVS9EGoGyNw6X**7cna&{LXa;BE z(TpMZ+yS(teM2)lECd;f>1}(Z-%^6O|x}~*_#vo+9!-D7@&_{9&7pisW-K2BDAP<@ zXYxLhwnvdyI>JRQ@Pv}T_;zxyp0E#qK>Ew;M3XZ>!#vM+vVqD09a!0oQe4X7R#y!3 zVQpm)Q0+++(;3Q7T7Wy}gw7Dz#I*=-Cs|-KQkw7vun56Ak4fdyW{_cANQA%Wf5c#0 zg>}6E%dPi_s~B7=EO=5%S?1K0#-4>zTvr7AfinKcrbkA!Kaf<^GjOLdD`Q+v#?Y(| z{Mj}Y-eNFE!tVMQ0Po4=Ik@HH7(xUfIy7*WY_wn7%F?-s}or8!tJ08S(G!ds{|IUSLcBeoY zkS#M(g`Dcm#aN<%VONMl)bDoeiI>8}8nKH277{U)s=6LJ6nR#qwi!TkLMZB!0?J zjKl8KiEfhS)gsZ2)U;7sW1rOxbS9`Ue+5QU?eZu2@>#@|M4C(TE>IJg-|ZXfZZz3Q zSGAZE5Q972wV1>2WVWK*U(+*)e!Qd+rL^&7x17z$^mKrvyyNgUGc%&FNOn}ck?g2? z!)&Ox#XS0_kdyl~Eu8#O(%@vQymqGtT27k@RqOdg_q|&;pG;vF(LbzE`kfq3#MJKA zlvou+-j|qIP*f`~$6`-ey5g1VyRO(VhPCuFEv|HcrR>Ap=H_B#Dp9C2oPfU0ZybI0 zv)Zl+W+kFUo$F-JkF)N-rCC^yQ27*f&l8O55uE?Z18;8Sem`9au7}wL-sCQbL+cHm z?>T=G;ZN%i;ZH1ls_GL^81Sn;F}IUi0G&G@clbHKJ2L23(fzVgMtv!LwGdy2q+H}$ z-2q8y&*1!$$2%|KJFz^_IZqPp^Jt7`NV@DqtjohzM>A_fScO`#eJ4miAcPJe#q(x3 z%eU|||0vc~&bptX5HV#R$XgVW=Bx?DxM7h$v7&Uf#3-vVit&;}{B(ND`CucEH&8!V zh`pg1I3)t@0f;Ga^tDQ`5G#fMfFWbVcjPfRBboGwPxwKQAQ`XY?9P|PVgh;Z{KDl2 zqAh0r2Cun%MU}w)4# zpt#dp7jQ64{&Y%M=?wEV*hFBMF>W-9VKS68S7A|Ew4_x6!<52Z-=H17it5%5nM``b zXET^gdavN`Dj}I;n1W^1tu#!+1co^h48t%N-0lqX2JAayhu|5Ul7xWffipGC(`lF^ zz=pM?vVSW?g1qlG;PU+j>8V;1b|}RMJQ*6GWPAub7P~3vqm(GCf=oC54p#Tj4cZws;ir5djn#yZ3tLS8vQQcVyArUdzN=Pm!a5CluDI8^rv%P&)FLhJmSX)N z?df5$JwV&aV#6M&YQlLZ;Z0r|>}T1*5nV{e&xCrrRD9w0q^&nyJt66`ot11wgsYcN z4!OEsix(4=ElH6aO#d3=O`(uaT?RUTsZ;i6Igt%V-v@Rc+r|miSYrv78!77|9T~bB_56FJy%wYY-35LrmMK`v*{Yfc?9*>-+v%jI@(`fwr zTq)=V5pDK-IvUSDv^(J@#EKfScBOLUqwzoEU!U+;6j0P|eiD{X9Pj8x0`3F<5%!mJzi@Ji;?we|{O%K@aw5#`&owJbu<08%X&Rc;FoRA~-yxX8WV&o# z5|*ML?83g{JY<>^julg78h31-s{rgR=4h0t+53vB_OUVOS4|kdrMxUCPmijUdU9Jp zli4^dkPpJ(wu!6yowu`JPsJ89BC`_Gx%C)F2bVT5qYl6z)NQV5lthzBNMYw)n$Ht34r%Wo zLL3rdwbv>FgBW#`qBB}dDD(HQ*j?#7=A+QOgzt2#*3es>4>~$PC^Zb>AxFZPU4J8K zL0zJ0;bJ3Av!$kxXin~XVO^?y0y0fGLK5d}XedxXHV;73qt4f=W56{7e=@)7s8AjCKneeF){0Pp%2cb?Xdr;8o|0Wd;L(1< zm~*d__6zDtO$!&tYMQMwhcUedM=^%&q@&mX9#0*GWYJOF&C__+vqT)laDnuaK#x-X zn5{nuA>k-~3Lho(hVJ8D{FwK>w6tvQ_7 zW}WmtS?@CQQIPE}ywF{YrUY$;oumTY#Z_uqjhsi|APX()-N|BEOvAF~D?kST%)d|q zk%ffcR1p^g)aJ{zvNU`m#Ou7Q_UE8ldemG+S4^eA2e3F96kG0op;!weSeXXa30jS{ z%?UxZ^r-C>>kKU>l-WHjmPt5l_|{CoX1hoOx3Nl%2ATFfe1vPAowgGmL%#EF!Seh~05zn2m*i+J)@DJReG${K`(TS32Pn?{h2wqI* zFtg%xVdnY^gqeHr17;?WnNeh>_mGg8J5e{v%y03WkC}8?Bi;{#ga#O{VgYvnARNkZ!in6>oJdb=G|ezF3peTrE$g8z;oTXczcDDriEGW5;*N^yzgmlEdLF?;qqUmzv72PjCwFB!Ec~<~a(fzH=mY%WdO(&%g zeFoI?o1_T#ttAln7ej%F&`Rq7@={)q46bzn2bQCfqFNA~&hqN{n>D=6Qw$m1bQ zsBJdi!qsohnDOKQ*??Oa%R@Wi1gn??KwJN$5pJcuTScRn(a7IWMBBe8}? zvoLARVlEP^0A1uw2K5YI_;eNbj8rr-UBasCfv)0SOelG?Gt%y|0(Kp;_u6vZ@ZO zS7I%Mhtct>>CNnCSRY0~lUe(qpv&V0h5NLq-z<~97*FaMb@x{Ic3aZ$u-<$m6S&t2 zD3Yni@M8Fx<;bX6S`B)^7(JyW6~CKQ%_)ku#jHGli{kG4vc;VB;8TJ1%8W9&heH6<Muap!$+TCq-Kv$6y^lCYKKkPtpY%77!;J_c5-NA;n zT5Dfdq7u(_H4}4!ZP30bEAg2ZMI_;g(tKx81@X(C#WRC=ZecaN-ABvX4KlV(9>ns6 zA{F=1Spgr|pYIoM1))f#I!SU07WwGx3BZdTa{hFBJMzIE-S{c01v}*b;xt@#$j6Y6 z*^Upb66}ym;W}U>>1`QOWisgzpJju|q_+kBt`d^qNS2ReW!O$NpI^)!a>4|2##3PO z7`&%~7d^UhG4?kx%x-W7H7XyQc!a&;fg3pFzV)c3=L{*L-osF)7bov_w$z;iI>vXc z0+<;42f9)$(@dncM@9ts zO*`<|PhMCX_4b2Avp#vD-@3r(0x7#-b2&i~-UH-TwDe%^`xY!i^gF=7{?(B}S<(ke zw^px$H!z5SyE=kFnFX6cZ~6UGycU#A82WRM-S(BW?#wS`{-XWtEY!^G095+nMWUc# zp>y|`hhSX#1;$;FC8MO|-^zZ9FBOof>ydUtf@EANh3W)rmeM(LNWftC0FI9G6EoT4 zL3ICN;w!)_`ySEt{Sr4=@DwXBaSx);T!X`mc<9q%V{N!HZbKBBtDc8EWz!+L-_{RM z{M*}%q08r98joA*7E6A9qWcNYz3lkPF{!G0k&iK_Zi(_X_BgFR?69^=*c?Zaz;~XiD^zM!oe6?NPp~4%}eiNJnX8FM=r!vfmOz4KB!24CN*$ur$Gi8ZG z!hPzwctQ_Zh~Wh6^G$u{*qqh!0*w^OZxBGnw zz?x-yAyBIX_uszXcL>f;TVovRd~w1rOw=x!j@JTtJbW>D$~n)D^3;_6M3*X$*%VYW3UhaE1nfu92G_Goc zDl)fI9~$Qi@qfTVRc?`pt@JW7tHIiWOOf_H>ZUHq6F;5aCQuK4-a{6C-sO*d;cXA3 zi`)w{eNf97WME$N=vlB0dwTZPMOFZch%dP`YOw*ZS?r1-G}cx+oTrr2D)dY)Ub__!n2n^PwiFJ}pdgRh(Fq!mrz~5EUkemohu+0AjOWE3-QeojZ zDWynqO1X7q_Cjf$;18m+pF)P}O}){;nV?NAhru9r$D{D&rh@pjW{?9FMLrda_5M(HE>`0K(9HLNd z5^XVGuo1YvB(z8K*(HGAfbi@(89u$iC(3NyrIgu5fy^W+z4=T5k^9*(>BFdx;R`37 zNaIWdFF68~{HH^*3ds9UvM%Id$mp=}oADVg;t3=F<()o=?HniQElkq`WiA1|h}+WJ z|E!~@0uArqK?U)O_=XgEr_6z+>=G$M@bfT^7+HT@68KIV%V4POHwV%;>+8}bbn%md z^H!x1czjP*UrX0O2tkiIb2KV;#rx0}MIdjP@2*drS@)ueh&QVG%w3z32Cr4?G+RlU zuV>>J8{X{Bbg*yM>bu&J@x|TG2ox!VSbQ^iF+k;mre#;m#28nGM|KU){-ykkp#0}7 zA7#sB-m|grh1bQe8DAhp*mBR6j||F1J`dXR*{(c;3~m3#(tcYWcjZq6Z?Xc6H?d2DIPUA?No)8O*-ns80mwsTk@qkg&4-1?%`Mi4XXFr9GzQUdFkIUaD%X&kcU9kgkR)Q&;k?!yxIsy#>Au6geSlkr5$1FL zY1T(R*lx6K;L2XS&o4Ef-t2e*l#VPJYPJ-T#K+`V(tjYFAGZwSn|uDgu1kKKAwY;`9aBV zq(p>#LDAy9!lwmAi^qgd^NSX94cg*3i#WyxI3gwgzzJEiQBZ;^v5dW$gbZK7il5@r z9cfkuYt4#M1$lQ+AoYSjI_z{nVHgH_FsbKKfX@3zS`4OizL-%9MhG6eg?!AGl7)WN zw-c8`%iZ`^?2Hyrm{(wIo0SgkbICqA%jxu>^?=f>`uX19yRaB;gJ;xWF1JkA4_xBPzvg#V&-zy2|W4!_QYr1AI5WyRLw# z^+5|Dq0abwG4ssb;+oiH$$t|FwV4&SI~Ro|dJx0P!L&AW2lV6EY%{%cX>RYq+}=Y7 zu@AV)aIMKP&9(QeXwxpnx0zc|F=L~Nq`3x9pj{s>-h-U^h2-K4?*Y(yaGo^Ouf|^p zYG9*RKP7U2+2p=&SuCxkK5rz<(DP@&^&3nr!3h%UpjSBHNIZqPHeM7C zsQ!+mgubi&ETbQ@z}fbrFI{jw5DPx31Zig3Q%*Ui6Or<)_lJQ)d?DutyjuW<3kBg_ zCp?scIIHHghwa7MXiI_I%Qd(>(q5ve=g^pag;%zGfG>h;@OWV9fsn4}=6TL)AIjxj zWxSF<<&#wMZUhRs<>U434f39!9{oaXSM#ZveZN_~I#2u8RPNd@>&H$d%tQUfSS;!kcW6WmAbks{_wCHu7+N9!dn|02SO2+(i>)iY46?Z?;nYYfi zKJpbNtc?fp1O1cO7_5=}^yr||EpEE;7O9Hi3T#H6MrT<@BjAU12!+ zaZICkM;X?usAWd10j;!RlCsxhCThZ%Z%QKaD$e4MV}}f;(u~3O<&oUb9UF^7|B{FmL|96z*=hX`uLAKF`lzW9eeVCy$4CF17I|DEPO zrnA2Iq>Bt@84DyZ>y^D}S)9_<2V?$>85vL!!-If}nTG|XL~2}uFqsyPopuQ#*XqI9VOWMDWLGh`?3Z*J#*m)2(r_x`i~-(_{pTHQy+!+v;-kJ0 z-GE{AJEVD~-MWG`H$DjE<=|Z((t!)_Ovx}M4I8A7z}6vaUA)hC{|o3t2bO+u_WDpL zpM2%OpXL9Y{-gGI2o>=y_DlJ{N(~OOml;8SkoJqsV4jfYe#H+CmCoA&W%rqzsq8%W zE53+X3-Y@WN?^?o2NXVKM(+KJG5MIV91oG{K7x|m`xO_3)S96}y>*eFmd`$36|$#ajQx5Ho*M;Vqy;d# z=!}CeSTNTrGIR^xq$!t7T=|lEOrk6!fKAKHETo>%1*>C~N8AxhM zW5S4Y{+m7iQ3bZ$O|Q#anQOWO8b~?QjWe zVInnYyFxRbz+56?mqpBOI<$7Pl7_7^o|XZ$&@6Rj*k8Aq#pYg{Y2H;-P2!>Sx^8|q zqSK^ZHJY|he6-a<(}19gO(o0|gsHJcHfX={t|F(KsDIY}NPDCHfFMhM5&h=%m-M%o zcSAL*@2q&3Wf;$ADbBq5i{j5eerEHhFP<-j&lY;pzq9=}?FoY6;yV9LgXJ$;Z8&rW z6R7pckZ#}iWjMI0EZH6K&(2sio^<1h`eN;dm~~;9rl-?b4r`G zy@CdkYagNfT>RtWC0}^Yjh6^-An!gf0`X#B>T%(poY5n3qQf-a%+(oamc2UtYX2W? z-s1ol@!z@SYjXt2Dj&=*KWIhSox4grQy&xoSz!2CC(;1x|6Tu*^EjM;%Ylq)06KdJ z@smd#*Nu4;+lcC1jg0HuQZaUA7ZQJO*dy%MCV@Y;+2St}XwRckvWgpo>^m4Z&y&qU zVlVsqsnTDX@MAtec7FYUPx=5%31O_pb{DStcVZBOlv71rPFbnoJ7(63){J<@U z(Ygz`bNhQBKN)}D!vGxZU!)KGXoK2s&59;zCg*)HLAs;V6nw8L-hppcIg!;{kyYcj zqi84nkRKveh^!F|RYPRSqA{AC>cgkJF+?_*Er1vmS|DUJz`Bf@rKCp-b^URk4mZtK zZT%u{gl*sfEoB#;(t}^HJ*5}F;B!g`eyQ4S$|W_WMFS_yFuqG{HHz)^5vj>m$zc2Y z{}w+rEAWyy?4Z4yVOgrZhd*NAUWeq!Jeb0<0)w383UZm}K_cR^Vb~BRj}Q91wPhOe zr!+xp5ISPjTS>uJe27YM3nuqG0n&{mH+PZjK~i>!eP|&iXZ%F?=?PNKz}4QlA=hc( zXi+%|%tDzU=#{4S&Qo8%A?XWd+!I2qlYPaA4+AFBt(OyJS}INUizlZxibTd&39oFV zy^E9W)bHr|@oF9tVP$>*0tbI3DK`*;pAvbJZz3mrxfIMCA>8pY1(jub3}I3Yr2>j3 z$r&iMF0WtWV)%=c*Q?1!B>N;OFW`fQ!sxx#ewt@V^M2!;jj5Hn#3O*TaGjGbXhBYiN5FuikHGqQ5y`mllP9ThxBQsT5#JVCk$#UY6 zQt;MC=LTOy|IcdphuG~^QeniE?chtJ<7f0fr7DOO;XlG+bfNyp`j{-lyLh0&(F1S~ zby_m^zlLwUfD&^5we3Hh^qiOqsE z(65GCPt1a)viwABgEj#i0bjZND{o;uD%{jK69y>sj()6 z;ELbt!;;MUAG0UuDF+En78WDo zf>ak4o0$sK%QY14|A@#kIG1eK&nc$$@v?V5`YNv|zv3T;h{tVz2<+L~XYd?dKhgOg zM1{63d3V@@GH>A?y=qh>P0lWShYED@S+0JJxfLxBe0a_r#r2*(vn3JRIf~>O5#1nt z=He%;k@XeT{Tk;hMl4ojdly}mzTCJvKv00XHkuXdaFgZN|yO~k7=2HgJjb{?aL7(6aLh~#7@s7mV7>p?)s`v#7b>gCt*Q{tgB)K zhP}h);nDb|->}M+IN}mRG!sztkIn)?_mkjLg3MmS@2#Wvv$99Mh~hz@p&==L zv3#idAd z*{p|U-;7M^?5Dha405h9sd$sQG5U;Mc8H*$(~RP3F*n`qx3(E~#1cC_mRRz|Ff^_y zp`Q$gIulTmxk!;Pt^RRZuQ{ER!84e)q5~3p`PeE!FR`-)v6t4NvG!x+weMr^RD%Rr zXp_iU-^y_yGYGVxvY+c8SVPV*L2q5WWRe{NfVO=lfWQ`q9h)g&AAK*d5(;|Wg5O0G4QD4;sJ9rN2nLz<3E~dhdH%gwh8>2pTZyxDpj9 zuWmEIA|@&oCe+L`8T#Za>{bG3Vuf!jsRs2u!)N#d*>W{z8(}O)7&ZnxmD~Lb#CH{0 z#=yx+3X5B{oyCxn+Vm``4tx{iy?X8zEVY^a;6s421rI&umd}LI7T5Np;mR{$$2l0( zR{iy4aO^p--|kd=saWhd&c4PfgJmWr4eMSx0cxy7#6b);1&@4G1Vd(=C+&Gp%ayH)D zJ`nUh7^pdC?JeiMb}Sm6Qd`J@Uq{E9;5F;Q&(&b2>Ydl0}w?l9Kc&O)=f z!xi1A`;pBw`!gXIEx`18jI_NT;x})TC%H+1atJr-R`8a7A=PP01PcbNnx&LybbYNP zv`-P)fcY5f=GJc1c`l}6HQuxR14A6Ti2RrBFTbsPaJ&f?JV)wuRlY)Bi6Hd@HO>ej4--tDyfmVSen2!d$P~M!) zjg)PKpj^f->H&7k>1X!$fQD|*k$KxwI%NALUZ(eE)W|VNkEmpgzge=&!>`U~4CLD< zHf{HGAm3iIIr$m9?ob+)=l}Ei^U%IQ^v%^uyBkdPpl$f&N<6#@-Y|d>^qOx7;MSPY znbM2?Ztm1dZK%`%AZP}!I?KyJ8te5Uqr=F{2ONuWhX|I3n#^7+Oz9Vw3=V<655_b+_~jBLkc`tZ_4R^;Ev$?z4?M=rlInc!SddSjnk|A_dLQnANi%#7H(9beWsehu;u;?-eG z|Ch(7mAcN|J>>XwnoRQS9;h9kPNKrNdJ-LuIzG{# z=8h+uC=0o`Fd{ksUmlDXL;2%~^KF(^asmk_ogNNx@WdL%FP{7yB7P|UF5}bxZU6aQ z$3NHKTwhz`c@pOjG5#*+0=morFm_<8Lbiy8h^K`Y#;O>b&|P!ZL(oa3PYuYpz9aOj z<1R<}!-FRo1~>xWzZ}cT(fB~?N89^r+K4WOfTP^_NBz5aUWN~VEW)xfl9YrS-t#Zf@xhMg zS>r>b9CG+y?7azmmBsZpJ~zqDMwS~d2#vNz#fo){JBs>?N;D|3RK;4g6@(xN0a8oT{J-Bb^Q`wtz%Kt^-}m$S zk(+tundQuxv(1?^^JKI~FLa=d>vj4h;Hlpa9G^>F$@(HsSoNpGnFTjOUl?3#H=tjv zb7L3iW1k_G%}xn?98L67f)p?zFecxU)$M5g)d=E6lsiuwWcu$T!YzR`qK1PXOP>Ot z)^9({YBYdr5uc31v2Menq_gT{di6H@N}@+^X%bz!)Fe7}o=NoS@4qW! z&FF{z?)qbV^z*OM-#=O3o8N!#yvQn8g?{;G+KaMJEdRik@t61HhvSd*2hZ&i{a74 zZrlt$1X#m8M!lOUm)5WSjYkZ;^%MEM)5M$sG_t+pdZM`>e`PPADV2bjr+={zCAzeJ zM*zeq;9fw`qYF---cP!L(=-4@Z)@#StgUhR3y0RLPXZKC{yB-d&=h&uQ*AB2B?~U(P zHcwTIzougu2~CFyxD(FC2YK-N{!Fe7=Ib^IzaKDt!RAv z<=a(nIbaVi-=gQo(wEquX?+0!;WCL*>j^x#fi^CI){0#h3ED5Vj<<1f80-CeFL&X0EsQZ6o-wEa`z5zn0%!c*D=Ge1SZ^mGX>I?=o{1#R3_^ z=LARp$>sCH7CpvX>(WKj%&LYfX%s^|@TuOa34`vgL2ifst62pxV>&WA^)pTeR3E-t zq4$5y5fcdISl4(75J$S7zy-ZI%SJo0e@8($twk?WKQ>BW=+FI3l@VSf{uDNE*<9aD<-5 z2Vr1qkND~vnJViQ>u*e(qMkl5>y?c0_d_3%sN}pojrJpPD9jahV#P9ds)!Ea73-Nr zJU511JoISX=TBMMg&uooj}@C|t?x1(-ZWln{h=93FR!3(seKiNwZ;)f*3|j}+;(8w z>(oD%hx$$@!uWfI2rDkcMs@;X3rm#6S_J-l1B2EF$RRdp26IM{=M(QmXL2Xz(kjpo zP|BzexWKIF26Azv>^#(SM7L=Yku!t`@eim^6c`^CYVXh5<_ry9^UFd8+;#dXb|6gT zlh2R`AX7iSz4>wMMaLe!$}|AF_Ls+4F^`m2519Aho9Opj2{5Ye8O?whBdoLKpVvS6 zgEW1q+ix~MvG1Tf_Uaq>VI^U2WX)SS_hUJP?|VPzFqIG`jpgm{rv>8Z3vWD|BTtR} zo-y?4n*Lh9%C!gW#y^`y2#{v!-)$dwqkT19Cr3(IKGf)Z?_rdF;TZEqXSPSeU@UC! z)Sz!rv%v$lD9DeLD_wf$TueBMz~6R?99hU$!S^kCGoMxaslgvTw;UL#>XBeVA}9e z6c~r7*q-}F5soYCKKWGadJ{9tC|P4E*x*m+_!*3bR`MmEW~Wad%XPbn=i97++L@>y6;Qhs+Udvo*cp^Qk`3Ddw$`@mBXP5)`|JkPnt0v; z0%|*d|CIT!uKZ36!5>}=e>uKqV7g$MqDxTnDB%DYZr==Aw&AtkXXGS47>4q;h@>%m z6fs|zy$nZEHW6NXCX3K*9qa}XAdBz@jX{v$pZk$&8(upNayZid%79Do5An78`Rhm8 zmxiDH_QUntp-)G=Wwl@B@+xI!foY#io6(i>;Ka}RDBiC>*`I}PKfOZGXNMOpA3S-( z`yQTW1u5v*Ka*T|M0Q9#;!4aLSQrXK%5OTp*0|kk+bLaiE{DNOStQO>>qpV2OpKi! ziLV`nS?R*R0pe?)W*spK2*nx$^(1?f${l}p?UB%ZARL1DNM#tyBjRg)SaqUoXV&*x z!PEmX!Bjvx2E_z@p&j~3q3r=s#sTa%u&o>elvrD) zfp+{GFxK_~^3l%hh0sVmt&k~X^UPWf!35eaAhMRMZA3vEX#3MYx%d)Y9auk91?OLE zx->w~=%ZdC6LYQ0hP568g$UXiNdH59CG;Xw1~!00Uo}Fnt)mj2`>mJuHrkR6P_ z?cpn$>aUtIeZUC*L5zQ$_}lAVCgAMD@O>cuwkj}Q$DwX*9CoFfN}O?K+Z%rWxyLW? zcKhOYUoYbzAi#q0yC-Au4Ujr8zFz&Rs0o~Gx48Wko&!7r9VzrNK>Y5V=)>cWU$aNE zJ|glide)uqCF>b)8W^%M4_4^)0;b#(40$4ZuxZUt1pr78F(!=hyT`-zg2AkC;&%@> z&!}PJclVJDP&#)FHWk0y!am7&PWa?E_zk9v-)uQ8fhi8>fpktU$h~NF( zdFPMceamL*ztgOD;&(HK&XxoHdaYB9u3KOH?k;Bt`2)0dIxS_O(X-=s6M|gI@~tXm z7DDzf=?&u|{R>Jr=)G|A9w>DJ*#hfp%b%cLvw95MW1D*KU(aKVR@Qs=_$K+^*xbVJ zGfn*vzjHidbGx>tvpzUCqI`CL9=>e(0KNiklYP0HUnqaV@xe1EYREhr9PHWeVfZko zSit@2XiTQauAqO&!e{0kr1_tW7nb9wom#{1`z% zy3A;ElmY8^uG#N?(?wR8{=R;H6I^;R{(??0Ap`|@wr%ly`Zt6XTF@~KIx*Ef1FWZE z3GDIl{k(!up8$_4^@;vO0_$O&3z77RyHKqDI>?2^8Cicn`wwB{E?tRO1}>KE@)-Bu z^GF33L}2mTS<3pDx^?+&)_tC3zZv>9_{M$3Xn{=@aU2BbrVN{eBykMD@OrHp_|T9C zX_0~O5dary@Y{cRy!X-KaR|oK-C`yWGwO@?UdV#}c)H6>Mmy$vC65*{O_ca0h`{MKT&IT@! zpTxU^NFng$9NBJcm$^+{ATbHC>(Th~7zPT{2;QZpZsbF)Zy1Jk%vvsfpgRSmeWO9D z$@T~6&skK+#*^1Z9vFI|{*ZgEKxXe5h#cHOMmzRa!s9n1%gz3cLylSWT$NS+0|RnY z{P>2Iq5U^UUSk@q!V1&7z+?9tDbVc@jsF~VBFh7*@Fy|GGZG&gj6-4~@Zr-}R^J8m zl>?vHYF3{N9>49w2g-|olXeM6fiUeTai=C$D!4{4%QoxdFp`?$H*0)e`-I8FRDVZi zlhcbX^28aAzKsEBSi}jbeo_|JeCb3i4vfFAqyO3QlQQqPPtwePMlb8Y1P}wpp`&$? z$w)iW8aUx}0^{_fy?E2W@oH@c?eae4_9z@i3)nl3KH)sVPSW=ZCZP1uFy<+MVnf0M zk9TL*&7v2>4{V?76WKD5GKODBADuE!)28JM1rOZ*=HWBgUx5o#kUxp<&1-Lh%b%nd zXT1Xd9#wVLeRmf~e~a-!1o>bbgjV)_cUT=jaKXNY-k0*SQQn2Ndmxf~MFUfv(oCmx zMprllKeL|Z7D{-R-Oa4e*oAYazLt&RwiGI2(W1_HgY?dMaO}mD!A*c)1M<%3MteUW zApsMbH67BTGf+2Z&-v+zrpza%57?LvJpTC^p>YYKr5WdaHoVULc3a61u^x8rw-dG% z@^|Ao9C<@qryJ$X-g+YwHon5hF1|OmEp?Ok-f#a2u0-}|UG9rDpsx~ZeB6HrZmOHP zI5Wyzes>ffEjVM{{ZIdR|F!$x9{Awv$z#ipq4{;;(MMqnVSaV+7bUMT=|y#()ej2g z;($j3J$=dgf?K?eIzNH;LNX41maI<`idHzS>j7EYbjnxva=O}HT$0oW2JERzG3vF` z-oF5bfX`iS!@?&y_M+n!Un;_h)yBG1VVztROAqw;krs-vBNOKSZsUpX)itQn(tMiZ z^;{-NcPr}`1Sut7AH-n5a&p&}K8pR=PidkdZT#)x`L+Vt+$oV-H9@q*YI?TyKA1K0 znsvU9Hf&+@b;HA*jQ&$t$?T-c*HBxV;T|@hV4BQAV+a+8*(x6*wEpU5!5F^xi?Zg% zzKq_JfI5a9zH5$(^h6nV?mr$0#`_t1@ULHT5tCx*B3pmD^E<%(eC~aDhRs}&DUzcP z)3yOafGNu3!*KPCVpsUs3J)6(JayMWipzLpYwm|KJK$gA>r3k-R}QYPFQXsDv!fxg z4iGnv5nd*pHaBG1P3sl-1QS8fU!WJWN6V)_m_8}+8s+uNCZiE9h<1xmd>rfgHN<8k zG9u&)sDmS`*+uzr1rN%hM46H?8Lz8BJM_|HAsY%GHn5sn3g?4rLP?CyvCC~c zoUHk=M1#2zeZXigLL(FOf_ozm?Z>OG9@u{5+|D#xsUdvW_Jto2A2$MvadCi<0B~Eq z->WKf%bxZ?Plmp&{7=R6dASgbPTCi(ymPO%9kO;VB_OHVejggNF66)5I!sqUq9D!B z>|yn1;t6aeI8>!*qb=HkqDW6{LD7{O5f$i8Bq9(95uXOB)Zq%cmF0>0&hm=7(d892 zqwp$&{3^McE>VxGJL?j-zEkfZwd2PiT3ZZd1duaowusq|yw%%v!3!M4FKxA>MKGBA z0MUW)o0b__geF`)BohWa8rgx{9bS-rWk*0?W6~M@1`_=b5K%&IVS5bx311JF`VxC3 zHXT}=i0>h|eC_FPbKVeTQHOIb>j5sl#2~aFeD%YJ^8tB+ zN3;`sPk6HV=SupoT&h0l%E9?(NaT1hKaM=88v)4l`aOEjBj(qu zOL;d6#2SqM3(P&mvJiA3{$h^lqm$%$;BEWNbH_zEFAjJ{PJm>fv9| zSIara|=uI`t+|&1RBcGr!o>c(tq5>=q6@cw&Ks?tA>^Wya$lls{qn)M!J*li?D(w!It89gXwua14HtkhCzK zzSOjqEuXykpzeTCADR#My?)2Fjw&&2H`Q%0KVracPJU3rg(Jh z>fJR}@>iCb)|pYS8T@Sb{4i=0E6z+kPNWws_x2t@%>AWf?+&h~{q#G=*sHM3 zvgwcZS=9Q`#EW#<=uRfk8bi8=o8R zky4!wUOF9VeIKgh`xp3iu+jxV*@<<&2^q4(?rW`m&UkWgrJREcX6h@^a{sny#QUCX z5uSjRF1@6i=mDOc7?UnNTe2`q+ujxB&mlg}<%mQsMc~WW1A0Fq-X7EvIV0F@M8_fh zWy>3TlyV7FN+J!G*QJ=hsQEExifmN%2K^m_#!NqD55k>qjou?!H2vmBE+X*Bn=T>x1 zSRW@GduEgR<^j^yK=fzqFG>}CJvMBq^zcxq_odH>8nBJIVfy0tWH!71Xnkk#i~j$) z^YaT+oU*Yle+1|YkbCx8A(nT}&yRUqhTf-zP0Zo(YSjEhd+&J#5Jy0ENZQt>xGGN;gx<@?Ss*xre!$484(rB9<&UDN&w zrOfdM{RtYvi{J4DKHqg&S5^bUu37wAIOw4Du(r3#QNMf}z!aI=i~Lc@uO@sTc6647kA#a43#9&ls~#gHBjlYa zkFxsK$DDG0`g7k49T8K>55DsF53$2mX*lyM{j5YQ1rkcV^j<7igXfj&lGs(4+ z!!}??!ZUdLuDlp!)+=n$?*EAj%3g07f6c)1M<2yF=|SEPI^Ip;!-Y3t_D=yXR>$6b zG4Hx~4(-Q#^iQ0>&0@4lj3FYfGcl8yn-(!Z{~sRuL={LtGpvH$sr#`^w#EodtS?Qm zE}O$(QG}{?BiAX@r}5D^_X)aZVW0WZ?RIR;Z2o5Y=ZRUwZ3HT?)6S(L}x3H{J|ydhtZL&SQTynpT>^v%9$E}iC9@- z^!w=Xd-yl}h55&d-~C?4G;A#yfhP7VWz?ffD5J9FQxyGXkI&_gNd5G6%WsN5eD5tk z{@<-Xc5ED2f1EqGe$X=qfBzrXA6rGNuPr@nmi~y+KZEg;E&t!DKlGE@Qy1R)XmI}V z(fhxJzkvUcJRL}0T<2#Y@(k}f|p1bxxgwqK9#68{uZL{qwgHNN|5gEMj69iLztapblb?kU^ zMZpidq;W_K>cEG89Buy$CU2~M49S~n*S>J0 z4?(7bvrfEWOC7q|hsm`5WM`?^$(^f|`^FwqF`jI3=@S2bcdp~_?(k>o{cn}ldUX5i zVq$mcD@>wKpLmr-i)4>4A>*UHB=-q~)+4#`GA3??H?$d41AHOx5 zVZtmS@1WM?>iH)eT5I>Z=2NhuQ|p>{=byT^eTMeH4YUnjwlqHtkDy>^SsRmkbbY)g z*3$e3B&`ebF`0Inl;#tmZTq~B6=hx9>Pcu!AMnOk4uV(n3!_bp!OaG~em=BS|w9 zGe8+tOYbvVhMyu? zV&G9F0k`xp@X#`86uCIm1+YRe_4SY7PhAuMmIzd*oxU$eXK%p?z~&X%sSWz5^Ks4YKf(cXpqM_bcfi z;}#QSru9KrgvQgl@I$=VkXrbm@vjNgB2Gi{5%!Cet=*8S|4?F1!}8OWFOV}3An|?D zpm(@G=wn^dtud|o{Z|Bz44(V=e5jpk$jnK4qW3Ub_c$f#*MGo1=wn#K0dc_oH@zN= zu(y5l2iRK?)@NbY^}v~fT=;UR1n-{@B{*RJ1K4xbB7YryL|u2R8F8Oo@7pDH+T0f@ zu3v1P_}Be?x`tKkx?iq2F}~g?edf-`Ch>8Si&p>o*|WFoQs4Mviw)55NEK|v9Z9k{ z7J>=lBW&-6pZ)kIy+CW~XJ4}90p+UK*$2Iv3Cm55=-jNoZF}$)PlwGo@c12klT997 z>G0*|l}~c04!LE`w;w-Hmez@Cq$LC7Adt4}5Jok=5yTSw;c{sZh7bS<;>(8*8z0#1 z#M4*@Vz7KRJ`Fs^p2K-WwQ(+?%80$k9C3chWG?sFTd=WdFWkjp zAY@i>k^O!M--9T5e_y$WvqAko{_$=~p1z2%9ESqJ>p}ngZtt4GQS&SOXXPDOu}_<8 zg5b_d#h1Lui4j?)X(CviQrkyiSI2?F4h1gy94kyS>R^gNtJZHpi-zXYrO(oRr0q3e zM?_S*@m$V(dvRxX%}^Kv8yU2{uI3w1NMZUwd1Pkur`g|yye(b*7mh*tk?85AI|z8N zsmz@aaQ)*-z@-8Ht@D&8mNP^$XjA5Y$@&gfZ?#`HwPvAM>S7vBU~w=N6z2+kz`=Z2 zbprF+%oi^|DRWekIY5iR>dWWiy}o0*^CGoc8fn8_&oAUTIOkOrPr@2-+Id*g=;QDN z8eg)OP*Dhr$=rsvHnuiT#c%(?0&Z6JR*~6&x=T;>b#sE#&8y`ciaAnKj_6Ux-xqcN zh9Kf>4%#9DWYws5JxDSd8G0xET9W$1u$eth+*@GnO7NoA`>`O!yC;JBoBr7$R3aD;}H15 zM}006Ft5-=OY0*YN`DNXG3rM2=gw_?M{DhEDBi2r1Ai#qp??Nnvo{|s?W$ClFnQyN zc&3+QKnWHZd_XJo4^8ugW`$k{NW1~fGp{nbm5Ejy;Gv5crlK9u-DX7Xy5EcledB0= z3~Bp8hx83+NVm0x_PhM@>>eC@Fmf+@J}Ez>EM_sKaBWy7xW8=XyM=Qm1zT$0GmE;f zKjR02RNWcB5p&=n=zHc>Mo(vg=cw8i-)fLk{=0?m>20@1HnQ{yO!%if7wrr@<)50h zWrx1-LKi<(9EvBuv0?w=L!?kW3xdv5Uv50Gl=sD_LB+ua*!XRK;cR*8;8av1H0JKV zAvYr)4(s;Z9sPA7jF+N&7d{Ahpjy@kEN3m2v7z_w{O$+&kkLY+#>5EfcPGA>UN>+yv7>H>f@Myu)@ zmqBU;@EMd>J`{k*z8-%s79@$ZS)tzo`aJTz#JtMro0*8drstQRWit$g?y2C%8m>1xt(S_0ywAPcK%;d)R@|?}q_<+4P3~JgprO zulAT}6$)R}MTj0YO)qn^#?y*>K_X+J(ik8RiR)3?CcbL!FHJ363Cwnx_yXz}F3JBY z#lUqE&q;IT{BxWvdw=#yGUAcoduJBG9#DJo$rs8OXfiGPJ?5d^e%}(1LA--<+o4qT zElzzyu9j3gTWfzSV6Z+VI_JJe*HacTF_np?wR44LJM}*<2*yhW@J%`3^2$-BA~5Zr zKa>Y4fRmkRa+X@ zpzaMokU4Bu;*9#_e$67HhL@kcFHj;ePQ<^tiQr3{X~qT{NCG|z%pYFCi6lZE*SwZv zE)nf9{z$nlh&D!{te^K|i-G&zCb{rY9*Tb!vF7F*;vg(ckleS)OZ)B@fCU^1EA-c^ zrx_LAVdy4R+X47^_yhMf^NsoFx21%xRv1Bibr)YTa5nFJPWDm^-176L_(R^~Y!r^0 z^S&!H+HCuOT}|Pp&yU*s`a=9)9l(cK_w|wHBt8^S_vt-3QI3ZoINu)8Mc;2=)@P9Q z;Km`QnNa_R{zTtJyhr<>Ge5nfJm-sAN;K7m!PmD=S*~Ar#;g#if_3QEXF~g=X$h9& zyGB6b?9W#Teh8oJuflEf0pVm6?2l(csZ+z7(?ME)db(t!9pXsSrV`epyXQ&V-yOE6 zo%L(mL0cm}QID9#tsftK7=It=ly^djtWWD)h#mHCSb=~uJrMyI5+NI^@8TEh>O{o- z7Qy#&e#f^yxATiRSf0I}Cmsf{Pe@1X4%`wa{OtnKr1cgg7_59y z3omdt7j)MjOywRHKz@%dWg*!}3evwfz853n6D@tXhLsy|3J@W$Ot`5@Q-ZGfE2Opm z``yMqb?MvO&tgufr1jsN0Xp}2-E1;4=#JBXc7^JzJ%0AngDc;yMaz$39brZZ9hyDg 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≪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 D91m7X literal 771048 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 { public: wxAuiToolBar() { Init(); } @@ -627,6 +629,12 @@ class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl protected: void Init(); + // Override to return the minimum acceptable size because under wxMSW this + // function returns DEFAULT_ITEM_HEIGHT (see wxControl::DoGetBestSize()) + // which is not suitable as height/width for a horizontal/vertical toolbar + // if icon sizes are much smaller than DEFAULT_ITEM_HEIGHT. + virtual wxSize DoGetBestSize() const override; + virtual void OnCustomRender(wxDC& WXUNUSED(dc), const wxAuiToolBarItem& WXUNUSED(item), const wxRect& WXUNUSED(rect)) { } @@ -650,7 +658,6 @@ class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl void OnIdle(wxIdleEvent& evt); void OnDPIChanged(wxDPIChangedEvent& evt); void OnPaint(wxPaintEvent& evt); - void OnEraseBackground(wxEraseEvent& evt); void OnLeftDown(wxMouseEvent& evt); void OnLeftUp(wxMouseEvent& evt); void OnRightDown(wxMouseEvent& evt); @@ -694,11 +701,7 @@ class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl bool m_overflowVisible; // This function is only kept for compatibility, don't use in the new code. - bool RealizeHelper(wxClientDC& dc, bool horizontal) - { - RealizeHelper(dc, horizontal ? wxHORIZONTAL : wxVERTICAL); - return true; - } + bool RealizeHelper(wxClientDC& dc, bool horizontal); static bool IsPaneValid(long style, const wxAuiPaneInfo& pane); bool IsPaneValid(long style) const; @@ -711,7 +714,11 @@ class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl // Common part of OnLeaveWindow() and OnCaptureLost(). void DoResetMouseState(); - wxSize RealizeHelper(wxClientDC& dc, wxOrientation orientation); + wxSize RealizeHelper(wxReadOnlyDC& dc, wxOrientation orientation); + + void UpdateBackgroundBitmap(const wxSize& size); + + wxBitmap m_backgroundBitmap; wxDECLARE_EVENT_TABLE(); wxDECLARE_CLASS(wxAuiToolBar); diff --git a/include/wx-3.3/wx/aui/auibook.h b/include/wx-3.3/wx/aui/auibook.h index d46c9fe..a8e3473 100644 --- a/include/wx-3.3/wx/aui/auibook.h +++ b/include/wx-3.3/wx/aui/auibook.h @@ -171,7 +171,7 @@ class WXDLLIMPEXP_AUI wxAuiTabContainer void SetTabOffset(size_t offset); // Is the tab visible? - bool IsTabVisible(int tabPage, int tabOffset, wxDC* dc, wxWindow* wnd); + bool IsTabVisible(int tabPage, int tabOffset, wxReadOnlyDC* dc, wxWindow* wnd); // Make the tab visible if it wasn't already void MakeTabVisible(int tabPage, wxWindow* win); diff --git a/include/wx-3.3/wx/aui/tabart.h b/include/wx-3.3/wx/aui/tabart.h index 1594ad4..6927ef6 100644 --- a/include/wx-3.3/wx/aui/tabart.h +++ b/include/wx-3.3/wx/aui/tabart.h @@ -32,6 +32,7 @@ class wxAuiNotebookPage; class wxAuiNotebookPageArray; class wxWindow; class wxDC; +class wxReadOnlyDC; // tab art class @@ -85,7 +86,7 @@ class WXDLLIMPEXP_AUI wxAuiTabArt wxRect* outRect) = 0; virtual wxSize GetTabSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& caption, const wxBitmapBundle& bitmap, @@ -174,7 +175,7 @@ class WXDLLIMPEXP_AUI wxAuiGenericTabArt : public wxAuiTabArt wxWindow* wnd) override; wxSize GetTabSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& caption, const wxBitmapBundle& bitmap, @@ -277,7 +278,7 @@ class WXDLLIMPEXP_AUI wxAuiSimpleTabArt : public wxAuiTabArt wxWindow* wnd) override; wxSize GetTabSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& caption, const wxBitmapBundle& bitmap, diff --git a/include/wx-3.3/wx/buffer.h b/include/wx-3.3/wx/buffer.h index 053e39a..3e1dd6e 100644 --- a/include/wx-3.3/wx/buffer.h +++ b/include/wx-3.3/wx/buffer.h @@ -211,7 +211,17 @@ class wxScopedCharTypeBuffer DecRef(); } + // For some reasong clang-tidy gives a warning about using freed memory + // here even when this is not at all the case, seemingly because it doesn't + // follow reference counting logic, i.e. it assumes that it's possible to + // delete the data even when it's still referenced. + // + // Suppress the warning as it's extremely annoying to get it for every use + // of wxCharBuffer. + // + // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDelete) CharType *data() { return m_data->Get(); } + // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDelete) const CharType *data() const { return m_data->Get(); } operator const CharType *() const { return data(); } CharType operator[](size_t n) const { return data()[n]; } diff --git a/include/wx-3.3/wx/checkbox.h b/include/wx-3.3/wx/checkbox.h index dd89245..5438300 100644 --- a/include/wx-3.3/wx/checkbox.h +++ b/include/wx-3.3/wx/checkbox.h @@ -103,13 +103,27 @@ class WXDLLIMPEXP_CORE wxCheckBoxBase : public wxControl // background colour of the checkbox itself under the other platforms. virtual void SetTransparentPartColour(const wxColour& WXUNUSED(col)) { } + // do the window-specific processing before processing the update event + // (mainly for deciding whether wxUpdateUIEvent::Is3State() is set) + virtual void DoPrepareUpdateWindowUI(wxUpdateUIEvent& event) const override + { event.Allow3rdState(Is3State()); } + // wxCheckBox-specific processing after processing the update event virtual void DoUpdateWindowUI(wxUpdateUIEvent& event) override { wxControl::DoUpdateWindowUI(event); if ( event.GetSetChecked() ) - SetValue(event.GetChecked()); + { + if ( Is3State() ) + { + Set3StateValue(event.Get3StateValue()); + } + else + { + SetValue(event.GetChecked()); + } + } } protected: diff --git a/include/wx-3.3/wx/control.h b/include/wx-3.3/wx/control.h index 1466098..b3ac4c3 100644 --- a/include/wx-3.3/wx/control.h +++ b/include/wx-3.3/wx/control.h @@ -139,7 +139,7 @@ class WXDLLIMPEXP_CORE wxControlBase : public wxWindow // ------------------------------ // replaces parts of the given (multiline) string with an ellipsis if needed - static wxString Ellipsize(const wxString& label, const wxDC& dc, + static wxString Ellipsize(const wxString& label, const wxReadOnlyDC& dc, wxEllipsizeMode mode, int maxWidth, int flags = wxELLIPSIZE_FLAGS_DEFAULT); diff --git a/include/wx-3.3/wx/cpp.h b/include/wx-3.3/wx/cpp.h index 3347c1c..cd0b83c 100644 --- a/include/wx-3.3/wx/cpp.h +++ b/include/wx-3.3/wx/cpp.h @@ -114,6 +114,20 @@ #define __WXFUNCTION__ __func__ #endif /* __WXFUNCTION__ already defined */ +/* + Expands to the current function's full signature, if available. + + Falls back to the function name (i.e., __func__) if not available. + */ +#ifndef __WXFUNCTION_SIG__ + #if defined(__VISUALC__) + #define __WXFUNCTION_SIG__ __FUNCSIG__ + #elif defined(__GNUG__) + #define __WXFUNCTION_SIG__ __PRETTY_FUNCTION__ + #else + #define __WXFUNCTION_SIG__ __func__ + #endif +#endif /* __WXFUNCTION_SIG__ already defined */ /* wxCALL_FOR_EACH(what, ...) calls the macro from its first argument, what(pos, x), diff --git a/include/wx-3.3/wx/datetime.h b/include/wx-3.3/wx/datetime.h index 4f9d5cf..445c3db 100644 --- a/include/wx-3.3/wx/datetime.h +++ b/include/wx-3.3/wx/datetime.h @@ -1728,9 +1728,11 @@ class WXDLLIMPEXP_BASE wxDateTimeChristianHolidays : public wxDateTimeUSCatholic inline bool wxDateTime::IsInStdRange() const { - // currently we don't know what is the real type of time_t so prefer to err - // on the safe side and limit it to 32 bit values which is safe everywhere - return m_time >= 0l && (m_time / TIME_T_FACTOR) < wxINT32_MAX; + // if sizeof(time_t) is greater than 32 bits, we assume it + // is safe to return values exceeding wxINT32_MAX + + return m_time >= 0l && + ( (sizeof(time_t) > 4 ) || ( (m_time / TIME_T_FACTOR) < wxINT32_MAX) ); } /* static */ @@ -1837,7 +1839,7 @@ inline time_t wxDateTime::GetTicks() const return (time_t)-1; } - return (time_t)((m_time / (long)TIME_T_FACTOR).ToLong()) + WX_TIME_BASE_OFFSET; + return (time_t)((m_time / TIME_T_FACTOR).GetValue()) + WX_TIME_BASE_OFFSET; } inline bool wxDateTime::SetToLastWeekDay(WeekDay weekday, diff --git a/include/wx-3.3/wx/dc.h b/include/wx-3.3/wx/dc.h index b89c381..0f4afa0 100644 --- a/include/wx-3.3/wx/dc.h +++ b/include/wx-3.3/wx/dc.h @@ -697,25 +697,15 @@ class WXDLLIMPEXP_CORE wxDCImpl: public wxObject }; -class WXDLLIMPEXP_CORE wxDC : public wxObject +// This base class provides only functions that don't modify device contents. +class WXDLLIMPEXP_CORE wxReadOnlyDC : public wxObject { public: - // copy attributes (font, colours and writing direction) from another DC - void CopyAttributes(const wxDC& dc); - - virtual ~wxDC() { delete m_pimpl; } - - wxDCImpl *GetImpl() - { return m_pimpl; } - const wxDCImpl *GetImpl() const - { return m_pimpl; } + virtual ~wxReadOnlyDC() { delete m_pimpl; } wxWindow *GetWindow() const { return m_pimpl->GetWindow(); } - void *GetHandle() const - { return m_pimpl->GetHandle(); } - bool IsOk() const { return m_pimpl && m_pimpl->IsOk(); } @@ -784,83 +774,13 @@ class WXDLLIMPEXP_CORE wxDC : public wxObject wxLayoutDirection GetLayoutDirection() const { return m_pimpl->GetLayoutDirection(); } - // page and document - - bool StartDoc(const wxString& message) - { return m_pimpl->StartDoc(message); } - void EndDoc() - { m_pimpl->EndDoc(); } - - void StartPage() - { m_pimpl->StartPage(); } - void EndPage() - { m_pimpl->EndPage(); } - - // bounding box - - void CalcBoundingBox(wxCoord x, wxCoord y) - { m_pimpl->CalcBoundingBox(x,y); } - void ResetBoundingBox() - { m_pimpl->ResetBoundingBox(); } - - wxCoord MinX() const - { return m_pimpl->MinX(); } - wxCoord MaxX() const - { return m_pimpl->MaxX(); } - wxCoord MinY() const - { return m_pimpl->MinY(); } - wxCoord MaxY() const - { return m_pimpl->MaxY(); } - - // setters and getters + // font void SetFont(const wxFont& font) { m_pimpl->SetFont( font ); } const wxFont& GetFont() const { return m_pimpl->GetFont(); } - void SetPen(const wxPen& pen) - { m_pimpl->SetPen( pen ); } - const wxPen& GetPen() const - { return m_pimpl->GetPen(); } - - void SetBrush(const wxBrush& brush) - { m_pimpl->SetBrush( brush ); } - const wxBrush& GetBrush() const - { return m_pimpl->GetBrush(); } - - void SetBackground(const wxBrush& brush) - { m_pimpl->SetBackground( brush ); } - const wxBrush& GetBackground() const - { return m_pimpl->GetBackground(); } - - void SetBackgroundMode(int mode) - { m_pimpl->SetBackgroundMode( mode ); } - int GetBackgroundMode() const - { return m_pimpl->GetBackgroundMode(); } - - void SetTextForeground(const wxColour& colour) - { m_pimpl->SetTextForeground(colour); } - const wxColour& GetTextForeground() const - { return m_pimpl->GetTextForeground(); } - - void SetTextBackground(const wxColour& colour) - { m_pimpl->SetTextBackground(colour); } - const wxColour& GetTextBackground() const - { return m_pimpl->GetTextBackground(); } - -#if wxUSE_PALETTE - void SetPalette(const wxPalette& palette) - { m_pimpl->SetPalette(palette); } -#endif // wxUSE_PALETTE - - // logical functions - - void SetLogicalFunction(wxRasterOperationMode function) - { m_pimpl->SetLogicalFunction(function); } - wxRasterOperationMode GetLogicalFunction() const - { return m_pimpl->GetLogicalFunction(); } - // text measurement wxCoord GetCharHeight() const @@ -908,55 +828,6 @@ class WXDLLIMPEXP_CORE wxDC : public wxObject bool GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const { return m_pimpl->DoGetPartialTextExtents(text, widths); } - // clearing - - void Clear() - { m_pimpl->Clear(); } - - // clipping - - void SetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height) - { m_pimpl->DoSetClippingRegion(x, y, width, height); } - void SetClippingRegion(const wxPoint& pt, const wxSize& sz) - { m_pimpl->DoSetClippingRegion(pt.x, pt.y, sz.x, sz.y); } - void SetClippingRegion(const wxRect& rect) - { m_pimpl->DoSetClippingRegion(rect.x, rect.y, rect.width, rect.height); } - - // unlike the functions above, the coordinates of the region used in this - // one are in device coordinates, not the logical ones - void SetDeviceClippingRegion(const wxRegion& region) - { m_pimpl->DoSetDeviceClippingRegion(region); } - - // this function is deprecated because its name is confusing: you may - // expect it to work with logical coordinates but, in fact, it does exactly - // the same thing as SetDeviceClippingRegion() - // - // please review the code using it and either replace it with calls to - // SetDeviceClippingRegion() or correct it if it was [wrongly] passing - // logical coordinates to this function - wxDEPRECATED_INLINE(void SetClippingRegion(const wxRegion& region), - SetDeviceClippingRegion(region); ) - - void DestroyClippingRegion() - { m_pimpl->DestroyClippingRegion(); } - - bool GetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const - { - wxRect r; - const bool clipping = m_pimpl->DoGetClippingRect(r); - if ( x ) - *x = r.x; - if ( y ) - *y = r.y; - if ( w ) - *w = r.width; - if ( h ) - *h = r.height; - return clipping; - } - bool GetClippingBox(wxRect& rect) const - { return m_pimpl->DoGetClippingRect(rect); } - // coordinates conversions and transforms wxCoord DeviceToLogicalX(wxCoord x) const @@ -1042,6 +913,151 @@ class WXDLLIMPEXP_CORE wxDC : public wxObject void SetDeviceLocalOrigin( wxCoord x, wxCoord y ) { m_pimpl->SetDeviceLocalOrigin( x, y ); } +protected: + explicit wxReadOnlyDC(wxDCImpl *pimpl) + : m_pimpl(pimpl) + { + } + + wxDCImpl * const m_pimpl; +}; + +// Full device context class, providing functions for drawing on the device in +// addition to the base class functions only querying it. +class WXDLLIMPEXP_CORE wxDC : public wxReadOnlyDC +{ +public: + // copy attributes (font, colours and writing direction) from another DC + void CopyAttributes(const wxDC& dc); + + wxDCImpl *GetImpl() + { return m_pimpl; } + const wxDCImpl *GetImpl() const + { return m_pimpl; } + + void *GetHandle() const + { return m_pimpl->GetHandle(); } + + // page and document + + bool StartDoc(const wxString& message) + { return m_pimpl->StartDoc(message); } + void EndDoc() + { m_pimpl->EndDoc(); } + + void StartPage() + { m_pimpl->StartPage(); } + void EndPage() + { m_pimpl->EndPage(); } + + // bounding box + + void CalcBoundingBox(wxCoord x, wxCoord y) + { m_pimpl->CalcBoundingBox(x,y); } + void ResetBoundingBox() + { m_pimpl->ResetBoundingBox(); } + + wxCoord MinX() const + { return m_pimpl->MinX(); } + wxCoord MaxX() const + { return m_pimpl->MaxX(); } + wxCoord MinY() const + { return m_pimpl->MinY(); } + wxCoord MaxY() const + { return m_pimpl->MaxY(); } + + // setters and getters + + void SetPen(const wxPen& pen) + { m_pimpl->SetPen( pen ); } + const wxPen& GetPen() const + { return m_pimpl->GetPen(); } + + void SetBrush(const wxBrush& brush) + { m_pimpl->SetBrush( brush ); } + const wxBrush& GetBrush() const + { return m_pimpl->GetBrush(); } + + void SetBackground(const wxBrush& brush) + { m_pimpl->SetBackground( brush ); } + const wxBrush& GetBackground() const + { return m_pimpl->GetBackground(); } + + void SetBackgroundMode(int mode) + { m_pimpl->SetBackgroundMode( mode ); } + int GetBackgroundMode() const + { return m_pimpl->GetBackgroundMode(); } + + void SetTextForeground(const wxColour& colour) + { m_pimpl->SetTextForeground(colour); } + const wxColour& GetTextForeground() const + { return m_pimpl->GetTextForeground(); } + + void SetTextBackground(const wxColour& colour) + { m_pimpl->SetTextBackground(colour); } + const wxColour& GetTextBackground() const + { return m_pimpl->GetTextBackground(); } + +#if wxUSE_PALETTE + void SetPalette(const wxPalette& palette) + { m_pimpl->SetPalette(palette); } +#endif // wxUSE_PALETTE + + // logical functions + + void SetLogicalFunction(wxRasterOperationMode function) + { m_pimpl->SetLogicalFunction(function); } + wxRasterOperationMode GetLogicalFunction() const + { return m_pimpl->GetLogicalFunction(); } + + // clearing + + void Clear() + { m_pimpl->Clear(); } + + // clipping + + void SetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height) + { m_pimpl->DoSetClippingRegion(x, y, width, height); } + void SetClippingRegion(const wxPoint& pt, const wxSize& sz) + { m_pimpl->DoSetClippingRegion(pt.x, pt.y, sz.x, sz.y); } + void SetClippingRegion(const wxRect& rect) + { m_pimpl->DoSetClippingRegion(rect.x, rect.y, rect.width, rect.height); } + + // unlike the functions above, the coordinates of the region used in this + // one are in device coordinates, not the logical ones + void SetDeviceClippingRegion(const wxRegion& region) + { m_pimpl->DoSetDeviceClippingRegion(region); } + + // this function is deprecated because its name is confusing: you may + // expect it to work with logical coordinates but, in fact, it does exactly + // the same thing as SetDeviceClippingRegion() + // + // please review the code using it and either replace it with calls to + // SetDeviceClippingRegion() or correct it if it was [wrongly] passing + // logical coordinates to this function + wxDEPRECATED_INLINE(void SetClippingRegion(const wxRegion& region), + SetDeviceClippingRegion(region); ) + + void DestroyClippingRegion() + { m_pimpl->DestroyClippingRegion(); } + + bool GetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const + { + wxRect r; + const bool clipping = m_pimpl->DoGetClippingRect(r); + if ( x ) + *x = r.x; + if ( y ) + *y = r.y; + if ( w ) + *w = r.width; + if ( h ) + *h = r.height; + return clipping; + } + bool GetClippingBox(wxRect& rect) const + { return m_pimpl->DoGetClippingRect(rect); } // ----------------------------------------------- // the actual drawing API @@ -1314,9 +1330,7 @@ class WXDLLIMPEXP_CORE wxDC : public wxObject protected: // ctor takes ownership of the pointer - wxDC(wxDCImpl *pimpl) : m_pimpl(pimpl) { } - - wxDCImpl * const m_pimpl; + explicit wxDC(wxDCImpl *pimpl) : wxReadOnlyDC(pimpl) { } void SetWindow(wxWindow* w) { return m_pimpl->SetWindow(w); } diff --git a/include/wx-3.3/wx/dcclient.h b/include/wx-3.3/wx/dcclient.h index ced769c..1f6e9db 100644 --- a/include/wx-3.3/wx/dcclient.h +++ b/include/wx-3.3/wx/dcclient.h @@ -61,4 +61,180 @@ class WXDLLIMPEXP_CORE wxPaintDC : public wxClientDC wxDECLARE_ABSTRACT_CLASS(wxPaintDC); }; +//----------------------------------------------------------------------------- +// wxInfoDC +//----------------------------------------------------------------------------- + +// A very limited wxDC-like class which can be only used to query the device +// context, but not to draw anything on it: it doesn't inherit from wxDC but +// can be implicitly converted to wxReadOnlyDC and makes all of its functions +// available. +class WXDLLIMPEXP_CORE wxInfoDC +{ +public: + explicit wxInfoDC(wxWindow* win) : m_dcClient(win) { } + + // Implicit conversions to wxReadOnlyDC allow passing objects of this class + // to the functions taking this type. + operator wxReadOnlyDC&() { return m_dcClient; } + operator const wxReadOnlyDC&() const { return m_dcClient; } + + wxReadOnlyDC* operator&() { return &m_dcClient; } + const wxReadOnlyDC* operator&() const { return &m_dcClient; } + + // wxReadOnlyDC re-exposed here. + wxWindow* GetWindow() const { return m_dcClient.GetWindow(); } + bool IsOk() const { return m_dcClient.IsOk(); } + + bool CanDrawBitmap() const { return m_dcClient.CanDrawBitmap(); } + bool CanGetTextExtent() const { return m_dcClient.CanGetTextExtent(); } + + void GetSize(int *width, int *height) const { m_dcClient.GetSize(width, height); } + wxSize GetSize() const { return m_dcClient.GetSize(); } + void GetSizeMM(int* width, int* height) const { m_dcClient.GetSizeMM(width, height); } + wxSize GetSizeMM() const { return m_dcClient.GetSizeMM(); } + + int GetDepth() const { return m_dcClient.GetDepth(); } + wxSize GetPPI() const { return m_dcClient.GetPPI(); } + + int GetResolution() const { return m_dcClient.GetResolution(); } + double GetContentScaleFactor() const { return m_dcClient.GetContentScaleFactor(); } + + wxSize FromDIP(const wxSize& sz) const { return m_dcClient.FromDIP(sz); } + wxPoint FromDIP(const wxPoint& pt) const { return m_dcClient.FromDIP(pt); } + int FromDIP(int d) const { return m_dcClient.FromDIP(d); } + + wxSize ToDIP(const wxSize & sz) const { return m_dcClient.ToDIP(sz); } + wxPoint ToDIP(const wxPoint & pt) const { return m_dcClient.ToDIP(pt); } + int ToDIP(int d) const { return m_dcClient.ToDIP(d); } + + void SetLayoutDirection(wxLayoutDirection dir) + { m_dcClient.SetLayoutDirection( dir ); } + wxLayoutDirection GetLayoutDirection() const + { return m_dcClient.GetLayoutDirection(); } + + void SetFont(const wxFont& font) { m_dcClient.SetFont(font); } + const wxFont& GetFont() const { return m_dcClient.GetFont(); } + + wxCoord GetCharHeight() const { return m_dcClient.GetCharHeight(); } + wxCoord GetCharWidth() const { return m_dcClient.GetCharWidth(); } + + wxFontMetrics GetFontMetrics() const { return m_dcClient.GetFontMetrics(); } + void GetTextExtent(const wxString& string, + wxCoord *x, wxCoord *y, + wxCoord *descent = nullptr, + wxCoord *externalLeading = nullptr, + const wxFont *theFont = nullptr) const + { return m_dcClient.GetTextExtent(string, x, y, descent, externalLeading, theFont); } + + wxSize GetTextExtent(const wxString& string) const + { + return m_dcClient.GetTextExtent(string); + } + + void GetMultiLineTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *heightLine = nullptr, + const wxFont *font = nullptr) const + { return m_dcClient.GetMultiLineTextExtent(string, width, height, heightLine, font); } + + wxSize GetMultiLineTextExtent(const wxString& string) const + { + return m_dcClient.GetMultiLineTextExtent(string); + } + + bool GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const + { return m_dcClient.GetPartialTextExtents(text, widths); } + + wxCoord DeviceToLogicalX(wxCoord x) const + { return m_dcClient.DeviceToLogicalX(x); } + wxCoord DeviceToLogicalY(wxCoord y) const + { return m_dcClient.DeviceToLogicalY(y); } + wxCoord DeviceToLogicalXRel(wxCoord x) const + { return m_dcClient.DeviceToLogicalXRel(x); } + wxCoord DeviceToLogicalYRel(wxCoord y) const + { return m_dcClient.DeviceToLogicalYRel(y); } + wxPoint DeviceToLogical(const wxPoint& pt) const + { return m_dcClient.DeviceToLogical(pt.x, pt.y); } + wxPoint DeviceToLogical(wxCoord x, wxCoord y) const + { return m_dcClient.DeviceToLogical(x, y); } + wxSize DeviceToLogicalRel(const wxSize& dim) const + { return m_dcClient.DeviceToLogicalRel(dim.x, dim.y); } + wxSize DeviceToLogicalRel(int x, int y) const + { return m_dcClient.DeviceToLogicalRel(x, y); } + wxCoord LogicalToDeviceX(wxCoord x) const + { return m_dcClient.LogicalToDeviceX(x); } + wxCoord LogicalToDeviceY(wxCoord y) const + { return m_dcClient.LogicalToDeviceY(y); } + wxCoord LogicalToDeviceXRel(wxCoord x) const + { return m_dcClient.LogicalToDeviceXRel(x); } + wxCoord LogicalToDeviceYRel(wxCoord y) const + { return m_dcClient.LogicalToDeviceYRel(y); } + wxPoint LogicalToDevice(const wxPoint& pt) const + { return m_dcClient.LogicalToDevice(pt.x, pt.y); } + wxPoint LogicalToDevice(wxCoord x, wxCoord y) const + { return m_dcClient.LogicalToDevice(x, y); } + wxSize LogicalToDeviceRel(const wxSize& dim) const + { return m_dcClient.LogicalToDeviceRel(dim.x, dim.y); } + wxSize LogicalToDeviceRel(int x, int y) const + { return m_dcClient.LogicalToDeviceRel(x, y); } + + void SetMapMode(wxMappingMode mode) + { m_dcClient.SetMapMode(mode); } + wxMappingMode GetMapMode() const + { return m_dcClient.GetMapMode(); } + + void SetUserScale(double x, double y) + { m_dcClient.SetUserScale(x,y); } + void GetUserScale(double *x, double *y) const + { m_dcClient.GetUserScale( x, y ); } + + void SetLogicalScale(double x, double y) + { m_dcClient.SetLogicalScale( x, y ); } + void GetLogicalScale(double *x, double *y) const + { m_dcClient.GetLogicalScale( x, y ); } + + void SetLogicalOrigin(wxCoord x, wxCoord y) + { m_dcClient.SetLogicalOrigin(x,y); } + void GetLogicalOrigin(wxCoord *x, wxCoord *y) const + { m_dcClient.GetLogicalOrigin(x, y); } + wxPoint GetLogicalOrigin() const + { return m_dcClient.GetLogicalOrigin(); } + + void SetDeviceOrigin(wxCoord x, wxCoord y) + { m_dcClient.SetDeviceOrigin( x, y); } + void GetDeviceOrigin(wxCoord *x, wxCoord *y) const + { m_dcClient.GetDeviceOrigin(x, y); } + wxPoint GetDeviceOrigin() const + { return m_dcClient.GetDeviceOrigin(); } + + void SetAxisOrientation(bool xLeftRight, bool yBottomUp) + { m_dcClient.SetAxisOrientation(xLeftRight, yBottomUp); } + +#if wxUSE_DC_TRANSFORM_MATRIX + bool CanUseTransformMatrix() const + { return m_dcClient.CanUseTransformMatrix(); } + + bool SetTransformMatrix(const wxAffineMatrix2D &matrix) + { return m_dcClient.SetTransformMatrix(matrix); } + + wxAffineMatrix2D GetTransformMatrix() const + { return m_dcClient.GetTransformMatrix(); } + + void ResetTransformMatrix() + { m_dcClient.ResetTransformMatrix(); } +#endif // wxUSE_DC_TRANSFORM_MATRIX + + // mostly internal + void SetDeviceLocalOrigin( wxCoord x, wxCoord y ) + { m_dcClient.SetDeviceLocalOrigin( x, y ); } +private: + wxClientDC m_dcClient; +}; + +// Define this to indicate that wxInfoDC is available to allow application code +// to fall back to using wxClientDC if it isn't. +#define wxHAS_INFO_DC + #endif // _WX_DCCLIENT_H_BASE_ diff --git a/include/wx-3.3/wx/defs.h b/include/wx-3.3/wx/defs.h index 5359e12..0a625f9 100644 --- a/include/wx-3.3/wx/defs.h +++ b/include/wx-3.3/wx/defs.h @@ -1452,8 +1452,6 @@ wxALLOW_COMBINING_ENUMS(wxSizerFlagBits, wxStretch) /* wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, */ /* disable it - but still show (see also wxLB_ALWAYS_SB style) */ -/* */ -/* NB: as this style is only supported by wxUniversal and wxMSW so far */ #define wxALWAYS_SHOW_SB 0x00800000 /* Clip children when painting, which reduces flicker in e.g. frames and */ @@ -3042,11 +3040,25 @@ typedef const void* WXWidget; /* macros to define a class without copy ctor nor assignment operator */ /* --------------------------------------------------------------------------- */ +/* Obsolete macros kept only for compatibility, just use the corresponding + C++11 keywords directly in the class definition when writing new code. */ #define wxMEMBER_DELETE = delete + +/* Also note that these macro do _not_ require a semicolon after them for + compatibility with wxWidgets 3.2. */ #define wxDECLARE_DEFAULT_COPY_CTOR(classname) \ public: \ classname(const classname&) = default; +#define wxDECLARE_DEFAULT_COPY(classname) \ + wxDECLARE_DEFAULT_COPY_CTOR(classname) \ + classname& operator=(const classname&) = default; + +#define wxDECLARE_DEFAULT_COPY_AND_DEF(classname) \ + classname() = default; \ + wxDECLARE_DEFAULT_COPY(classname); + +/* These macros do require a semicolon after them. */ #define wxDECLARE_NO_COPY_CLASS(classname) \ private: \ classname(const classname&) wxMEMBER_DELETE; \ diff --git a/include/wx-3.3/wx/event.h b/include/wx-3.3/wx/event.h index 24db9be..a7670bd 100644 --- a/include/wx-3.3/wx/event.h +++ b/include/wx-3.3/wx/event.h @@ -45,6 +45,7 @@ class WXDLLIMPEXP_FWD_BASE wxEventFilter; #if wxUSE_GUI class WXDLLIMPEXP_FWD_CORE wxDC; class WXDLLIMPEXP_FWD_CORE wxMenu; + class WXDLLIMPEXP_FWD_CORE wxReadOnlyDC; class WXDLLIMPEXP_FWD_CORE wxWindow; class WXDLLIMPEXP_FWD_CORE wxWindowBase; #endif // wxUSE_GUI @@ -287,9 +288,6 @@ class wxObjectEventFunctor : public wxEventFunctor wxEvtHandler *m_handler; wxEventFunction m_method; - // Provide a dummy default ctor for type info purposes - wxObjectEventFunctor() : m_handler(nullptr), m_method(nullptr) { } - WX_DECLARE_TYPEINFO_INLINE(wxObjectEventFunctor) }; @@ -460,9 +458,6 @@ class wxEventFunctorMethod EventHandler *m_handler; void (Class::*m_method)(EventArg&); - // Provide a dummy default ctor for type info purposes - wxEventFunctorMethod() = default; - typedef wxEventFunctorMethod thisClass; WX_DECLARE_TYPEINFO_INLINE(thisClass) @@ -516,9 +511,6 @@ class wxEventFunctorFunction : public wxEventFunctor private: void (*m_handler)(EventArg&); - // Provide a dummy default ctor for type info purposes - wxEventFunctorFunction() = default; - typedef wxEventFunctorFunction thisClass; WX_DECLARE_TYPEINFO_INLINE(thisClass) }; @@ -568,9 +560,6 @@ class wxEventFunctorFunctor : public wxEventFunctor // Use the address of the original functor for comparison in IsMatching: const void *m_handlerAddr; - // Provide a dummy default ctor for type info purposes - wxEventFunctorFunctor() = default; - typedef wxEventFunctorFunctor thisClass; WX_DECLARE_TYPEINFO_INLINE(thisClass) }; @@ -1857,7 +1846,7 @@ class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent, int GetClickCount() const { return m_clickCount; } // Find the logical position of the event given the DC - wxPoint GetLogicalPosition(const wxDC& dc) const; + wxPoint GetLogicalPosition(const wxReadOnlyDC& dc) const; // Get wheel rotation, positive or negative indicates direction of // rotation. Current devices all send an event when rotation is equal to @@ -2937,7 +2926,7 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent wxUpdateUIEvent(wxWindowID commandId = 0) : wxCommandEvent(wxEVT_UPDATE_UI, commandId) { - m_checked = + m_3checked = wxCHK_UNCHECKED; m_enabled = m_shown = m_setEnabled = @@ -2945,10 +2934,11 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent m_setText = m_setChecked = false; m_isCheckable = true; + m_is3State = false; } wxUpdateUIEvent(const wxUpdateUIEvent& event) : wxCommandEvent(event), - m_checked(event.m_checked), + m_3checked(event.m_3checked), m_enabled(event.m_enabled), m_shown(event.m_shown), m_setEnabled(event.m_setEnabled), @@ -2956,10 +2946,12 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent m_setText(event.m_setText), m_setChecked(event.m_setChecked), m_isCheckable(event.m_isCheckable), + m_is3State(event.m_is3State), m_text(event.m_text) { } - bool GetChecked() const { return m_checked; } + bool GetChecked() const { return Get3StateValue() != wxCHK_UNCHECKED; } + wxCheckBoxState Get3StateValue() const { return m_3checked; } bool GetEnabled() const { return m_enabled; } bool GetShown() const { return m_shown; } wxString GetText() const { return m_text; } @@ -2968,14 +2960,18 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent bool GetSetEnabled() const { return m_setEnabled; } bool GetSetShown() const { return m_setShown; } - void Check(bool check) { m_checked = check; m_setChecked = true; } + void Check(bool check) { Set3StateValue(check ? wxCHK_CHECKED : wxCHK_UNCHECKED); } + void Set3StateValue(wxCheckBoxState check); void Enable(bool enable) { m_enabled = enable; m_setEnabled = true; } void Show(bool show) { m_shown = show; m_setShown = true; } void SetText(const wxString& text) { m_text = text; m_setText = true; } // A flag saying if the item can be checked. True by default. bool IsCheckable() const { return m_isCheckable; } - void DisallowCheck() { m_isCheckable = false; } + void DisallowCheck(); + // A flag saying if the item can be wxCHK_UNDETERMINED. False by default. + bool Is3State() const { return m_is3State; } + void Allow3rdState(bool b = true); // Sets the interval between updates in milliseconds. // Set to -1 to disable updates, or to 0 to update as frequently as possible. @@ -3002,7 +2998,7 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent virtual wxEvent *Clone() const override { return new wxUpdateUIEvent(*this); } protected: - bool m_checked; + wxCheckBoxState m_3checked; bool m_enabled; bool m_shown; bool m_setEnabled; @@ -3010,6 +3006,7 @@ class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent bool m_setText; bool m_setChecked; bool m_isCheckable; + bool m_is3State; wxString m_text; #if wxUSE_LONGLONG static wxLongLong sm_lastUpdate; diff --git a/include/wx-3.3/wx/features.h b/include/wx-3.3/wx/features.h index fa7a9cf..344d1a3 100644 --- a/include/wx-3.3/wx/features.h +++ b/include/wx-3.3/wx/features.h @@ -112,7 +112,7 @@ physical pixels and a window must be 200px wide to have the same apparent size in high DPI as in normal DPI. */ -#if defined(__WXGTK3__) || defined(__WXMAC__) +#if defined(__WXGTK3__) || defined(__WXMAC__) || defined(__WXQT__) #define wxHAS_DPI_INDEPENDENT_PIXELS // This is an older synonym kept only for compatibility diff --git a/include/wx-3.3/wx/filepicker.h b/include/wx-3.3/wx/filepicker.h index f4b68ab..b91a327 100644 --- a/include/wx-3.3/wx/filepicker.h +++ b/include/wx-3.3/wx/filepicker.h @@ -86,20 +86,20 @@ class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase virtual ~wxFileDirPickerWidgetBase() = default; // Path here is the name of the selected file or directory. - wxString GetPath() const { return m_path; } + virtual wxString GetPath() const { return m_path; } virtual void SetPath(const wxString &str) { m_path=str; } // Set the directory to open the file browse dialog at initially. - virtual void SetInitialDirectory(const wxString& dir) = 0; + virtual void SetInitialDirectory(const wxString& dir) { m_initialDir = dir; } // returns the picker widget cast to wxControl virtual wxControl *AsControl() = 0; protected: - virtual void UpdateDialogPath(wxDialog *) = 0; - virtual void UpdatePathFromDialog(wxDialog *) = 0; - wxString m_path; + + // Initial directory set by SetInitialDirectory() call or empty. + wxString m_initialDir; }; // Styles which must be supported by all controls implementing wxFileDirPickerWidgetBase @@ -113,6 +113,8 @@ class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase #define wxFLP_CHANGE_DIR 0x4000 #define wxFLP_SMALL wxPB_SMALL +#define wxFILEBTN_DEFAULT_STYLE (wxFLP_OPEN) + // NOTE: wxMULTIPLE is not supported ! @@ -120,6 +122,9 @@ class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase #define wxDIRP_CHANGE_DIR 0x0010 #define wxDIRP_SMALL wxPB_SMALL +#define wxDIRBTN_DEFAULT_STYLE 0 + + // map platform-dependent controls which implement the wxFileDirPickerWidgetBase // under the name "wxFilePickerWidget" and "wxDirPickerWidget". diff --git a/include/wx-3.3/wx/gdicmn.h b/include/wx-3.3/wx/gdicmn.h index 8cc8f5f..363cdd5 100644 --- a/include/wx-3.3/wx/gdicmn.h +++ b/include/wx-3.3/wx/gdicmn.h @@ -986,10 +986,7 @@ wxDEPRECATED_MSG("Use wxList directly or just a standard container") wxResourceCache : public wxList { public: - wxResourceCache() = default; -#if !wxUSE_STD_CONTAINERS - wxResourceCache(unsigned int keyType) : wxList(keyType) { } -#endif + using wxList::wxList; virtual ~wxResourceCache() { wxList::compatibility_iterator node = GetFirst (); diff --git a/include/wx-3.3/wx/generic/creddlgg.h b/include/wx-3.3/wx/generic/creddlgg.h index 9f99cb8..6332af8 100644 --- a/include/wx-3.3/wx/generic/creddlgg.h +++ b/include/wx-3.3/wx/generic/creddlgg.h @@ -17,6 +17,8 @@ #include "wx/dialog.h" #include "wx/webrequest.h" +class WXDLLIMPEXP_FWD_CORE wxTextCtrl; + class WXDLLIMPEXP_CORE wxGenericCredentialEntryDialog : public wxDialog { public: @@ -30,9 +32,8 @@ class WXDLLIMPEXP_CORE wxGenericCredentialEntryDialog : public wxDialog const wxString& title, const wxWebCredentials& cred = wxWebCredentials()); - void SetUser(const wxString& user) { m_userTextCtrl->SetValue(user); } - void SetPassword(const wxString& password) - { m_passwordTextCtrl->SetValue(password); } + void SetUser(const wxString& user); + void SetPassword(const wxString& password); wxWebCredentials GetCredentials() const; diff --git a/include/wx-3.3/wx/generic/filepickerg.h b/include/wx-3.3/wx/generic/filepickerg.h index 40554c1..8a7ff89 100644 --- a/include/wx-3.3/wx/generic/filepickerg.h +++ b/include/wx-3.3/wx/generic/filepickerg.h @@ -27,7 +27,7 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, public wxFileDirPickerWidgetBase { public: - wxGenericFileDirButton() { Init(); } + wxGenericFileDirButton() = default; wxGenericFileDirButton(wxWindow *parent, wxWindowID id, const wxString& label = wxASCII_STR(wxFilePickerWidgetLabel), @@ -40,7 +40,6 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxASCII_STR(wxFilePickerWidgetNameStr)) { - Init(); Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } @@ -56,8 +55,6 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, virtual wxEventType GetEventType() const = 0; - virtual void SetInitialDirectory(const wxString& dir) override; - public: bool Create(wxWindow *parent, wxWindowID id, @@ -75,19 +72,17 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, void OnButtonClick(wxCommandEvent &); protected: + // Return the path from the button-specific dialog (this is the same dialog + // that is returned by CreateDialog()). + virtual wxString GetPathFromDialog(wxDialog *p) const = 0; + + wxString m_message, m_wildcard; // we just store the style passed to the ctor here instead of passing it to // wxButton as some of our bits can conflict with wxButton styles and it // just doesn't make sense to use picker styles for wxButton anyhow - long m_pickerStyle; - - // Initial directory set by SetInitialDirectory() call or empty. - wxString m_initialDir; - -private: - // common part of all ctors - void Init() { m_pickerStyle = -1; } + long m_pickerStyle = -1; }; @@ -95,8 +90,6 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, // wxGenericFileButton: a button which brings up a wxFileDialog //----------------------------------------------------------------------------- -#define wxFILEBTN_DEFAULT_STYLE (wxFLP_OPEN) - class WXDLLIMPEXP_CORE wxGenericFileButton : public wxGenericFileDirButton { public: @@ -119,40 +112,42 @@ class WXDLLIMPEXP_CORE wxGenericFileButton : public wxGenericFileDirButton public: // overridable - virtual long GetDialogStyle() const + static long GetDialogStyle(long pickerStyle) { - // the derived class must initialize it if it doesn't use the - // non-default wxGenericFileDirButton ctor - wxASSERT_MSG( m_pickerStyle != -1, - "forgot to initialize m_pickerStyle?" ); - - long filedlgstyle = 0; - if ( m_pickerStyle & wxFLP_OPEN ) + if ( pickerStyle & wxFLP_OPEN ) filedlgstyle |= wxFD_OPEN; - if ( m_pickerStyle & wxFLP_SAVE ) + if ( pickerStyle & wxFLP_SAVE ) filedlgstyle |= wxFD_SAVE; - if ( m_pickerStyle & wxFLP_OVERWRITE_PROMPT ) + if ( pickerStyle & wxFLP_OVERWRITE_PROMPT ) filedlgstyle |= wxFD_OVERWRITE_PROMPT; - if ( m_pickerStyle & wxFLP_FILE_MUST_EXIST ) + if ( pickerStyle & wxFLP_FILE_MUST_EXIST ) filedlgstyle |= wxFD_FILE_MUST_EXIST; - if ( m_pickerStyle & wxFLP_CHANGE_DIR ) + if ( pickerStyle & wxFLP_CHANGE_DIR ) filedlgstyle |= wxFD_CHANGE_DIR; return filedlgstyle; } + long GetDialogStyle() const + { + // the derived class must initialize it if it doesn't use the + // non-default wxGenericFileDirButton ctor + wxASSERT_MSG( m_pickerStyle != -1, + "forgot to initialize m_pickerStyle?" ); + + return GetDialogStyle(m_pickerStyle); + } + virtual wxDialog *CreateDialog() override; wxEventType GetEventType() const override { return wxEVT_FILEPICKER_CHANGED; } protected: - void UpdateDialogPath(wxDialog *p) override - { wxStaticCast(p, wxFileDialog)->SetPath(m_path); } - void UpdatePathFromDialog(wxDialog *p) override - { m_path = wxStaticCast(p, wxFileDialog)->GetPath(); } + wxString GetPathFromDialog(wxDialog *p) const override + { return wxStaticCast(p, wxFileDialog)->GetPath(); } private: wxDECLARE_DYNAMIC_CLASS(wxGenericFileButton); @@ -163,8 +158,6 @@ class WXDLLIMPEXP_CORE wxGenericFileButton : public wxGenericFileDirButton // wxGenericDirButton: a button which brings up a wxDirDialog //----------------------------------------------------------------------------- -#define wxDIRBTN_DEFAULT_STYLE 0 - class WXDLLIMPEXP_CORE wxGenericDirButton : public wxGenericFileDirButton { public: @@ -186,28 +179,31 @@ class WXDLLIMPEXP_CORE wxGenericDirButton : public wxGenericFileDirButton public: // overridable - virtual long GetDialogStyle() const + static long GetDialogStyle(long pickerStyle) { long dirdlgstyle = wxDD_DEFAULT_STYLE; - if ( m_pickerStyle & wxDIRP_DIR_MUST_EXIST ) + if ( pickerStyle & wxDIRP_DIR_MUST_EXIST ) dirdlgstyle |= wxDD_DIR_MUST_EXIST; - if ( m_pickerStyle & wxDIRP_CHANGE_DIR ) + if ( pickerStyle & wxDIRP_CHANGE_DIR ) dirdlgstyle |= wxDD_CHANGE_DIR; return dirdlgstyle; } + long GetDialogStyle() const + { + return GetDialogStyle(m_pickerStyle); + } + virtual wxDialog *CreateDialog() override; wxEventType GetEventType() const override { return wxEVT_DIRPICKER_CHANGED; } protected: - void UpdateDialogPath(wxDialog *p) override - { wxStaticCast(p, wxDirDialog)->SetPath(m_path); } - void UpdatePathFromDialog(wxDialog *p) override - { m_path = wxStaticCast(p, wxDirDialog)->GetPath(); } + wxString GetPathFromDialog(wxDialog *p) const override + { return wxStaticCast(p, wxDirDialog)->GetPath(); } private: wxDECLARE_DYNAMIC_CLASS(wxGenericDirButton); diff --git a/include/wx-3.3/wx/generic/grid.h b/include/wx-3.3/wx/generic/grid.h index aeb6363..7b98aa8 100644 --- a/include/wx-3.3/wx/generic/grid.h +++ b/include/wx-3.3/wx/generic/grid.h @@ -18,6 +18,7 @@ #include "wx/scrolwin.h" #include +#include #include #include @@ -120,6 +121,11 @@ class wxGridRowOperations; class wxGridColumnOperations; class wxGridDirectionOperations; +#if wxUSE_ACCESSIBILITY +class WXDLLIMPEXP_FWD_CORE wxGridAccessible; +class WXDLLIMPEXP_FWD_CORE wxGridCellAccessible; +#endif // wxUSE_ACCESSIBILITY + // ---------------------------------------------------------------------------- // macros @@ -194,46 +200,48 @@ class WXDLLIMPEXP_CORE wxGridCellRenderer : public wxGridCellWorker int row, int col, bool isSelected) = 0; - // get the preferred size of the cell for its contents - virtual wxSize GetBestSize(wxGrid& grid, - wxGridCellAttr& attr, - wxDC& dc, - int row, int col) = 0; + // get the preferred size of the cell for its contents: this function must + // be overridden by all derived classes, it's not pure virtual only due to + // backwards-compatibility concerns. + virtual wxSize GetPreferredSize(wxGrid& grid, + wxGridCellAttr& attr, + wxReadOnlyDC& dc, + int row, int col); // Get the preferred height for a given width. Override this method if the // renderer computes height as function of its width, as is the case of the // standard wxGridCellAutoWrapStringRenderer, for example. // and vice versa - virtual int GetBestHeight(wxGrid& grid, - wxGridCellAttr& attr, - wxDC& dc, - int row, int col, - int WXUNUSED(width)) + virtual int GetPreferredHeight(wxGrid& grid, + wxGridCellAttr& attr, + wxReadOnlyDC& dc, + int row, int col, + int WXUNUSED(width)) { - return GetBestSize(grid, attr, dc, row, col).GetHeight(); + return GetPreferredSize(grid, attr, dc, row, col).GetHeight(); } // Get the preferred width for a given height, this is the symmetric - // version of GetBestHeight(). - virtual int GetBestWidth(wxGrid& grid, - wxGridCellAttr& attr, - wxDC& dc, - int row, int col, - int WXUNUSED(height)) + // version of GetPreferredHeight(). + virtual int GetPreferredWidth(wxGrid& grid, + wxGridCellAttr& attr, + wxReadOnlyDC& dc, + int row, int col, + int WXUNUSED(height)) { - return GetBestSize(grid, attr, dc, row, col).GetWidth(); + return GetPreferredSize(grid, attr, dc, row, col).GetWidth(); } - // Unlike GetBestSize(), this functions is optional: it is used when + // Unlike GetPreferredSize(), this functions is optional: it is used when // auto-sizing columns to determine the best width without iterating over // all cells in this column, if possible. // // If it isn't, return wxDefaultSize as the base class version does by // default. - virtual wxSize GetMaxBestSize(wxGrid& WXUNUSED(grid), - wxGridCellAttr& WXUNUSED(attr), - wxDC& WXUNUSED(dc)) + virtual wxSize GetMaxSize(wxGrid& WXUNUSED(grid), + wxGridCellAttr& WXUNUSED(attr), + wxReadOnlyDC& WXUNUSED(dc)) { return wxDefaultSize; } @@ -241,6 +249,28 @@ class WXDLLIMPEXP_CORE wxGridCellRenderer : public wxGridCellWorker // create a new object which is the copy of this one virtual wxGridCellRenderer *Clone() const = 0; + + // These functions still exist for compatibility and are the ones actually + // called by wxGrid, but new code should implement the new functions using + // "Preferred" in their names instead, to which these ones forward. + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); + virtual int GetBestHeight(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col, + int width); + virtual int GetBestWidth(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col, + int height); + virtual wxSize GetMaxBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc); + protected: // set the text colours before drawing void SetTextColoursAndFont(const wxGrid& grid, @@ -608,6 +638,19 @@ class WXDLLIMPEXP_CORE wxGridHeaderLabelsRenderer int horizAlign, int vertAlign, int textOrientation) const; + + // argument 'flags' for DrawHighlighted + enum DrawFlags + { + Draw_Pressed = 1 + }; + + // Draw highlighted row/col label. + virtual void DrawHighlighted(const wxGrid& grid, + wxDC& dc, + wxRect& rect, + int rowOrCol, + int flags = 0) const; }; // Currently the row/column/corner renders don't need any methods other than @@ -638,6 +681,12 @@ class WXDLLIMPEXP_CORE wxGridRowHeaderRendererDefault virtual void DrawBorder(const wxGrid& grid, wxDC& dc, wxRect& rect) const override; + + virtual void DrawHighlighted(const wxGrid& grid, + wxDC& dc, + wxRect& rect, + int row, + int flags = 0) const override; }; // Column header cells renderers @@ -648,6 +697,12 @@ class WXDLLIMPEXP_CORE wxGridColumnHeaderRendererDefault virtual void DrawBorder(const wxGrid& grid, wxDC& dc, wxRect& rect) const override; + + virtual void DrawHighlighted(const wxGrid& grid, + wxDC& dc, + wxRect& rect, + int col, + int flags = 0) const override; }; // Header corner renderer @@ -968,19 +1023,24 @@ class WXDLLIMPEXP_CORE wxGridCellCoords void SetCol( int n ) { m_col = n; } void Set( int row, int col ) { m_row = row; m_col = col; } + bool IsFullySpecified() const + { + return (m_row != -1 && m_col != -1); + } + bool operator==( const wxGridCellCoords& other ) const { - return (m_row == other.m_row && m_col == other.m_col); + return (m_row == other.m_row && m_col == other.m_col); } bool operator!=( const wxGridCellCoords& other ) const { - return (m_row != other.m_row || m_col != other.m_col); + return (m_row != other.m_row || m_col != other.m_col); } bool operator!() const { - return (m_row == -1 && m_col == -1 ); + return (m_row == -1 && m_col == -1); } private: @@ -1630,8 +1690,9 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas void DrawAllGridWindowLines( wxDC& dc, const wxRegion & reg , wxGridWindow *gridWindow); void DrawCell( wxDC& dc, const wxGridCellCoords& ); void DrawHighlight(wxDC& dc, const wxGridCellCoordsVector& cells); - void DrawFrozenBorder( wxDC& dc, wxGridWindow *gridWindow ); + void DrawFrozenBorder( wxDC& dc, wxGridWindow *gridWindow, const wxRect& renderExtent = {} ); void DrawLabelFrozenBorder( wxDC& dc, wxWindow *window, bool isRow ); + void DrawOverlaySelection( wxDC& dc, wxGridWindow *gridWindow, const wxRect& renderExtent = {} ); void ScrollWindow( int dx, int dy, const wxRect *rect ) override; @@ -1682,7 +1743,7 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // void StringToLines( const wxString& value, wxArrayString& lines ) const; - void GetTextBoxSize( const wxDC& dc, + void GetTextBoxSize( const wxReadOnlyDC& dc, const wxArrayString& lines, long *width, long *height ) const; @@ -1694,6 +1755,16 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas void RefreshBlock(int topRow, int leftCol, int bottomRow, int rightCol); + // This function simply calls RefreshRect() to refresh the cell at coordinates + // _coords_ and its corresponding row and column labels for highlighting. + void RefreshBlock(const wxGridCellCoords& coords); + + // Refresh the entire grid if _rect_ is null. If not null, then: + // - the intersection of the cells area with the rectangle _rect_ will be refreshed. + // - the projection of the rectangle _rect_ on the row label window will be refreshed. + // - the projection of the rectangle _rect_ on the col label window will be refreshed. + void RefreshRect(wxRect* rect); + // Refresh one or more areas (a combination of wxGridArea enums) entirely. void RefreshArea(int areas); @@ -1845,8 +1916,10 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // int GetDefaultRowLabelSize() const { return FromDIP(WXGRID_DEFAULT_ROW_LABEL_WIDTH); } int GetRowLabelSize() const { return m_rowLabelWidth; } + int GetRowLabelMinimalSize() const { return m_colLabelMinHeight; } int GetDefaultColLabelSize() const { return FromDIP(WXGRID_DEFAULT_COL_LABEL_HEIGHT); } int GetColLabelSize() const { return m_colLabelHeight; } + int GetColLabelMinimalSize() const { return m_rowLabelMinWidth; } wxColour GetLabelBackgroundColour() const { return m_labelBackgroundColour; } wxColour GetLabelTextColour() const { return m_labelTextColour; } wxFont GetLabelFont() const { return m_labelFont; } @@ -1874,6 +1947,8 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas void SetRowLabelSize( int width ); void SetColLabelSize( int height ); + void SetRowLabelMinimalSize( int width ); + void SetColLabelMinimalSize( int height ); void HideRowLabels() { SetRowLabelSize( 0 ); } void HideColLabels() { SetColLabelSize( 0 ); } void SetLabelBackgroundColour( const wxColour& ); @@ -1941,6 +2016,19 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas bool CanDragColSize(int col) const { return m_canDragColSize && DoCanResizeLine(col, m_setFixedCols); } + // functions globally enabling row/column label interactive resizing + // (disabled by default) + void EnableDragRowLabelSize(bool enable = true); + void DisableDragRowLabelSize() { EnableDragRowLabelSize(false); } + + void EnableDragColLabelSize(bool enable = true); + void DisableDragColLabelSize() { EnableDragColLabelSize(false); } + + bool CanDragRowLabelSize() const + { return m_canDragRowLabelSize; } + bool CanDragColLabelSize() const + { return m_canDragColLabelSize; } + // interactive row reordering (disabled by default) bool EnableDragRowMove( bool enable = true ); void DisableDragRowMove() { EnableDragRowMove( false ); } @@ -2228,7 +2316,9 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas wxGridCellEditor *GetDefaultEditor() const; wxGridCellEditor* GetCellEditor(int row, int col) const; - + // Determine (in constant time) whether the row/col should be highlighted or not. + bool IsRowLabelHighlighted(int row) const; + bool IsColLabelHighlighted(int col) const; // ------ cell value accessors // @@ -2257,6 +2347,12 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // make the cell editable/readonly void SetReadOnly(int row, int col, bool isReadOnly = true); + // Return @true if overlay selection can be used (wxUSE_GRAPHICS_CONTEXT=1) + // and DisableOverlaySelection() hadn't been called. + bool UsesOverlaySelection() const; + + void DisableOverlaySelection(); + // ------ select blocks of cells // void SelectRow( int row, bool addToSelected = false ); @@ -2304,6 +2400,9 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas wxArrayInt GetSelectedRows() const; wxArrayInt GetSelectedCols() const; + // Return the selected blocks (only the visible ones) as a vector of rects. + void GetSelectedRectangles(std::vector& rectangles, const wxRect& renderExtent) const; + // This function returns the rectangle that encloses the block of cells // limited by TopLeft and BottomRight cell in device coords and clipped // to the client size of the grid window. @@ -2312,6 +2411,14 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas const wxGridCellCoords & bottomRight, const wxGridWindow *gridWindow = nullptr) const; + // Similar to BlockToDeviceRect() above but mainly for grid selection use. + // i.e. GetSelectedRectangles() uses this function as a helper. + void BlockToDeviceRect(const wxGridCellCoords& topLeft, + const wxGridCellCoords& bottomRight, + wxGridWindow* gridWin, + std::vector& rectangles, + const wxRect& renderExtent) const; + // Access or update the selection fore/back colours wxColour GetSelectionBackground() const { return m_selectionBackground; } @@ -2376,6 +2483,7 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // ------- drag and drop #if wxUSE_DRAG_AND_DROP virtual void SetDropTarget(wxDropTarget *dropTarget) override; + virtual wxDropTarget* GetDropTarget() const override; #endif // wxUSE_DRAG_AND_DROP @@ -2404,6 +2512,9 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // unset any existing sorting column void UnsetSortingColumn() { SetSortingColumn(wxNOT_FOUND); } + // Invalidate overlay selection whenever the selection changes or scrolls. + void InvalidateOverlaySelection(); + // override some base class functions virtual void Fit() override; virtual void SetFocus() override; @@ -2411,6 +2522,13 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // implementation only void CancelMouseCapture(); +#if wxUSE_ACCESSIBILITY + virtual wxAccessible* CreateAccessible() override; + virtual bool Show(bool show) override; + virtual void SetName(const wxString &name) override; + virtual bool Reparent(wxWindowBase *newParent) override; +#endif // wxUSE_ACCESSIBILITY + protected: virtual wxSize DoGetBestSize() const override; virtual void DoEnable(bool enable) override; @@ -2469,6 +2587,10 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas wxColour m_selectionBackground; wxColour m_selectionForeground; +#if wxUSE_GRAPHICS_CONTEXT + bool m_usesOverlaySelection = true; +#endif + // NB: *never* access m_row/col arrays directly because they are created // on demand, *always* use accessor functions instead! @@ -2509,6 +2631,8 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas int m_rowLabelWidth; int m_colLabelHeight; + int m_rowLabelMinWidth; + int m_colLabelMinHeight; // the size of the margin left to the right and bottom of the cell area int m_extraWidth, @@ -2646,6 +2770,8 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas bool m_canDragColMove; bool m_canHideColumns; bool m_canDragGridSize; + bool m_canDragRowLabelSize; + bool m_canDragColLabelSize; bool m_canDragCell; // Index of the row or column being drag-moved or -1 if there is no move @@ -2662,9 +2788,13 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas // or -1 if there is no resize operation in progress. int m_dragRowOrCol; - // Original row or column size when resizing; used when the user cancels + // Original row, column or label size when resizing; used when the user cancels int m_dragRowOrColOldSize; + // Row or column labels (depending on m_cursorMode value) currently being + // resized + bool m_dragLabel; + // true if a drag operation is in progress; when this is true, // m_startDragPos is valid, i.e. not wxDefaultPosition bool m_isDragging; @@ -2769,6 +2899,11 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas friend class wxGridHeaderColumn; friend class wxGridHeaderCtrl; +#if wxUSE_ACCESSIBILITY + friend class wxGridAccessible; + friend class wxGridCellAccessible; +#endif // wxUSE_ACCESSIBILITY + private: // This is called from both Create() and OnDPIChanged() to (re)initialize // the values in pixels, which depend on the current DPI. @@ -2880,10 +3015,14 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas const wxGridOperations& oper, wxGridWindow* gridWindow); + // helper to get the wxGridOperations that match the cursor mode + std::unique_ptr DoGetOperationsFromCursorMode(void); + // process different clicks on grid cells void DoGridCellLeftDown(wxMouseEvent& event, const wxGridCellCoords& coords, - const wxPoint& pos); + const wxPoint& pos, + wxGridWindow* gridWindow); void DoGridCellLeftDClick(wxMouseEvent& event, const wxGridCellCoords& coords, const wxPoint& pos); @@ -2913,13 +3052,16 @@ class WXDLLIMPEXP_CORE wxGrid : public wxScrolledCanvas void DoStartResizeRowOrCol(int col, int size); void DoStartMoveRowOrCol(int col); + void DoStartResizeLabel(int size); // These functions should only be called when actually resizing/moving, - // i.e. m_dragRowOrCol and m_dragMoveCol, respectively, are valid. - void DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow *gridWindow); - void DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow *gridWindow); + // i.e. m_dragRowOrCol, m_dragMoveCol, m_dragLabel, respectively, are valid. + void DoEndDragResizeRowOrCol(const wxMouseEvent& event, wxGridWindow* gridWindow, + const wxGridOperations& oper); void DoEndMoveRow(int pos); void DoEndMoveCol(int pos); + void DoEndDragResizeLabel(const wxMouseEvent& event, wxGridWindow* gridWindow, + const wxGridOperations& oper); // Helper function returning the position (only the horizontal component // really counts) corresponding to the given column drag-resize event. @@ -3147,6 +3289,8 @@ class WXDLLIMPEXP_CORE wxGridEvent : public wxNotifyEvent, int GetRow() const { return m_row; } int GetCol() const { return m_col; } + int GetNewRow() const { return m_col; } + int GetNewCol() const { return m_row; } wxPoint GetPosition() const { return wxPoint( m_x, m_y ); } bool Selecting() const { return m_selecting; } @@ -3343,6 +3487,8 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_ROW_SIZE, wxGridSizeEvent wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_ROW_AUTO_SIZE, wxGridSizeEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_COL_SIZE, wxGridSizeEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_COL_AUTO_SIZE, wxGridSizeEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_ROW_LABEL_SIZE, wxGridSizeEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_COL_LABEL_SIZE, wxGridSizeEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_RANGE_SELECTING, wxGridRangeSelectEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_RANGE_SELECTED, wxGridRangeSelectEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_GRID_CELL_CHANGING, wxGridEvent ); @@ -3397,6 +3543,8 @@ typedef void (wxEvtHandler::*wxGridEditorCreatedEventFunction)(wxGridEditorCreat #define EVT_GRID_CMD_ROW_SIZE(id, fn) wx__DECLARE_GRIDSIZEEVT(ROW_SIZE, id, fn) #define EVT_GRID_CMD_COL_SIZE(id, fn) wx__DECLARE_GRIDSIZEEVT(COL_SIZE, id, fn) #define EVT_GRID_CMD_COL_AUTO_SIZE(id, fn) wx__DECLARE_GRIDSIZEEVT(COL_AUTO_SIZE, id, fn) +#define EVT_GRID_CMD_ROW_LABEL_SIZE(id, fn) wx__DECLARE_GRIDSIZEEVT(ROW_LABEL_SIZE, id, fn) +#define EVT_GRID_CMD_COL_LABEL_SIZE(id, fn) wx__DECLARE_GRIDSIZEEVT(COL_LABEL_SIZE, id, fn) #define EVT_GRID_CMD_ROW_MOVE(id, fn) wx__DECLARE_GRIDEVT(ROW_MOVE, id, fn) #define EVT_GRID_CMD_COL_MOVE(id, fn) wx__DECLARE_GRIDEVT(COL_MOVE, id, fn) #define EVT_GRID_CMD_COL_SORT(id, fn) wx__DECLARE_GRIDEVT(COL_SORT, id, fn) @@ -3424,6 +3572,8 @@ typedef void (wxEvtHandler::*wxGridEditorCreatedEventFunction)(wxGridEditorCreat #define EVT_GRID_ROW_SIZE(fn) EVT_GRID_CMD_ROW_SIZE(wxID_ANY, fn) #define EVT_GRID_COL_SIZE(fn) EVT_GRID_CMD_COL_SIZE(wxID_ANY, fn) #define EVT_GRID_COL_AUTO_SIZE(fn) EVT_GRID_CMD_COL_AUTO_SIZE(wxID_ANY, fn) +#define EVT_GRID_ROW_LABEL_SIZE(fn) EVT_GRID_CMD_ROW_LABEL_SIZE(wxID_ANY, fn) +#define EVT_GRID_COL_LABEL_SIZE(fn) EVT_GRID_CMD_COL_LABEL_SIZE(wxID_ANY, fn) #define EVT_GRID_ROW_MOVE(fn) EVT_GRID_CMD_ROW_MOVE(wxID_ANY, fn) #define EVT_GRID_COL_MOVE(fn) EVT_GRID_CMD_COL_MOVE(wxID_ANY, fn) #define EVT_GRID_COL_SORT(fn) EVT_GRID_CMD_COL_SORT(wxID_ANY, fn) diff --git a/include/wx-3.3/wx/generic/gridctrl.h b/include/wx-3.3/wx/generic/gridctrl.h index 989149f..06a56f4 100644 --- a/include/wx-3.3/wx/generic/gridctrl.h +++ b/include/wx-3.3/wx/generic/gridctrl.h @@ -52,7 +52,7 @@ class WXDLLIMPEXP_ADV wxGridCellStringRenderer : public wxGridCellRenderer protected: // calc the string extent for given string/font wxSize DoGetBestSize(const wxGridCellAttr& attr, - wxDC& dc, + wxReadOnlyDC& dc, const wxString& text); }; @@ -381,7 +381,7 @@ class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellString private: wxArrayString GetTextLines( wxGrid& grid, - wxDC& dc, + wxReadOnlyDC& dc, const wxGridCellAttr& attr, const wxRect& rect, int row, int col); @@ -391,7 +391,7 @@ class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellString // Break a single logical line of text into several physical lines, all of // which are added to the lines array. The lines are broken at maxWidth and // the dc is used for measuring text extent only. - void BreakLine(wxDC& dc, + void BreakLine(wxReadOnlyDC& dc, const wxString& logicalLine, wxCoord maxWidth, wxArrayString& lines); @@ -401,7 +401,7 @@ class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellString // is returned in line output parameter. // // Returns the width of the last line. - wxCoord BreakWord(wxDC& dc, + wxCoord BreakWord(wxReadOnlyDC& dc, const wxString& word, wxCoord maxWidth, wxArrayString& lines, diff --git a/include/wx-3.3/wx/generic/gridsel.h b/include/wx-3.3/wx/generic/gridsel.h index f89b1d9..65d51d7 100644 --- a/include/wx-3.3/wx/generic/gridsel.h +++ b/include/wx-3.3/wx/generic/gridsel.h @@ -18,6 +18,13 @@ #include "wx/vector.h" +#include + +// Forward declaration +namespace wxGridPrivate { class SelectionShape; } + +using wxSelectionShape = wxGridPrivate::SelectionShape; + wxDEPRECATED_MSG("use wxGridBlockCoordsVector instead") typedef wxVector wxVectorGridBlockCoords; @@ -114,6 +121,11 @@ class WXDLLIMPEXP_CORE wxGridSelection void EndSelecting(); void CancelSelecting(); + // Return the SelectionShape object. Call ComputeSelectionShape() if necessary. + const wxSelectionShape& GetSelectionShape(const wxRect& renderExtent); + + void InvalidateSelectionShape(); + private: void SelectBlockNoEvent(const wxGridBlockCoords& block) { @@ -139,6 +151,9 @@ class WXDLLIMPEXP_CORE wxGridSelection void MergeOrAddBlock(wxGridBlockCoordsVector& blocks, const wxGridBlockCoords& block); + // Called each time the selection changed or scrolled to recompute m_selectionShape. + void ComputeSelectionShape(const wxRect& renderExtent = {}); + // All currently selected blocks. We expect there to be a relatively small // amount of them, even for very large grids, as each block must be // selected by the user, so we store them unsorted. @@ -151,6 +166,17 @@ class WXDLLIMPEXP_CORE wxGridSelection wxGrid *m_grid; wxGrid::wxGridSelectionModes m_selectionMode; + // Used by wxGrid::DrawOverlaySelection() to draw a: + // + // - Simple rectangle (using wxDC::DrawRectangle() if it is empty and the bounding box is valid. + // - Simple polygon (using wxDC::DrawPolygon()) if it represents a simple polygon. + // - Poly-polygon (using wxDC::DrawPolyPolygon()) if it consists of multiple polygons. + // + std::unique_ptr m_selectionShape; + + // See ComputeSelectionShape() definition for explanation. + bool m_updateHighlightedLabels = false; + wxDECLARE_NO_COPY_CLASS(wxGridSelection); }; diff --git a/include/wx-3.3/wx/generic/textdlgg.h b/include/wx-3.3/wx/generic/textdlgg.h index 042bb7c..344af7a 100644 --- a/include/wx-3.3/wx/generic/textdlgg.h +++ b/include/wx-3.3/wx/generic/textdlgg.h @@ -46,9 +46,10 @@ class WXDLLIMPEXP_CORE wxTextEntryDialog : public wxDialog const wxString& caption = wxASCII_STR(wxGetTextFromUserPromptStr), const wxString& value = wxEmptyString, long style = wxTextEntryDialogStyle, - const wxPoint& pos = wxDefaultPosition) + const wxPoint& pos = wxDefaultPosition, + const wxSize sz = wxDefaultSize) { - Create(parent, message, caption, value, style, pos); + Create(parent, message, caption, value, style, pos, sz); } bool Create(wxWindow *parent, @@ -56,7 +57,8 @@ class WXDLLIMPEXP_CORE wxTextEntryDialog : public wxDialog const wxString& caption = wxASCII_STR(wxGetTextFromUserPromptStr), const wxString& value = wxEmptyString, long style = wxTextEntryDialogStyle, - const wxPoint& pos = wxDefaultPosition); + const wxPoint& pos = wxDefaultPosition, + const wxSize sz = wxDefaultSize); void SetValue(const wxString& val); wxString GetValue() const { return m_value; } diff --git a/include/wx-3.3/wx/generic/treectlg.h b/include/wx-3.3/wx/generic/treectlg.h index 8475561..7bfd825 100644 --- a/include/wx-3.3/wx/generic/treectlg.h +++ b/include/wx-3.3/wx/generic/treectlg.h @@ -329,7 +329,7 @@ class WXDLLIMPEXP_CORE wxGenericTreeCtrl : public wxTreeCtrlBase, void PaintLevel( wxGenericTreeItem *item, wxDC& dc, int level, int &y ); void PaintItem( wxGenericTreeItem *item, wxDC& dc); - void CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y ); + void CalculateLevel( wxGenericTreeItem *item, wxReadOnlyDC &dc, int level, int &y ); void CalculatePositions(); void RefreshSubtree( wxGenericTreeItem *item ); diff --git a/include/wx-3.3/wx/geometry.h b/include/wx-3.3/wx/geometry.h index 58ec552..fa0b991 100644 --- a/include/wx-3.3/wx/geometry.h +++ b/include/wx-3.3/wx/geometry.h @@ -35,7 +35,7 @@ enum wxOutCode class WXDLLIMPEXP_CORE wxPoint2DInt { public : - inline wxPoint2DInt(); + wxPoint2DInt() = default; inline wxPoint2DInt( wxInt32 x , wxInt32 y ); inline wxPoint2DInt( const wxPoint &pt ); // default copy ctor and copy-assign operator are OK @@ -61,10 +61,8 @@ public : inline wxPoint2DInt& operator+=(const wxPoint2DInt& pt); inline wxPoint2DInt& operator-=(const wxPoint2DInt& pt); - inline wxPoint2DInt& operator*=(const wxPoint2DInt& pt); inline wxPoint2DInt& operator*=(wxDouble n); inline wxPoint2DInt& operator*=(wxInt32 n); - inline wxPoint2DInt& operator/=(const wxPoint2DInt& pt); inline wxPoint2DInt& operator/=(wxDouble n); inline wxPoint2DInt& operator/=(wxInt32 n); inline operator wxPoint() const; @@ -82,11 +80,6 @@ public : } - friend wxPoint2DInt operator*(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2) - { - return wxPoint2DInt( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y ); - } - friend wxPoint2DInt operator*(wxInt32 n , const wxPoint2DInt& pt) { return wxPoint2DInt( pt.m_x * n , pt.m_y * n ); @@ -109,11 +102,6 @@ public : static_cast(pt.m_y * n) ); } - friend wxPoint2DInt operator/(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2) - { - return wxPoint2DInt( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y ); - } - friend wxPoint2DInt operator/(const wxPoint2DInt& pt , wxInt32 n) { return wxPoint2DInt( pt.m_x / n , pt.m_y / n ); @@ -130,15 +118,39 @@ public : void ReadFrom( wxDataInputStream &stream ); #endif // wxUSE_STREAMS - wxInt32 m_x; - wxInt32 m_y; -}; +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("Multiplying points doesn't make sense") + wxPoint2DInt& operator*=(const wxPoint2DInt& pt) + { + m_x *= pt.m_x; + m_y *= pt.m_y; + return *this; + } -inline wxPoint2DInt::wxPoint2DInt() -{ - m_x = 0; - m_y = 0; -} + wxDEPRECATED_MSG("Multiplying points doesn't make sense") + friend wxPoint2DInt operator*(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2) + { + return wxPoint2DInt( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y ); + } + + wxDEPRECATED_MSG("Dividing points doesn't make sense") + inline wxPoint2DInt& operator/=(const wxPoint2DInt& pt) + { + m_x /= pt.m_x; + m_y /= pt.m_y; + return *this; + } + + wxDEPRECATED_MSG("Dividing points doesn't make sense") + friend wxPoint2DInt operator/(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2) + { + return wxPoint2DInt( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y ); + } +#endif // WXWIN_COMPATIBILITY_3_2 + + wxInt32 m_x = 0; + wxInt32 m_y = 0; +}; inline wxPoint2DInt::wxPoint2DInt( wxInt32 x , wxInt32 y ) { @@ -167,8 +179,7 @@ inline void wxPoint2DInt::GetRounded( wxInt32 *x , wxInt32 *y ) const inline wxDouble wxPoint2DInt::GetVectorLength() const { - // cast needed MIPSpro compiler under SGI - return sqrt( (wxDouble)(m_x)*(m_x) + (wxDouble)(m_y)*(m_y) ); + return sqrt( static_cast(m_x*m_x + m_y*m_y) ); } inline void wxPoint2DInt::SetVectorLength( wxDouble length ) @@ -216,29 +227,43 @@ inline wxPoint2DInt wxPoint2DInt::operator-() const inline wxPoint2DInt& wxPoint2DInt::operator+=(const wxPoint2DInt& pt) { - m_x = m_x + pt.m_x; - m_y = m_y + pt.m_y; + m_x += pt.m_x; + m_y += pt.m_y; return *this; } inline wxPoint2DInt& wxPoint2DInt::operator-=(const wxPoint2DInt& pt) { - m_x = m_x - pt.m_x; - m_y = m_y - pt.m_y; + m_x -= pt.m_x; + m_y -= pt.m_y; + return *this; +} + +inline wxPoint2DInt& wxPoint2DInt::operator*=(wxDouble n) +{ + m_x = wxRound(m_x * n); + m_y = wxRound(m_y * n); + return *this; +} + +inline wxPoint2DInt& wxPoint2DInt::operator*=(wxInt32 n) +{ + m_x *= n; + m_y *= n; return *this; } -inline wxPoint2DInt& wxPoint2DInt::operator*=(const wxPoint2DInt& pt) +inline wxPoint2DInt& wxPoint2DInt::operator/=(wxDouble n) { - m_x = m_x * pt.m_x; - m_y = m_y * pt.m_y; + m_x = wxRound(m_x / n); + m_y = wxRound(m_y / n); return *this; } -inline wxPoint2DInt& wxPoint2DInt::operator/=(const wxPoint2DInt& pt) +inline wxPoint2DInt& wxPoint2DInt::operator/=(wxInt32 n) { - m_x = m_x / pt.m_x; - m_y = m_y / pt.m_y; + m_x /= n; + m_y /= n; return *this; } @@ -257,7 +282,7 @@ inline bool wxPoint2DInt::operator!=(const wxPoint2DInt& pt) const class WXDLLIMPEXP_CORE wxPoint2DDouble { public : - inline wxPoint2DDouble(); + wxPoint2DDouble() = default; inline wxPoint2DDouble( wxDouble x , wxDouble y ); wxPoint2DDouble( const wxPoint2DInt &pt ) { m_x = (wxDouble) pt.m_x ; m_y = (wxDouble) pt.m_y ; } @@ -286,10 +311,8 @@ public : inline wxPoint2DDouble& operator+=(const wxPoint2DDouble& pt); inline wxPoint2DDouble& operator-=(const wxPoint2DDouble& pt); - inline wxPoint2DDouble& operator*=(const wxPoint2DDouble& pt); inline wxPoint2DDouble& operator*=(wxDouble n); inline wxPoint2DDouble& operator*=(wxInt32 n); - inline wxPoint2DDouble& operator/=(const wxPoint2DDouble& pt); inline wxPoint2DDouble& operator/=(wxDouble n); inline wxPoint2DDouble& operator/=(wxInt32 n); @@ -307,11 +330,6 @@ public : } - friend wxPoint2DDouble operator*(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2) - { - return wxPoint2DDouble( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y ); - } - friend wxPoint2DDouble operator*(wxDouble n , const wxPoint2DDouble& pt) { return wxPoint2DDouble( pt.m_x * n , pt.m_y * n ); @@ -332,11 +350,6 @@ public : return wxPoint2DDouble( pt.m_x * n , pt.m_y * n ); } - friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2) - { - return wxPoint2DDouble( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y ); - } - friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxDouble n) { return wxPoint2DDouble( pt.m_x / n , pt.m_y / n ); @@ -347,15 +360,39 @@ public : return wxPoint2DDouble( pt.m_x / n , pt.m_y / n ); } - wxDouble m_x; - wxDouble m_y; -}; +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("Multiplying points doesn't make sense") + inline wxPoint2DDouble& operator*=(const wxPoint2DDouble& pt) + { + m_x *= pt.m_x; + m_y *= pt.m_y; + return *this; + } -inline wxPoint2DDouble::wxPoint2DDouble() -{ - m_x = 0.0; - m_y = 0.0; -} + wxDEPRECATED_MSG("Multiplying points doesn't make sense") + friend wxPoint2DDouble operator*(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2) + { + return wxPoint2DDouble( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y ); + } + + wxDEPRECATED_MSG("Dividing points doesn't make sense") + inline wxPoint2DDouble& operator/=(const wxPoint2DDouble& pt) + { + m_x /= pt.m_x; + m_y /= pt.m_y; + return *this; + } + + wxDEPRECATED_MSG("Dividing points doesn't make sense") + friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2) + { + return wxPoint2DDouble( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y ); + } +#endif // WXWIN_COMPATIBILITY_3_2 + + wxDouble m_x = 0.0; + wxDouble m_y = 0.0; +}; inline wxPoint2DDouble::wxPoint2DDouble( wxDouble x , wxDouble y ) { @@ -371,8 +408,8 @@ inline void wxPoint2DDouble::GetFloor( wxInt32 *x , wxInt32 *y ) const inline void wxPoint2DDouble::GetRounded( wxInt32 *x , wxInt32 *y ) const { - *x = (wxInt32) floor( m_x + 0.5 ); - *y = (wxInt32) floor( m_y + 0.5); + *x = wxRound( m_x ); + *y = wxRound( m_y ); } inline wxDouble wxPoint2DDouble::GetVectorLength() const @@ -419,29 +456,43 @@ inline wxPoint2DDouble wxPoint2DDouble::operator-() const inline wxPoint2DDouble& wxPoint2DDouble::operator+=(const wxPoint2DDouble& pt) { - m_x = m_x + pt.m_x; - m_y = m_y + pt.m_y; + m_x += pt.m_x; + m_y += pt.m_y; return *this; } inline wxPoint2DDouble& wxPoint2DDouble::operator-=(const wxPoint2DDouble& pt) { - m_x = m_x - pt.m_x; - m_y = m_y - pt.m_y; + m_x -= pt.m_x; + m_y -= pt.m_y; + return *this; +} + +inline wxPoint2DDouble& wxPoint2DDouble::operator*=(wxDouble n) +{ + m_x *= n; + m_y *= n; + return *this; +} + +inline wxPoint2DDouble& wxPoint2DDouble::operator*=(wxInt32 n) +{ + m_x *= n; + m_y *= n; return *this; } -inline wxPoint2DDouble& wxPoint2DDouble::operator*=(const wxPoint2DDouble& pt) +inline wxPoint2DDouble& wxPoint2DDouble::operator/=(wxDouble n) { - m_x = m_x * pt.m_x; - m_y = m_y * pt.m_y; + m_x /= n; + m_y /= n; return *this; } -inline wxPoint2DDouble& wxPoint2DDouble::operator/=(const wxPoint2DDouble& pt) +inline wxPoint2DDouble& wxPoint2DDouble::operator/=(wxInt32 n) { - m_x = m_x / pt.m_x; - m_y = m_y / pt.m_y; + m_x /= n; + m_y /= n; return *this; } @@ -462,8 +513,7 @@ inline bool wxPoint2DDouble::operator!=(const wxPoint2DDouble& pt) const class WXDLLIMPEXP_CORE wxRect2DDouble { public: - wxRect2DDouble() - { m_x = m_y = m_width = m_height = 0; } + wxRect2DDouble() = default; wxRect2DDouble(wxDouble x, wxDouble y, wxDouble w, wxDouble h) { m_x = x; m_y = y; m_width = w; m_height = h; } /* @@ -578,10 +628,10 @@ class WXDLLIMPEXP_CORE wxRect2DDouble inline bool operator != (const wxRect2DDouble& rect) const { return !(*this == rect); } - wxDouble m_x; - wxDouble m_y; - wxDouble m_width; - wxDouble m_height; + wxDouble m_x = 0.0; + wxDouble m_y = 0.0; + wxDouble m_width = 0.0; + wxDouble m_height = 0.0; }; @@ -592,7 +642,7 @@ class WXDLLIMPEXP_CORE wxRect2DDouble class WXDLLIMPEXP_CORE wxRect2DInt { public: - wxRect2DInt() { m_x = m_y = m_width = m_height = 0; } + wxRect2DInt() = default; wxRect2DInt( const wxRect& r ) { m_x = r.x ; m_y = r.y ; m_width = r.width ; m_height = r.height ; } wxRect2DInt(wxInt32 x, wxInt32 y, wxInt32 w, wxInt32 h) { m_x = x; m_y = y; m_width = w; m_height = h; } wxRect2DInt(const wxPoint2DInt& topLeft, const wxPoint2DInt& bottomRight); @@ -683,10 +733,10 @@ class WXDLLIMPEXP_CORE wxRect2DInt void ReadFrom( wxDataInputStream &stream ); #endif // wxUSE_STREAMS - wxInt32 m_x; - wxInt32 m_y; - wxInt32 m_width; - wxInt32 m_height; + wxInt32 m_x = 0; + wxInt32 m_y = 0; + wxInt32 m_width = 0; + wxInt32 m_height = 0; }; inline wxRect2DInt::wxRect2DInt( const wxPoint2DInt &a , const wxPoint2DInt &b) diff --git a/include/wx-3.3/wx/hashmap.h b/include/wx-3.3/wx/hashmap.h index 4b54091..d32466d 100644 --- a/include/wx-3.3/wx/hashmap.h +++ b/include/wx-3.3/wx/hashmap.h @@ -25,8 +25,14 @@ #include +// Use inheritance instead of simple typedef to allow existing forward +// declarations of the hash map classes in the applications using wx to work. #define _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP ) \ - typedef std::unordered_map< KEY_T, VALUE_T, HASH_T, KEY_EQ_T > CLASSNAME + class CLASSNAME : public std::unordered_map< KEY_T, VALUE_T, HASH_T, KEY_EQ_T > \ + { \ + public: \ + using std::unordered_map< KEY_T, VALUE_T, HASH_T, KEY_EQ_T >::unordered_map; \ + } #else // wxNEEDS_WX_HASH_MAP diff --git a/include/wx-3.3/wx/image.h b/include/wx-3.3/wx/image.h index 8e34f65..0c4c885 100644 --- a/include/wx-3.3/wx/image.h +++ b/include/wx-3.3/wx/image.h @@ -62,16 +62,19 @@ enum wxImageResolution enum wxImageResizeQuality { // different image resizing algorithms used by Scale() and Rescale() - wxIMAGE_QUALITY_NEAREST = 0, + wxIMAGE_QUALITY_NEAREST = 5, wxIMAGE_QUALITY_BILINEAR = 1, wxIMAGE_QUALITY_BICUBIC = 2, wxIMAGE_QUALITY_BOX_AVERAGE = 3, - // default quality is low (but fast) - wxIMAGE_QUALITY_NORMAL = wxIMAGE_QUALITY_NEAREST, + // default quality, suitable for most icons + wxIMAGE_QUALITY_NORMAL = 0, - // highest (but best) quality - wxIMAGE_QUALITY_HIGH = 4 + // "high" quality is not always better, but can be for photos + wxIMAGE_QUALITY_HIGH = 4, + + // fastest algorithm, possibly at the expense of quality + wxIMAGE_QUALITY_FAST = 6 }; // Constants for wxImage::Paste() for specifying alpha blending option. diff --git a/include/wx-3.3/wx/list.h b/include/wx-3.3/wx/list.h index 86f9d72..ed9daff 100644 --- a/include/wx-3.3/wx/list.h +++ b/include/wx-3.3/wx/list.h @@ -50,8 +50,6 @@ typedef wxObjectListNode wxNode; #if wxUSE_STD_CONTAINERS -#define wxLIST_COMPATIBILITY - #define WX_DECLARE_LIST_WITH_DECL(elT, liT, decl) \ WX_DECLARE_LIST_3(elT, elT, liT, dummy, decl) @@ -77,6 +75,179 @@ class wxList_SortFunction wxSortCompareFunction m_f; }; +template +class wxListImpl : public std::list +{ +private: + bool m_destroy = false; + + using liT = wxListImpl; + +public: + using iterator = typename std::list::iterator; + + class compatibility_iterator + { + private: + using liT = wxListImpl; + using iterator = typename std::list::iterator; + + friend liT; + + iterator m_iter; + liT * m_list; + + public: + compatibility_iterator() + : m_iter(wxListHelper::EmptyList.end()), m_list( nullptr ) {} + compatibility_iterator( liT* li, iterator i ) + : m_iter( i ), m_list( li ) {} + compatibility_iterator( const liT* li, iterator i ) + : m_iter( i ), m_list( const_cast< liT* >( li ) ) {} + + compatibility_iterator* operator->() { return this; } + const compatibility_iterator* operator->() const { return this; } + + bool operator==(const compatibility_iterator& i) const + { + wxASSERT_MSG( m_list && i.m_list, + wxT("comparing invalid iterators is illegal") ); + return (m_list == i.m_list) && (m_iter == i.m_iter); + } + bool operator!=(const compatibility_iterator& i) const + { return !( operator==( i ) ); } + operator bool() const + { return m_list ? m_iter != m_list->end() : false; } + bool operator !() const + { return !( operator bool() ); } + + elT GetData() const + { return *m_iter; } + void SetData( elT e ) + { *m_iter = e; } + + compatibility_iterator GetNext() const + { + iterator i = m_iter; + return compatibility_iterator( m_list, ++i ); + } + compatibility_iterator GetPrevious() const + { + if ( m_iter == m_list->begin() ) + return compatibility_iterator(); + + iterator i = m_iter; + return compatibility_iterator( m_list, --i ); + } + int IndexOf() const + { + return *this ? (int)std::distance( m_list->begin(), m_iter ) + : wxNOT_FOUND; + } + }; +public: + wxListImpl() = default; + + compatibility_iterator Find( baseT e ) const + { + liT* _this = const_cast< liT* >( this ); + return compatibility_iterator( _this, + std::find( _this->begin(), _this->end(), e )); + } + + bool IsEmpty() const + { return this->empty(); } + size_t GetCount() const + { return this->size(); } + int Number() const + { return static_cast< int >( GetCount() ); } + + compatibility_iterator Item( size_t idx ) const + { + iterator i = const_cast< liT* >(this)->begin(); + std::advance( i, idx ); + return compatibility_iterator( this, i ); + } + elT operator[](size_t idx) const + { + return Item(idx).GetData(); + } + + compatibility_iterator GetFirst() const + { + return compatibility_iterator( this, + const_cast< liT* >(this)->begin() ); + } + compatibility_iterator GetLast() const + { + iterator i = const_cast< liT* >(this)->end(); + return compatibility_iterator( this, !this->empty() ? --i : i ); + } + bool Member( baseT e ) const + { return Find( e ); } + compatibility_iterator Nth( int n ) const + { return Item( n ); } + int IndexOf( baseT e ) const + { return Find( e ).IndexOf(); } + + compatibility_iterator Append( elT e ) + { + this->push_back( e ); + return GetLast(); + } + compatibility_iterator Insert( elT e ) + { + this->push_front( e ); + return compatibility_iterator( this, this->begin() ); + } + compatibility_iterator Insert(const compatibility_iterator & i, elT e) + { + return compatibility_iterator( this, this->insert( i.m_iter, e ) ); + } + compatibility_iterator Insert( size_t idx, elT e ) + { + return compatibility_iterator( this, + this->insert( Item( idx ).m_iter, e ) ); + } + + void DeleteContents( bool destroy ) + { m_destroy = destroy; } + bool GetDeleteContents() const + { return m_destroy; } + void Erase( const compatibility_iterator& i ) + { + if ( m_destroy ) + wxListHelper::DeleteFunction( i->GetData() ); + this->erase( i.m_iter ); + } + bool DeleteNode( const compatibility_iterator& i ) + { + if( i ) + { + Erase( i ); + return true; + } + return false; + } + bool DeleteObject( baseT e ) + { + return DeleteNode( Find( e ) ); + } + void Clear() + { + if ( m_destroy ) + std::for_each( this->begin(), this->end(), + wxListHelper::DeleteFunction ); + this->clear(); + } + void Sort( wxSortCompareFunction compfunc ) + { this->sort( wxList_SortFunction(compfunc ) ); } + ~wxListImpl() { Clear(); } + + /* It needs access to our EmptyList */ + friend class compatibility_iterator; +}; + /* Note 1: the outer helper class _WX_LIST_HELPER_##liT below is a workaround for mingw 3.2.3 compiler bug that prevents a static function of liT class @@ -117,172 +288,9 @@ class wxList_SortFunction static void DeleteFunction( _WX_LIST_ITEM_TYPE_##liT X ); \ }; \ \ - class liT : public std::list \ + class liT : public wxListImpl \ { \ - private: \ - typedef std::list BaseListType; \ - \ - bool m_destroy; \ - \ - public: \ - class compatibility_iterator \ - { \ - private: \ - friend class liT; \ - \ - iterator m_iter; \ - liT * m_list; \ - \ - public: \ - compatibility_iterator() \ - : m_iter(_WX_LIST_HELPER_##liT::EmptyList.end()), m_list( nullptr ) {} \ - compatibility_iterator( liT* li, iterator i ) \ - : m_iter( i ), m_list( li ) {} \ - compatibility_iterator( const liT* li, iterator i ) \ - : m_iter( i ), m_list( const_cast< liT* >( li ) ) {} \ - \ - compatibility_iterator* operator->() { return this; } \ - const compatibility_iterator* operator->() const { return this; } \ - \ - bool operator==(const compatibility_iterator& i) const \ - { \ - wxASSERT_MSG( m_list && i.m_list, \ - wxT("comparing invalid iterators is illegal") ); \ - return (m_list == i.m_list) && (m_iter == i.m_iter); \ - } \ - bool operator!=(const compatibility_iterator& i) const \ - { return !( operator==( i ) ); } \ - operator bool() const \ - { return m_list ? m_iter != m_list->end() : false; } \ - bool operator !() const \ - { return !( operator bool() ); } \ - \ - elT GetData() const \ - { return *m_iter; } \ - void SetData( elT e ) \ - { *m_iter = e; } \ - \ - compatibility_iterator GetNext() const \ - { \ - iterator i = m_iter; \ - return compatibility_iterator( m_list, ++i ); \ - } \ - compatibility_iterator GetPrevious() const \ - { \ - if ( m_iter == m_list->begin() ) \ - return compatibility_iterator(); \ - \ - iterator i = m_iter; \ - return compatibility_iterator( m_list, --i ); \ - } \ - int IndexOf() const \ - { \ - return *this ? (int)std::distance( m_list->begin(), m_iter ) \ - : wxNOT_FOUND; \ - } \ - }; \ - public: \ - liT() : m_destroy( false ) {} \ - \ - compatibility_iterator Find( const baseT e ) const \ - { \ - liT* _this = const_cast< liT* >( this ); \ - return compatibility_iterator( _this, \ - std::find( _this->begin(), _this->end(), (const elT)e ));\ - } \ - \ - bool IsEmpty() const \ - { return empty(); } \ - size_t GetCount() const \ - { return size(); } \ - int Number() const \ - { return static_cast< int >( GetCount() ); } \ - \ - compatibility_iterator Item( size_t idx ) const \ - { \ - iterator i = const_cast< liT* >(this)->begin(); \ - std::advance( i, idx ); \ - return compatibility_iterator( this, i ); \ - } \ - elT operator[](size_t idx) const \ - { \ - return Item(idx).GetData(); \ - } \ - \ - compatibility_iterator GetFirst() const \ - { \ - return compatibility_iterator( this, \ - const_cast< liT* >(this)->begin() ); \ - } \ - compatibility_iterator GetLast() const \ - { \ - iterator i = const_cast< liT* >(this)->end(); \ - return compatibility_iterator( this, !empty() ? --i : i ); \ - } \ - bool Member( baseT e ) const \ - { return Find( e ); } \ - compatibility_iterator Nth( int n ) const \ - { return Item( n ); } \ - int IndexOf( baseT e ) const \ - { return Find( e ).IndexOf(); } \ - \ - compatibility_iterator Append( elT e ) \ - { \ - push_back( e ); \ - return GetLast(); \ - } \ - compatibility_iterator Insert( elT e ) \ - { \ - push_front( e ); \ - return compatibility_iterator( this, begin() ); \ - } \ - compatibility_iterator Insert(const compatibility_iterator & i, elT e)\ - { \ - return compatibility_iterator( this, insert( i.m_iter, e ) ); \ - } \ - compatibility_iterator Insert( size_t idx, elT e ) \ - { \ - return compatibility_iterator( this, \ - insert( Item( idx ).m_iter, e ) ); \ - } \ - \ - void DeleteContents( bool destroy ) \ - { m_destroy = destroy; } \ - bool GetDeleteContents() const \ - { return m_destroy; } \ - void Erase( const compatibility_iterator& i ) \ - { \ - if ( m_destroy ) \ - _WX_LIST_HELPER_##liT::DeleteFunction( i->GetData() ); \ - erase( i.m_iter ); \ - } \ - bool DeleteNode( const compatibility_iterator& i ) \ - { \ - if( i ) \ - { \ - Erase( i ); \ - return true; \ - } \ - return false; \ - } \ - bool DeleteObject( baseT e ) \ - { \ - return DeleteNode( Find( e ) ); \ - } \ - void Clear() \ - { \ - if ( m_destroy ) \ - std::for_each( begin(), end(), \ - _WX_LIST_HELPER_##liT::DeleteFunction ); \ - clear(); \ - } \ - /* Workaround for broken VC6 std::list::sort() see above */ \ - void Sort( wxSortCompareFunction compfunc ) \ - { sort( wxList_SortFunction(compfunc ) ); } \ - ~liT() { Clear(); } \ - \ - /* It needs access to our EmptyList */ \ - friend class compatibility_iterator; \ + using wxListImpl::wxListImpl; \ } #define WX_DECLARE_LIST(elementtype, listname) \ @@ -309,10 +317,6 @@ class wxList_SortFunction #else // if !wxUSE_STD_CONTAINERS - -// undef it to get rid of old, deprecated functions -#define wxLIST_COMPATIBILITY - // ----------------------------------------------------------------------------- // key stuff: a list may be optionally keyed on integer or string key // ----------------------------------------------------------------------------- @@ -399,12 +403,10 @@ friend class wxListBase; void SetKeyString(const wxString& s) { m_key.string = new wxString(s); } void SetKeyInteger(long i) { m_key.integer = i; } -#ifdef wxLIST_COMPATIBILITY // compatibility methods, use Get* instead. wxDEPRECATED( wxNode *Next() const ); wxDEPRECATED( wxNode *Previous() const ); wxDEPRECATED( wxObject *Data() const ); -#endif // wxLIST_COMPATIBILITY protected: // all these are going to be "overloaded" in the derived classes @@ -478,7 +480,6 @@ friend class wxHashTableBase; // should be able to call untyped Find() void SetKeyType(wxKeyType keyType) { wxASSERT( m_count==0 ); m_keyType = keyType; } -#ifdef wxLIST_COMPATIBILITY // compatibility methods from old wxList wxDEPRECATED( int Number() const ); // use GetCount instead. wxDEPRECATED( wxNode *First() const ); // use GetFirst @@ -488,7 +489,6 @@ friend class wxHashTableBase; // should be able to call untyped Find() // kludge for typesafe list migration in core classes. wxDEPRECATED( operator wxList&() ); wxDEPRECATED( operator const wxList&() const ); -#endif // wxLIST_COMPATIBILITY protected: @@ -1125,8 +1125,6 @@ friend class wxHashTableBase; // should be able to call untyped Find() // commonly used list classes // ---------------------------------------------------------------------------- -#if defined(wxLIST_COMPATIBILITY) - // inline compatibility functions #if !wxUSE_STD_CONTAINERS @@ -1150,9 +1148,6 @@ inline wxNode *wxListBase::Nth(size_t n) const { return (wxNode *)Item(n); } #endif -// define this to make a lot of noise about use of the old wxList classes. -//#define wxWARN_COMPAT_LIST_USE - // ---------------------------------------------------------------------------- // wxList compatibility class: in fact, it's a list of wxObjects // ---------------------------------------------------------------------------- @@ -1163,11 +1158,9 @@ WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode, class WXDLLIMPEXP_BASE wxList : public wxObjectList { public: -#if defined(wxWARN_COMPAT_LIST_USE) && !wxUSE_STD_CONTAINERS wxList() = default; +#if !wxUSE_STD_CONTAINERS wxDEPRECATED( wxList(int key_type) ); -#elif !wxUSE_STD_CONTAINERS - wxList(int key_type = wxKEY_NONE); #endif // this destructor is required for Darwin @@ -1213,13 +1206,9 @@ class WXDLLIMPEXP_BASE wxStringList : public wxStringListBase public: // ctors and such // default -#ifdef wxWARN_COMPAT_LIST_USE wxStringList(); + // deprecated ctor from a list of strings wxDEPRECATED( wxStringList(const wxChar *first ...) ); -#else - wxStringList(); - wxStringList(const wxChar *first ...); -#endif // copying the string list: the strings are copied, too (extremely // inefficient!) @@ -1278,31 +1267,26 @@ class WXDLLIMPEXP_BASE wxStringList : public wxStringListBase #endif // wxUSE_STD_CONTAINERS -#endif // wxLIST_COMPATIBILITY - // delete all list elements -// -// NB: the class declaration of the list elements must be visible from the -// place where you use this macro, otherwise the proper destructor may not -// be called (a decent compiler should give a warning about it, but don't -// count on it)! -#define WX_CLEAR_LIST(type, list) \ - { \ - type::iterator it, en; \ - for( it = (list).begin(), en = (list).end(); it != en; ++it ) \ - delete *it; \ - (list).clear(); \ - } +template +inline void wxClearList(T& list) +{ + for ( auto& elem: list ) + delete elem; + + list.clear(); +} + +// Deprecated macro, use wxClearList() instead. +#define WX_CLEAR_LIST(type, list) wxClearList(list) // append all element of one list to another one -#define WX_APPEND_LIST(list, other) \ - { \ - wxList::compatibility_iterator node = other->GetFirst(); \ - while ( node ) \ - { \ - (list)->push_back(node->GetData()); \ - node = node->GetNext(); \ - } \ - } +// +// This used to be a macro, hence the all uppercase name. +inline void WX_APPEND_LIST(wxList& list, const wxList& other) +{ + for ( auto& elem: other ) + list.Append(elem); +} #endif // _WX_LISTH__ diff --git a/include/wx-3.3/wx/log.h b/include/wx-3.3/wx/log.h index fa54e92..caeadf4 100644 --- a/include/wx-3.3/wx/log.h +++ b/include/wx-3.3/wx/log.h @@ -194,8 +194,7 @@ class wxLogRecordInfo const char *filename; int line; - // the name of the function where the log record was generated (may be null - // if the compiler doesn't support __FUNCTION__) + // the name of the function where the log record was generated const char *func; // the name of the component which generated this message, may be null if diff --git a/include/wx-3.3/wx/osx/app.h b/include/wx-3.3/wx/osx/app.h index e5b915f..162730d 100644 --- a/include/wx-3.3/wx/osx/app.h +++ b/include/wx-3.3/wx/osx/app.h @@ -42,6 +42,8 @@ class WXDLLIMPEXP_CORE wxApp: public wxAppBase virtual void SetPrintMode(int mode) override { m_printMode = mode; } virtual int GetPrintMode() const { return m_printMode; } + virtual AppearanceResult SetAppearance(Appearance appearance) override; + // calling OnInit with an auto-release pool ready ... virtual bool CallOnInit() override; #if wxUSE_GUI diff --git a/include/wx-3.3/wx/osx/bitmap.h b/include/wx-3.3/wx/osx/bitmap.h index b512727..bdf8f9f 100644 --- a/include/wx-3.3/wx/osx/bitmap.h +++ b/include/wx-3.3/wx/osx/bitmap.h @@ -128,11 +128,11 @@ class WXDLLIMPEXP_CORE wxBitmap: public wxBitmapBase // get the given part of bitmap wxBitmap GetSubBitmap( const wxRect& rect ) const override; - virtual bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) override; - virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) override + bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) final; + bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) final { return Create(sz.GetWidth(), sz.GetHeight(), depth); } - virtual bool Create(const void* data, wxBitmapType type, int width, int height, int depth = 1); + bool Create(const void* data, wxBitmapType type, int width, int height, int depth = 1); bool Create( CGImageRef image, double scale = 1.0 ); bool Create( WXImage image ); bool Create( CGContextRef bitmapcontext); @@ -140,7 +140,6 @@ class WXDLLIMPEXP_CORE wxBitmap: public wxBitmapBase // Create a bitmap compatible with the given DC, inheriting its magnification factor bool Create(int width, int height, const wxDC& dc); - // virtual bool Create( WXHICON icon) ; virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE) override; virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette *cmap = nullptr) const override; diff --git a/include/wx-3.3/wx/osx/cocoa/private.h b/include/wx-3.3/wx/osx/cocoa/private.h index 22b9b0d..ba39155 100644 --- a/include/wx-3.3/wx/osx/cocoa/private.h +++ b/include/wx-3.3/wx/osx/cocoa/private.h @@ -18,6 +18,8 @@ #import #endif +#include + // // shared between Cocoa and Carbon // @@ -172,7 +174,10 @@ public : virtual void DoNotifyFocusEvent(bool receivedFocus, wxWidgetImpl* otherWindow); virtual void SetupKeyEvent(wxKeyEvent &wxevent, NSEvent * nsEvent, NSString* charString = nullptr); - virtual void SetupMouseEvent(wxMouseEvent &wxevent, NSEvent * nsEvent); + + using MouseEvents = std::vector; + virtual MouseEvents TranslateMouseEvent(NSEvent * nsEvent); + void SetupCoordinates(wxCoord &x, wxCoord &y, NSEvent *nsEvent); virtual bool SetupCursor(NSEvent* event); diff --git a/include/wx-3.3/wx/osx/core/private.h b/include/wx-3.3/wx/osx/core/private.h index f4c4784..3d868ab 100644 --- a/include/wx-3.3/wx/osx/core/private.h +++ b/include/wx-3.3/wx/osx/core/private.h @@ -709,6 +709,8 @@ public : virtual wxString GetStringValue() const = 0 ; virtual void SetStringValue( const wxString &val ) = 0 ; + virtual wxString GetRTFValue() const = 0; + virtual void SetRTFValue( const wxString& val ) = 0; virtual void SetSelection( long from, long to ) = 0 ; virtual void GetSelection( long* from, long* to ) const = 0 ; virtual void WriteText( const wxString& str ) = 0 ; @@ -716,6 +718,8 @@ public : virtual bool CanClipMaxLength() const { return false; } virtual void SetMaxLength(unsigned long WXUNUSED(len)) {} + virtual bool IsRTFSupported() { return false; } + virtual bool CanForceUpper() { return false; } virtual void ForceUpper() {} diff --git a/include/wx-3.3/wx/osx/dataview.h b/include/wx-3.3/wx/osx/dataview.h index e4f542c..f7b6ed7 100644 --- a/include/wx-3.3/wx/osx/dataview.h +++ b/include/wx-3.3/wx/osx/dataview.h @@ -291,6 +291,8 @@ class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase virtual wxDataViewItem DoGetCurrentItem() const override; virtual void DoSetCurrentItem(const wxDataViewItem& item) override; + void OnContextMenu(wxContextMenuEvent& event); + // // variables // diff --git a/include/wx-3.3/wx/osx/textctrl.h b/include/wx-3.3/wx/osx/textctrl.h index cd5acb9..acfce79 100644 --- a/include/wx-3.3/wx/osx/textctrl.h +++ b/include/wx-3.3/wx/osx/textctrl.h @@ -109,6 +109,10 @@ class WXDLLIMPEXP_CORE wxTextCtrl: public wxTextCtrlBase virtual void SetWindowStyleFlag(long style) override; + virtual wxString GetRTFValue() const override; + virtual void SetRTFValue(const wxString& val) override; + virtual bool IsRTFSupported() override { return IsMultiLine(); } + // callbacks void OnDropFiles(wxDropFilesEvent& event); void OnChar(wxKeyEvent& event); // Process 'enter' if required diff --git a/include/wx-3.3/wx/osx/webview_webkit.h b/include/wx-3.3/wx/osx/webview_webkit.h index 7699f67..9ff3021 100644 --- a/include/wx-3.3/wx/osx/webview_webkit.h +++ b/include/wx-3.3/wx/osx/webview_webkit.h @@ -136,7 +136,7 @@ class WXDLLIMPEXP_WEBVIEW wxWebViewFactoryWebKit : public wxWebViewFactory else return nullptr; } - virtual wxVersionInfo GetVersionInfo() override; + virtual wxVersionInfo GetVersionInfo(wxVersionContext context) override; virtual wxWebViewConfiguration CreateConfiguration() override; }; diff --git a/include/wx-3.3/wx/overlay.h b/include/wx-3.3/wx/overlay.h index 4885900..1f2f6e5 100644 --- a/include/wx-3.3/wx/overlay.h +++ b/include/wx-3.3/wx/overlay.h @@ -12,14 +12,13 @@ #include "wx/defs.h" +#include "wx/dcclient.h" + // ---------------------------------------------------------------------------- // creates an overlay over an existing window, allowing for manipulations like -// rubberbanding etc. This API is not stable yet, not to be used outside wx -// internal code +// rubberbanding etc. // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_FWD_CORE wxDC; - class WXDLLIMPEXP_CORE wxOverlay { public: @@ -88,4 +87,31 @@ class WXDLLIMPEXP_CORE wxDCOverlay wxDECLARE_NO_COPY_CLASS(wxDCOverlay); }; +// Convenient class combining wxClientDC with wxDCOverlay. +class wxOverlayDC : public wxClientDC +{ +public: + wxOverlayDC(wxOverlay& overlay, wxWindow* win) + : wxClientDC(win), + m_dcOverlay(overlay, this) + { + } + + wxOverlayDC(wxOverlay& overlay, wxWindow* win, const wxRect& rect) + : wxClientDC(win), + m_dcOverlay(overlay, this, rect.x, rect.y, rect.width, rect.height) + { + } + + void Clear() + { + m_dcOverlay.Clear(); + } + +private: + wxDCOverlay m_dcOverlay; + + wxDECLARE_NO_COPY_CLASS(wxOverlayDC); +}; + #endif // _WX_OVERLAY_H_ diff --git a/include/wx-3.3/wx/propgrid/propgrid.h b/include/wx-3.3/wx/propgrid/propgrid.h index 5080c05..8bf5153 100644 --- a/include/wx-3.3/wx/propgrid/propgrid.h +++ b/include/wx-3.3/wx/propgrid/propgrid.h @@ -1445,9 +1445,6 @@ class WXDLLIMPEXP_PROPGRID wxPropertyGrid : public wxScrolled, wxBitmap *m_doubleBuffer; - // Local time ms when control was created. - wxMilliClock_t m_timeCreated; - // wxPGProperty::OnEvent can change value by setting this. wxVariant m_changeInEventValue; diff --git a/include/wx-3.3/wx/renderer.h b/include/wx-3.3/wx/renderer.h index c0cb682..3dbc59b 100644 --- a/include/wx-3.3/wx/renderer.h +++ b/include/wx-3.3/wx/renderer.h @@ -24,6 +24,7 @@ #define _WX_RENDERER_H_ class WXDLLIMPEXP_FWD_CORE wxDC; +class WXDLLIMPEXP_FWD_CORE wxReadOnlyDC; class WXDLLIMPEXP_FWD_CORE wxWindow; #include "wx/gdicmn.h" // for wxPoint, wxSize @@ -291,7 +292,7 @@ class WXDLLIMPEXP_CORE wxRendererNative int flags = 0) = 0; // Returns the default size of a collapse button - virtual wxSize GetCollapseButtonSize(wxWindow *win, wxDC& dc) = 0; + virtual wxSize GetCollapseButtonSize(wxWindow *win, wxReadOnlyDC& dc) = 0; // draw rectangle indicating that an item in e.g. a list control // has been selected or focused @@ -524,7 +525,7 @@ class WXDLLIMPEXP_CORE wxDelegateRendererNative : public wxRendererNative int flags = 0) override { m_rendererNative.DrawCollapseButton(win, dc, rect, flags); } - virtual wxSize GetCollapseButtonSize(wxWindow *win, wxDC& dc) override + virtual wxSize GetCollapseButtonSize(wxWindow *win, wxReadOnlyDC& dc) override { return m_rendererNative.GetCollapseButtonSize(win, dc); } virtual void DrawItemSelectionRect(wxWindow *win, diff --git a/include/wx-3.3/wx/ribbon/art.h b/include/wx-3.3/wx/ribbon/art.h index b9720c3..0a261b3 100644 --- a/include/wx-3.3/wx/ribbon/art.h +++ b/include/wx-3.3/wx/ribbon/art.h @@ -22,6 +22,7 @@ #include "wx/ribbon/bar.h" class WXDLLIMPEXP_FWD_CORE wxDC; +class WXDLLIMPEXP_FWD_CORE wxReadOnlyDC; class WXDLLIMPEXP_FWD_CORE wxWindow; enum wxRibbonArtSetting @@ -322,7 +323,7 @@ class WXDLLIMPEXP_RIBBON wxRibbonArtProvider const wxRect& rect) = 0; virtual void GetBarTabWidth( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& label, const wxBitmap& bitmap, @@ -332,39 +333,39 @@ class WXDLLIMPEXP_RIBBON wxRibbonArtProvider int* minimum) = 0; virtual int GetTabCtrlHeight( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxRibbonPageTabInfoArray& pages) = 0; virtual wxSize GetScrollButtonMinimumSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, long style) = 0; virtual wxSize GetPanelSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize client_size, wxPoint* client_offset) = 0; virtual wxSize GetPanelClientSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize size, wxPoint* client_offset) = 0; virtual wxRect GetPanelExtButtonArea( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxRect rect) = 0; virtual wxSize GetGallerySize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonGallery* wnd, wxSize client_size) = 0; virtual wxSize GetGalleryClientSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonGallery* wnd, wxSize size, wxPoint* client_offset, @@ -373,13 +374,13 @@ class WXDLLIMPEXP_RIBBON wxRibbonArtProvider wxRect* extension_button) = 0; virtual wxRect GetPageBackgroundRedrawArea( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPage* wnd, wxSize page_old_size, wxSize page_new_size) = 0; virtual bool GetButtonBarButtonSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, wxRibbonButtonKind kind, wxRibbonButtonBarButtonState size, @@ -392,18 +393,18 @@ class WXDLLIMPEXP_RIBBON wxRibbonArtProvider wxRect* dropdown_region) = 0; virtual wxCoord GetButtonBarButtonTextWidth( - wxDC& dc, const wxString& label, + wxReadOnlyDC& dc, const wxString& label, wxRibbonButtonKind kind, wxRibbonButtonBarButtonState size) = 0; virtual wxSize GetMinimisedPanelMinimumSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize* desired_bitmap_size, wxDirection* expanded_panel_direction) = 0; virtual wxSize GetToolSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, wxSize bitmap_size, wxRibbonButtonKind kind, @@ -440,7 +441,7 @@ class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider const wxColour& tertiary) override; int GetTabCtrlHeight( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxRibbonPageTabInfoArray& pages) override; @@ -536,7 +537,7 @@ class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider const wxRect& rect) override; void GetBarTabWidth( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& label, const wxBitmap& bitmap, @@ -546,34 +547,34 @@ class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider int* minimum) override; wxSize GetScrollButtonMinimumSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, long style) override; wxSize GetPanelSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize client_size, wxPoint* client_offset) override; wxSize GetPanelClientSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize size, wxPoint* client_offset) override; wxRect GetPanelExtButtonArea( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxRect rect) override; wxSize GetGallerySize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonGallery* wnd, wxSize client_size) override; wxSize GetGalleryClientSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonGallery* wnd, wxSize size, wxPoint* client_offset, @@ -582,13 +583,13 @@ class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider wxRect* extension_button) override; wxRect GetPageBackgroundRedrawArea( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPage* wnd, wxSize page_old_size, wxSize page_new_size) override; bool GetButtonBarButtonSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, wxRibbonButtonKind kind, wxRibbonButtonBarButtonState size, @@ -601,18 +602,18 @@ class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider wxRect* dropdown_region) override; wxCoord GetButtonBarButtonTextWidth( - wxDC& dc, const wxString& label, + wxReadOnlyDC& dc, const wxString& label, wxRibbonButtonKind kind, wxRibbonButtonBarButtonState size) override; wxSize GetMinimisedPanelMinimumSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize* desired_bitmap_size, wxDirection* expanded_panel_direction) override; wxSize GetToolSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, wxSize bitmap_size, wxRibbonButtonKind kind, @@ -805,7 +806,7 @@ class WXDLLIMPEXP_RIBBON wxRibbonAUIArtProvider : public wxRibbonMSWArtProvider void SetFont(int id, const wxFont& font) override; wxSize GetScrollButtonMinimumSize( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, long style) override; @@ -816,19 +817,19 @@ class WXDLLIMPEXP_RIBBON wxRibbonAUIArtProvider : public wxRibbonMSWArtProvider long style) override; wxSize GetPanelSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize client_size, wxPoint* client_offset) override; wxSize GetPanelClientSize( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxSize size, wxPoint* client_offset) override; wxRect GetPanelExtButtonArea( - wxDC& dc, + wxReadOnlyDC& dc, const wxRibbonPanel* wnd, wxRect rect) override; @@ -838,12 +839,12 @@ class WXDLLIMPEXP_RIBBON wxRibbonAUIArtProvider : public wxRibbonMSWArtProvider const wxRect& rect) override; int GetTabCtrlHeight( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxRibbonPageTabInfoArray& pages) override; void GetBarTabWidth( - wxDC& dc, + wxReadOnlyDC& dc, wxWindow* wnd, const wxString& label, const wxBitmap& bitmap, diff --git a/include/wx-3.3/wx/ribbon/buttonbar.h b/include/wx-3.3/wx/ribbon/buttonbar.h index dc1c75e..d91a0d6 100644 --- a/include/wx-3.3/wx/ribbon/buttonbar.h +++ b/include/wx-3.3/wx/ribbon/buttonbar.h @@ -192,7 +192,7 @@ class WXDLLIMPEXP_RIBBON wxRibbonButtonBar : public wxRibbonControl size_t first_btn, size_t* last_button, wxRibbonButtonBarButtonState target_size); void FetchButtonSizeInfo(wxRibbonButtonBarButtonBase* button, - wxRibbonButtonBarButtonState size, wxDC& dc); + wxRibbonButtonBarButtonState size, wxReadOnlyDC& dc); virtual void UpdateWindowUI(long flags) override; wxArrayRibbonButtonBarLayout m_layouts; diff --git a/include/wx-3.3/wx/richtext/richtextbuffer.h b/include/wx-3.3/wx/richtext/richtextbuffer.h index b710eab..d0fe8f2 100644 --- a/include/wx-3.3/wx/richtext/richtextbuffer.h +++ b/include/wx-3.3/wx/richtext/richtextbuffer.h @@ -691,7 +691,7 @@ class WXDLLIMPEXP_RICHTEXT wxTextAttrDimensionConverter /** Constructor. */ - wxTextAttrDimensionConverter(wxDC& dc, double scale = 1.0, const wxSize& parentSize = wxDefaultSize); + wxTextAttrDimensionConverter(wxReadOnlyDC& dc, double scale = 1.0, const wxSize& parentSize = wxDefaultSize); /** Constructor. */ @@ -2546,7 +2546,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject and @a parentRect is the container that is used to determine a relative size or position (for example if a text box must be 50% of the parent text box). */ - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) = 0; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) = 0; /** Hit-testing: returns a flag indicating hit test details, plus @@ -2565,12 +2565,12 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject @return One of the ::wxRichTextHitTestFlags values. */ - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0); + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0); /** Finds the absolute position and row height for the given character position. */ - virtual bool FindPosition(wxDC& WXUNUSED(dc), wxRichTextDrawingContext& WXUNUSED(context), long WXUNUSED(index), wxPoint& WXUNUSED(pt), int* WXUNUSED(height), bool WXUNUSED(forceLineStart)) { return false; } + virtual bool FindPosition(wxReadOnlyDC& WXUNUSED(dc), wxRichTextDrawingContext& WXUNUSED(context), long WXUNUSED(index), wxPoint& WXUNUSED(pt), int* WXUNUSED(height), bool WXUNUSED(forceLineStart)) { return false; } /** Returns the best size, i.e. the ideal starting size for this object irrespective @@ -2584,7 +2584,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject is invalid for this object. */ - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const = 0; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const = 0; /** Do a split from @a pos, returning an object containing the second part, and setting @@ -2898,7 +2898,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject Calculates the available content space in the given rectangle, given the margins, border and padding specified in the object's attributes. */ - virtual wxRect GetAvailableContentArea(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& outerRect) const; + virtual wxRect GetAvailableContentArea(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& outerRect) const; /** Lays out the object first with a given amount of space, and then if no width was specified in attr, @@ -2908,7 +2908,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject in a previous layout pass to @a availableParentSpace, but should have a width of 50% of @a availableContainerSpace. (If these two rects were the same, a 2nd pass could see the object getting too small.) */ - virtual bool LayoutToBestSize(wxDC& dc, wxRichTextDrawingContext& context, wxRichTextBuffer* buffer, + virtual bool LayoutToBestSize(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, wxRichTextBuffer* buffer, const wxRichTextAttr& parentAttr, const wxRichTextAttr& attr, const wxRect& availableParentSpace, const wxRect& availableContainerSpace, int style); @@ -3021,7 +3021,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject /** Converts units in tenths of a millimetre to device units. */ - int ConvertTenthsMMToPixels(wxDC& dc, int units) const; + int ConvertTenthsMMToPixels(wxReadOnlyDC& dc, int units) const; /** Converts units in tenths of a millimetre to device units. @@ -3031,7 +3031,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject /** Convert units in pixels to tenths of a millimetre. */ - int ConvertPixelsToTenthsMM(wxDC& dc, int pixels) const; + int ConvertPixelsToTenthsMM(wxReadOnlyDC& dc, int pixels) const; /** Convert units in pixels to tenths of a millimetre. @@ -3055,12 +3055,12 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject Note that the outline doesn't affect the position of the rectangle, it's drawn in whatever space is available. */ - static bool GetBoxRects(wxDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& attr, wxRect& marginRect, wxRect& borderRect, wxRect& contentRect, wxRect& paddingRect, wxRect& outlineRect); + static bool GetBoxRects(wxReadOnlyDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& attr, wxRect& marginRect, wxRect& borderRect, wxRect& contentRect, wxRect& paddingRect, wxRect& outlineRect); /** Returns the total margin for the object in pixels, taking into account margin, padding and border size. */ - static bool GetTotalMargin(wxDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& attr, int& leftMargin, int& rightMargin, + static bool GetTotalMargin(wxReadOnlyDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& attr, int& leftMargin, int& rightMargin, int& topMargin, int& bottomMargin); /** @@ -3069,7 +3069,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextObject: public wxObject availableContainerSpace might be a parent that the cell has to compute its width relative to. E.g. a cell that's 50% of its parent. */ - static wxRect AdjustAvailableSpace(wxDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& parentAttr, const wxRichTextAttr& childAttr, + static wxRect AdjustAvailableSpace(wxReadOnlyDC& dc, wxRichTextBuffer* buffer, const wxRichTextAttr& parentAttr, const wxRichTextAttr& childAttr, const wxRect& availableParentSpace, const wxRect& availableContainerSpace); protected: @@ -3119,9 +3119,9 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextCompositeObject: public wxRichTextObject // Overridables - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; - virtual bool FindPosition(wxDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; + virtual bool FindPosition(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; virtual void CalculateRange(long start, long& end) override; @@ -3129,7 +3129,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextCompositeObject: public wxRichTextObject virtual wxString GetTextForRange(const wxRichTextRange& range) const override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; virtual void Dump(wxTextOutputStream& stream) override; @@ -3240,13 +3240,13 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextParagraphLayoutBox: public wxRichTextCompos // Overridables - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; virtual bool DeleteRange(const wxRichTextRange& range) override; @@ -3937,9 +3937,9 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextField: public wxRichTextParagraphLayoutBox virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; virtual wxString GetXMLNodeName() const override { return wxT("field"); } @@ -4031,13 +4031,13 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextFieldType: public wxObject and @a parentRect is the container that is used to determine a relative size or position (for example if a text box must be 50% of the parent text box). */ - virtual bool Layout(wxRichTextField* obj, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) = 0; + virtual bool Layout(wxRichTextField* obj, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) = 0; /** Returns the object size for the given range. Returns @false if the range is invalid for this object. */ - virtual bool GetRangeSize(wxRichTextField* obj, const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const = 0; + virtual bool GetRangeSize(wxRichTextField* obj, const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const = 0; /** Returns @true if we can edit the object's properties via a GUI. @@ -4199,18 +4199,18 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextFieldTypeStandard: public wxRichTextFieldTy and @a parentRect is the container that is used to determine a relative size or position (for example if a text box must be 50% of the parent text box). */ - virtual bool Layout(wxRichTextField* obj, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxRichTextField* obj, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; /** Returns the object size for the given range. Returns @false if the range is invalid for this object. */ - virtual bool GetRangeSize(wxRichTextField* obj, const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(wxRichTextField* obj, const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; /** Get the size of the field, given the label, font size, and so on. */ - wxSize GetSize(wxRichTextField* obj, wxDC& dc, wxRichTextDrawingContext& context, int style) const; + wxSize GetSize(wxRichTextField* obj, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int style) const; /** Returns @true if the display type is wxRICHTEXT_FIELD_STYLE_COMPOSITE, @false otherwise. @@ -4512,13 +4512,13 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextParagraph: public wxRichTextCompositeObject virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; - virtual bool FindPosition(wxDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; + virtual bool FindPosition(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; virtual void CalculateRange(long start, long& end) override; @@ -4550,7 +4550,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextParagraph: public wxRichTextCompositeObject /** Applies paragraph styles such as centering to the wrapped lines. */ - virtual void ApplyParagraphStyle(wxRichTextLine* line, const wxRichTextAttr& attr, const wxRect& rect, wxDC& dc); + virtual void ApplyParagraphStyle(wxRichTextLine* line, const wxRichTextAttr& attr, const wxRect& rect, wxReadOnlyDC& dc); /** Inserts text at the given position. @@ -4583,7 +4583,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextParagraph: public wxRichTextCompositeObject Finds a suitable wrap position. @a wrapPosition is the last position in the line to the left of the split. */ - bool FindWrapPosition(const wxRichTextRange& range, wxDC& dc, wxRichTextDrawingContext& context, int availableSpace, long& wrapPosition, wxArrayInt* partialExtents); + bool FindWrapPosition(const wxRichTextRange& range, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int availableSpace, long& wrapPosition, wxArrayInt* partialExtents); /** Finds the object at the given position. @@ -4639,7 +4639,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextParagraph: public wxRichTextCompositeObject /** Lays out the floating objects. */ - void LayoutFloat(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style, wxRichTextFloatCollector* floatCollector); + void LayoutFloat(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style, wxRichTextFloatCollector* floatCollector); /** Whether the paragraph is impacted by floating objects from above. @@ -4696,11 +4696,11 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextPlainText: public wxRichTextObject virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; virtual bool AdjustAttributes(wxRichTextAttr& attr, wxRichTextDrawingContext& context) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; virtual wxString GetTextForRange(const wxRichTextRange& range) const override; @@ -4990,9 +4990,9 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextImage: public wxRichTextObject virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; /** Returns the 'natural' size for this object - the image size. @@ -5063,7 +5063,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextImage: public wxRichTextObject /** Creates a cached image at the required size. */ - virtual bool LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context, wxSize& retImageSize, bool resetCache = false, const wxSize& parentSize = wxDefaultSize); + virtual bool LoadImageCache(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, wxSize& retImageSize, bool resetCache = false, const wxSize& parentSize = wxDefaultSize); /** Do the loading and scaling @@ -5606,7 +5606,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer: public wxRichTextParagraphLayoutBox // Implementation - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; /** Copies the buffer. @@ -5945,7 +5945,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextCell: public wxRichTextBox virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; virtual bool AdjustAttributes(wxRichTextAttr& attr, wxRichTextDrawingContext& context) override; @@ -6023,15 +6023,15 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextTable: public wxRichTextBox virtual bool Draw(wxDC& dc, wxRichTextDrawingContext& context, const wxRichTextRange& range, const wxRichTextSelection& selection, const wxRect& rect, int descent, int style) override; - virtual int HitTest(wxDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; + virtual int HitTest(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxPoint& pt, long& textPosition, wxRichTextObject** obj, wxRichTextObject** contextObj, int flags = 0) override; virtual bool AdjustAttributes(wxRichTextAttr& attr, wxRichTextDrawingContext& context) override; virtual wxString GetXMLNodeName() const override { return wxT("table"); } - virtual bool Layout(wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; + virtual bool Layout(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int style) override; - virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; + virtual bool GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, int flags, const wxPoint& position = wxPoint(0,0), const wxSize& parentSize = wxDefaultSize, wxArrayInt* partialExtents = nullptr) const override; virtual bool DeleteRange(const wxRichTextRange& range) override; @@ -6049,7 +6049,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextTable: public wxRichTextBox virtual bool ExportXML(wxXmlNode* parent, wxRichTextXMLHandler* handler) override; #endif - virtual bool FindPosition(wxDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; + virtual bool FindPosition(wxReadOnlyDC& dc, wxRichTextDrawingContext& context, long index, wxPoint& pt, int* height, bool forceLineStart) override; virtual void CalculateRange(long start, long& end) override; @@ -6985,7 +6985,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextRenderer: public wxObject /** Measure the bullet. */ - virtual bool MeasureBullet(wxRichTextParagraph* paragraph, wxDC& dc, const wxRichTextAttr& attr, wxSize& sz) = 0; + virtual bool MeasureBullet(wxRichTextParagraph* paragraph, wxReadOnlyDC& dc, const wxRichTextAttr& attr, wxSize& sz) = 0; }; /** @@ -7020,10 +7020,10 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextStdRenderer: public wxRichTextRenderer virtual bool EnumerateStandardBulletNames(wxArrayString& bulletNames) override; // Measure the bullet. - virtual bool MeasureBullet(wxRichTextParagraph* paragraph, wxDC& dc, const wxRichTextAttr& attr, wxSize& sz) override; + virtual bool MeasureBullet(wxRichTextParagraph* paragraph, wxReadOnlyDC& dc, const wxRichTextAttr& attr, wxSize& sz) override; // Set a font which may depend on text effects. - static void SetFontForBullet(wxRichTextBuffer& buffer, wxDC& dc, const wxRichTextAttr& attr); + static void SetFontForBullet(wxRichTextBuffer& buffer, wxReadOnlyDC& dc, const wxRichTextAttr& attr); }; /*! diff --git a/include/wx-3.3/wx/richtext/richtextctrl.h b/include/wx-3.3/wx/richtext/richtextctrl.h index d2cdf59..0268aa7 100644 --- a/include/wx-3.3/wx/richtext/richtextctrl.h +++ b/include/wx-3.3/wx/richtext/richtextctrl.h @@ -1420,7 +1420,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl : public wxControl, /** Implements layout. An application may override this to perform operations before or after layout. */ - virtual void DoLayoutBuffer(wxRichTextBuffer& buffer, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int flags); + virtual void DoLayoutBuffer(wxRichTextBuffer& buffer, wxReadOnlyDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int flags); /** Move the caret to the given character position. diff --git a/include/wx-3.3/wx/richtext/richtextstyles.h b/include/wx-3.3/wx/richtext/richtextstyles.h index e32a4b5..78ca7d8 100644 --- a/include/wx-3.3/wx/richtext/richtextstyles.h +++ b/include/wx-3.3/wx/richtext/richtextstyles.h @@ -532,7 +532,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextStyleListBox: public wxHtmlListBox void OnIdle(wxIdleEvent& event); /// Convert units in tends of a millimetre to device units - int ConvertTenthsMMToPixels(wxDC& dc, int units) const; + int ConvertTenthsMMToPixels(wxReadOnlyDC& dc, int units) const; /// Can we set the selection based on the editor caret position? /// Need to override this if being used in a combobox popup diff --git a/include/wx-3.3/wx/richtext/richtextxml.h b/include/wx-3.3/wx/richtext/richtextxml.h index dd776a5..9410f4e 100644 --- a/include/wx-3.3/wx/richtext/richtextxml.h +++ b/include/wx-3.3/wx/richtext/richtextxml.h @@ -163,7 +163,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextXMLHelper: public wxObject @class wxRichTextXMLHandler Implements XML loading and saving. Two methods of saving are included: - writing directly to a text stream, and populating an wxXmlDocument + writing directly to a text stream, and populating a wxXmlDocument before writing it. The former method is considerably faster, so we favour that one, even though the code is a little less elegant. */ diff --git a/include/wx-3.3/wx/scrolwin.h b/include/wx-3.3/wx/scrolwin.h index abedfb8..7bd98f8 100644 --- a/include/wx-3.3/wx/scrolwin.h +++ b/include/wx-3.3/wx/scrolwin.h @@ -85,8 +85,24 @@ class WXDLLIMPEXP_CORE wxAnyScrollHelperBase // Override this function to draw the graphic (or just process EVT_PAINT) virtual void OnDraw(wxDC& WXUNUSED(dc)) { } - // change the DC origin according to the scroll position. - virtual void DoPrepareDC(wxDC& dc) = 0; + // Set up the DC according to the scroll position. + // + // For historical reasons, we have DoPrepareDC() but new code should + // implement DoPrepareReadOnlyDC() instead, which ought to be pure virtual + // if it hasn't been added later. + virtual void DoPrepareReadOnlyDC(wxReadOnlyDC& WXUNUSED(dc)) + { + // If DoPrepareDC() is overridden in the derived class, this function + // won't be called at all unless PrepareReadOnlyDC() is explicitly + // called. + // + // But if DoPrepareDC() is not overridden, this one must be. + wxFAIL_MSG("Must be overridden if DoPrepareDC() is not."); + } + + // This function continues to exist for compatibility but delegates to + // DoPrepareReadOnlyDC() now. + virtual void DoPrepareDC(wxDC& dc); // Simple accessor for the window that is really being scrolled. wxWindow *GetTargetWindow() const { return m_targetWindow; } @@ -218,7 +234,7 @@ class WXDLLIMPEXP_CORE wxScrollHelperBase : public wxAnyScrollHelperBase void SetTargetRect(const wxRect& rect) { m_rectToScroll = rect; } wxRect GetTargetRect() const { return m_rectToScroll; } - virtual void DoPrepareDC(wxDC& dc) override; + virtual void DoPrepareReadOnlyDC(wxReadOnlyDC& dc) override; // are we generating the autoscroll events? bool IsAutoScrolling() const { return m_timerAutoScroll != nullptr; } @@ -354,7 +370,9 @@ class WXDLLIMPEXP_CORE wxScrollHelperBase : public wxAnyScrollHelperBase // methods to corresponding wxScrollHelper methods #define WX_FORWARD_TO_SCROLL_HELPER() \ public: \ + virtual void PrepareReadOnlyDC(wxReadOnlyDC& dc) override { DoPrepareReadOnlyDC(dc); } \ virtual void PrepareDC(wxDC& dc) override { DoPrepareDC(dc); } \ + void PrepareDC(wxReadOnlyDC& dc) { DoPrepareReadOnlyDC(dc); } \ virtual bool Layout() override { return ScrollLayout(); } \ virtual bool CanScroll(int orient) const override \ { return IsScrollbarShown(orient); } \ diff --git a/include/wx-3.3/wx/simplebook.h b/include/wx-3.3/wx/simplebook.h index fa122a8..e6061ba 100644 --- a/include/wx-3.3/wx/simplebook.h +++ b/include/wx-3.3/wx/simplebook.h @@ -199,8 +199,10 @@ class wxSimplebook : public wxCompositeBookCtrlBase page->ShowWithEffect(m_showEffect, m_showTimeout); // Unlike simple Show(), ShowWithEffect() doesn't necessarily give - // focus to the window, but we do expect the new page to have focus. - page->SetFocus(); + // focus to the window, but we do expect the new page to have focus + // if it's currently visible. + if ( page->IsShownOnScreen() ) + page->SetFocus(); } else { diff --git a/include/wx-3.3/wx/string.h b/include/wx-3.3/wx/string.h index 094327d..69b8cd7 100644 --- a/include/wx-3.3/wx/string.h +++ b/include/wx-3.3/wx/string.h @@ -1502,7 +1502,7 @@ class WXDLLIMPEXP_BASE wxString wxString& Truncate(size_t uiLen); // empty string contents void Empty() { clear(); } - // empty the string and free memory + // empty string contents void Clear() { clear(); } // contents test diff --git a/include/wx-3.3/wx/sysopt.h b/include/wx-3.3/wx/sysopt.h index ab22ae9..f20b211 100644 --- a/include/wx-3.3/wx/sysopt.h +++ b/include/wx-3.3/wx/sysopt.h @@ -11,6 +11,7 @@ #define _WX_SYSOPT_H_ #include "wx/object.h" +#include "wx/string.h" // ---------------------------------------------------------------------------- // Enables an application to influence the wxWidgets implementation diff --git a/include/wx-3.3/wx/systhemectrl.h b/include/wx-3.3/wx/systhemectrl.h index c50dab0..a2bc019 100644 --- a/include/wx-3.3/wx/systhemectrl.h +++ b/include/wx-3.3/wx/systhemectrl.h @@ -72,6 +72,9 @@ class wxSystemThemedControl : public C, DoEnableSystemTheme(enable, this); } + // Using wxBORDER_THEME is unnecessary and looks bad for these controls. + virtual bool CanApplyThemeBorder() const override { return false; } + protected: void EnableSystemThemeByDefault() { diff --git a/include/wx-3.3/wx/textctrl.h b/include/wx-3.3/wx/textctrl.h index e55e5e1..44956d4 100644 --- a/include/wx-3.3/wx/textctrl.h +++ b/include/wx-3.3/wx/textctrl.h @@ -103,7 +103,17 @@ const wxTextCoord wxInvalidTextCoord = -2; // wxTextCtrl file types // ---------------------------------------------------------------------------- -#define wxTEXT_TYPE_ANY 0 +// wxOSX and wxMSW support RTF in wxTextCtrl. +#if defined(__WXOSX__) || (defined(__WXMSW__) && wxUSE_RICHEDIT) + #define wxHAS_TEXTCTRL_RTF +#endif + +enum wxTextCtrlFileType +{ + wxTEXT_TYPE_ANY, + wxTEXT_TYPE_PLAIN, + wxTEXT_TYPE_RTF +}; // ---------------------------------------------------------------------------- // wxTextCtrl::HitTest return values @@ -680,6 +690,14 @@ class WXDLLIMPEXP_CORE wxTextAreaBase virtual wxString GetValue() const = 0; virtual void SetValue(const wxString& value) = 0; + // Returns whether the RTF-related functions below can be used. + virtual bool IsRTFSupported() { return false; } + + // Base class implementations simply assert, if IsRTFSupported() returns + // true, the port must override these functions to really implement them. + virtual wxString GetRTFValue() const; + virtual void SetRTFValue(const wxString& val); + protected: // implementation of loading/saving virtual bool DoLoadFile(const wxString& file, int fileType); diff --git a/include/wx-3.3/wx/tglbtn.h b/include/wx-3.3/wx/tglbtn.h index 23abefc..b193fb5 100644 --- a/include/wx-3.3/wx/tglbtn.h +++ b/include/wx-3.3/wx/tglbtn.h @@ -54,6 +54,7 @@ class WXDLLIMPEXP_CORE wxToggleButtonBase : public wxAnyButton wxUpdateUIEvent event( GetId() ); event.SetEventObject(this); + DoPrepareUpdateWindowUI(event); if (GetEventHandler()->ProcessEvent(event) ) { diff --git a/include/wx-3.3/wx/typeinfo.h b/include/wx-3.3/wx/typeinfo.h index f3b81d4..4b54b94 100644 --- a/include/wx-3.3/wx/typeinfo.h +++ b/include/wx-3.3/wx/typeinfo.h @@ -38,7 +38,7 @@ #endif #include -#include +#include #define _WX_DECLARE_TYPEINFO_CUSTOM(CLS, IDENTFUNC) #define WX_DECLARE_TYPEINFO_INLINE(CLS) @@ -116,23 +116,22 @@ public: \ // type identifier, defined with WX_DEFINE_TYPEINFO(). #define WX_DECLARE_TYPEINFO(CLS) \ private: \ - static CLS sm_wxClassInfo(); \ -_WX_DECLARE_TYPEINFO_CUSTOM(CLS, sm_wxClassInfo) + static char ms_wxDummy; \ + static void ms_wxClassInfo(); \ +_WX_DECLARE_TYPEINFO_CUSTOM(CLS, ms_wxClassInfo) // Use this macro to implement type identifier function required by // WX_DECLARE_TYPEINFO(). -// NOTE: CLS is required to have default ctor. If it doesn't -// already, you should provide a private dummy one. #define WX_DEFINE_TYPEINFO(CLS) \ -CLS CLS::sm_wxClassInfo() { return CLS(); } +char CLS::ms_wxDummy; \ +void CLS::ms_wxClassInfo() { ms_wxDummy = 0; } // Use this macro to declare type info fully inline in class. -// NOTE: CLS is required to have default ctor. If it doesn't -// already, you should provide a private dummy one. #define WX_DECLARE_TYPEINFO_INLINE(CLS) \ private: \ - static CLS sm_wxClassInfo() { return CLS(); } \ -_WX_DECLARE_TYPEINFO_CUSTOM(CLS, sm_wxClassInfo) + static char ms_wxDummy; \ + static void ms_wxClassInfo() { ms_wxDummy = 0; } \ +_WX_DECLARE_TYPEINFO_CUSTOM(CLS, ms_wxClassInfo) #define wxTypeId(OBJ) (OBJ).GetWxTypeId() diff --git a/include/wx-3.3/wx/utils.h b/include/wx-3.3/wx/utils.h index 47c5e35..9dbcb23 100644 --- a/include/wx-3.3/wx/utils.h +++ b/include/wx-3.3/wx/utils.h @@ -803,6 +803,10 @@ WXDLLIMPEXP_CORE bool wxYield(); // Like wxYield, but fails silently if the yield is recursive. WXDLLIMPEXP_CORE bool wxYieldIfNeeded(); +#ifdef __WINDOWS__ +WXDLLIMPEXP_CORE bool wxMSWIsOnSecureScreen(); +#endif // __WINDOWS__ + // ---------------------------------------------------------------------------- // Windows resources access // ---------------------------------------------------------------------------- diff --git a/include/wx-3.3/wx/versioninfo.h b/include/wx-3.3/wx/versioninfo.h index 1aa9f89..865484c 100644 --- a/include/wx-3.3/wx/versioninfo.h +++ b/include/wx-3.3/wx/versioninfo.h @@ -12,6 +12,16 @@ #include "wx/string.h" +// ---------------------------------------------------------------------------- +// wxVersionContext: defines which version information to retrieve +// ---------------------------------------------------------------------------- + +enum class wxVersionContext +{ + RunTime, // Version used during run-time. + BuildTime // Version that the application was built with. +}; + // ---------------------------------------------------------------------------- // wxVersionInfo: represents version information // ---------------------------------------------------------------------------- @@ -61,6 +71,12 @@ class wxVersionInfo return m_micro >= micro; } + // Return true if this version object actually has any version information. + bool IsOk() const + { + return AtLeast(0) || !m_name.empty() || !m_description.empty(); + } + const wxString& GetName() const { return m_name; } int GetMajor() const { return m_major; } @@ -73,10 +89,10 @@ class wxVersionInfo return HasDescription() ? GetDescription() : GetVersionString(); } - wxString GetVersionString() const + wxString GetNumericVersionString() const { wxString str; - str << m_name << ' ' << GetMajor() << '.' << GetMinor(); + str << GetMajor() << '.' << GetMinor(); if ( GetMicro() || GetRevision() ) { str << '.' << GetMicro(); @@ -87,6 +103,14 @@ class wxVersionInfo return str; } + wxString GetVersionString() const + { + wxString str; + str << m_name << ' ' << GetNumericVersionString(); + + return str; + } + bool HasDescription() const { return !m_description.empty(); } const wxString& GetDescription() const { return m_description; } diff --git a/include/wx-3.3/wx/webrequest.h b/include/wx-3.3/wx/webrequest.h index 42110d6..83deb6e 100644 --- a/include/wx-3.3/wx/webrequest.h +++ b/include/wx-3.3/wx/webrequest.h @@ -41,6 +41,8 @@ class wxWebCredentials #include "wx/stream.h" #include "wx/versioninfo.h" +#include + class wxWebResponse; class wxWebSession; class wxWebSessionFactory; @@ -121,7 +123,7 @@ class WXDLLIMPEXP_NET wxWebResponse protected: // Ctor is used by wxWebRequest and implementation classes to create public // objects from the existing implementation pointers. - friend class wxWebRequest; + friend class wxWebRequestBase; friend class wxWebRequestImpl; friend class wxWebResponseImpl; explicit wxWebResponse(const wxWebResponseImplPtr& impl); @@ -129,7 +131,7 @@ class WXDLLIMPEXP_NET wxWebResponse wxWebResponseImplPtr m_impl; }; -class WXDLLIMPEXP_NET wxWebRequest +class WXDLLIMPEXP_NET wxWebRequestBase { public: enum State @@ -149,10 +151,46 @@ class WXDLLIMPEXP_NET wxWebRequest Storage_None }; - wxWebRequest(); - wxWebRequest(const wxWebRequest& other); - wxWebRequest& operator=(const wxWebRequest& other); - ~wxWebRequest(); + struct Result + { + static Result Ok(State state = State_Active) + { + Result result; + result.state = state; + return result; + } + + static Result Cancelled() + { + Result result; + result.state = State_Cancelled; + return result; + } + + static Result Error(const wxString& error) + { + Result result; + result.state = State_Failed; + result.error = error; + return result; + } + + static Result Unauthorized(const wxString& error) + { + Result result; + result.state = State_Unauthorized; + result.error = error; + return result; + } + + bool operator!() const + { + return state == State_Failed; + } + + State state = State_Idle; + wxString error; + }; bool IsOk() const { return m_impl.get() != nullptr; } @@ -162,26 +200,19 @@ class WXDLLIMPEXP_NET wxWebRequest void SetData(const wxString& text, const wxString& contentType, const wxMBConv& conv = wxConvUTF8); - bool SetData(wxInputStream* dataStream, const wxString& contentType, wxFileOffset dataSize = wxInvalidOffset); + bool SetData(std::unique_ptr dataStream, const wxString& contentType, wxFileOffset dataSize = wxInvalidOffset); + + bool SetData(wxInputStream* dataStream, const wxString& contentType, wxFileOffset dataSize = wxInvalidOffset) + { + return SetData(std::unique_ptr(dataStream), contentType, dataSize); + } void SetStorage(Storage storage); Storage GetStorage() const; - void Start(); - - void Cancel(); - wxWebResponse GetResponse() const; - wxWebAuthChallenge GetAuthChallenge() const; - - int GetId() const; - - wxWebSession& GetSession() const; - - State GetState() const; - wxFileOffset GetBytesSent() const; wxFileOffset GetBytesExpectedToSend() const; @@ -192,9 +223,54 @@ class WXDLLIMPEXP_NET wxWebRequest wxWebRequestHandle GetNativeHandle() const; - void DisablePeerVerify(bool disable = true); + enum + { + Ignore_Certificate = 1, + Ignore_Host = 2, + Ignore_All = Ignore_Certificate | Ignore_Host + }; + + void MakeInsecure(int flags = Ignore_All); + int GetSecurityFlags() const; + + void DisablePeerVerify(bool disable = true) + { + MakeInsecure(disable ? Ignore_Certificate : 0); + } + + bool IsPeerVerifyDisabled() const + { + return (GetSecurityFlags() & Ignore_Certificate) != 0; + } + +protected: + wxWebRequestBase(); + explicit wxWebRequestBase(const wxWebRequestImplPtr& impl); + wxWebRequestBase(const wxWebRequestBase& other); + wxWebRequestBase& operator=(const wxWebRequestBase& other); + ~wxWebRequestBase(); + + wxWebRequestImplPtr m_impl; +}; + +class WXDLLIMPEXP_NET wxWebRequest : public wxWebRequestBase +{ +public: + wxWebRequest() = default; + wxWebRequest(const wxWebRequest& other) = default; + wxWebRequest& operator=(const wxWebRequest& other) = default; + + void Start(); + + void Cancel(); + + wxWebAuthChallenge GetAuthChallenge() const; + + int GetId() const; + + wxWebSession& GetSession() const; - bool IsPeerVerifyDisabled() const; + State GetState() const; private: // Ctor is used by wxWebSession and implementation classes to create @@ -202,46 +278,103 @@ class WXDLLIMPEXP_NET wxWebRequest friend class wxWebSession; friend class wxWebRequestImpl; friend class wxWebResponseImpl; - explicit wxWebRequest(const wxWebRequestImplPtr& impl); + explicit wxWebRequest(const wxWebRequestImplPtr& impl) + : wxWebRequestBase(impl) + { + } +}; - wxWebRequestImplPtr m_impl; +class WXDLLIMPEXP_NET wxWebRequestSync : public wxWebRequestBase +{ +public: + wxWebRequestSync() = default; + wxWebRequestSync(const wxWebRequestSync& other) = default; + wxWebRequestSync& operator=(const wxWebRequestSync& other) = default; + + // Possible return values for the state here are State_Completed, + // State_Failed and State_Unauthorized. + Result Execute() const; + +private: + friend class wxWebSessionSync; + + explicit wxWebRequestSync(const wxWebRequestImplPtr& impl) + : wxWebRequestBase(impl) + { + } +}; + + +// Describe the proxy to be used by the web session. +class wxWebProxy +{ +public: + static wxWebProxy FromURL(const wxString& url) + { + return wxWebProxy(Type::URL, url); + } + + static wxWebProxy Disable() { return wxWebProxy(Type::Disabled); } + static wxWebProxy Default() { return wxWebProxy(Type::Default); } + + enum class Type + { + URL, + Disabled, + Default + }; + + Type GetType() const { return m_type; } + + const wxString& GetURL() const + { + wxASSERT( m_type == Type::URL ); + return m_url; + } + +private: + wxWebProxy(Type type, const wxString& url = wxString{}) + : m_type(type), m_url(url) + { + } + + // These fields never change but can't be const because we want these + // objects to be copyable/assignable. + Type m_type; + wxString m_url; }; extern WXDLLIMPEXP_DATA_NET(const char) wxWebSessionBackendWinHTTP[]; extern WXDLLIMPEXP_DATA_NET(const char) wxWebSessionBackendURLSession[]; extern WXDLLIMPEXP_DATA_NET(const char) wxWebSessionBackendCURL[]; -class WXDLLIMPEXP_NET wxWebSession +// Common base class for synchronous and asynchronous web sessions. +class WXDLLIMPEXP_NET wxWebSessionBase { public: // Default ctor creates an invalid session object, only IsOpened() can be // called on it. - wxWebSession(); - - wxWebSession(const wxWebSession& other); - wxWebSession& operator=(const wxWebSession& other); - ~wxWebSession(); - - // Objects of this class can't be created directly, use the following - // factory functions to get access to them. - static wxWebSession& GetDefault(); + wxWebSessionBase(); - static wxWebSession New(const wxString& backend = wxString()); + wxWebSessionBase(const wxWebSessionBase& other); + wxWebSessionBase& operator=(const wxWebSessionBase& other); + ~wxWebSessionBase(); // Can be used to check if the given backend is available without actually // creating a session using it. static bool IsBackendAvailable(const wxString& backend); - wxWebRequest - CreateRequest(wxEvtHandler* handler, const wxString& url, int id = wxID_ANY); + wxVersionInfo GetLibraryVersionInfo() const; - wxVersionInfo GetLibraryVersionInfo(); + bool SetBaseURL(const wxString& url); void AddCommonHeader(const wxString& name, const wxString& value); void SetTempDir(const wxString& dir); wxString GetTempDir() const; + bool SetProxy(const wxWebProxy& proxy); + bool IsOpened() const; void Close(); @@ -256,11 +389,75 @@ class WXDLLIMPEXP_NET wxWebSession static void InitFactoryMap(); - explicit wxWebSession(const wxWebSessionImplPtr& impl); +protected: + // This function handles empty backend string correctly, i.e. returns the + // default backend in this case. + // + // The returned pointer should not be deleted by the caller. + // + // If the specified backend is not found, returns a null pointer. + static wxWebSessionFactory* FindFactory(const wxString& backend); + + explicit wxWebSessionBase(const wxWebSessionImplPtr& impl); + + // Return the absolute URL combining the provided one with the base URL if + // it's relative. + wxString GetFullURL(const wxString& url) const; wxWebSessionImplPtr m_impl; }; +// Web session class for using asynchronous web requests, suitable for use in +// the main thread of GUI applications. +class WXDLLIMPEXP_NET wxWebSession : public wxWebSessionBase +{ +public: + wxWebSession() = default; + + wxWebSession(const wxWebSession& other) = default; + wxWebSession& operator=(const wxWebSession& other) = default; + + // Objects of this class can't be created directly, use the following + // factory functions to get access to them. + static wxWebSession& GetDefault(); + + static wxWebSession New(const wxString& backend = wxString()); + + wxWebRequest + CreateRequest(wxEvtHandler* handler, const wxString& url, int id = wxID_ANY); + +private: + explicit wxWebSession(const wxWebSessionImplPtr& impl) + : wxWebSessionBase(impl) + { + } +}; + +// Web session class for using synchronous web requests, suitable for use in +// background worker threads. +class WXDLLIMPEXP_NET wxWebSessionSync : public wxWebSessionBase +{ +public: + wxWebSessionSync() = default; + + wxWebSessionSync(const wxWebSessionSync& other) = default; + wxWebSessionSync& operator=(const wxWebSessionSync& other) = default; + + // Objects of this class can't be created directly, use the following + // factory functions to get access to them. + static wxWebSessionSync& GetDefault(); + + static wxWebSessionSync New(const wxString& backend = wxString()); + + wxWebRequestSync CreateRequest(const wxString& url); + +private: + explicit wxWebSessionSync(const wxWebSessionImplPtr& impl) + : wxWebSessionBase(impl) + { + } +}; + class WXDLLIMPEXP_NET wxWebRequestEvent : public wxEvent { public: diff --git a/include/wx-3.3/wx/webview.h b/include/wx-3.3/wx/webview.h index 516d8fc..365b866 100644 --- a/include/wx-3.3/wx/webview.h +++ b/include/wx-3.3/wx/webview.h @@ -185,7 +185,11 @@ class WXDLLIMPEXP_WEBVIEW wxWebViewFactory : public wxObject long style = 0, const wxString& name = wxASCII_STR(wxWebViewNameStr)) = 0; virtual bool IsAvailable() { return true; } - virtual wxVersionInfo GetVersionInfo() { return wxVersionInfo(); } + virtual wxVersionInfo + GetVersionInfo(wxVersionContext WXUNUSED(context) = wxVersionContext::RunTime) + { + return wxVersionInfo(); + } virtual wxWebViewConfiguration CreateConfiguration(); }; @@ -226,7 +230,10 @@ class WXDLLIMPEXP_WEBVIEW wxWebView : public wxControl static void RegisterFactory(const wxString& backend, wxSharedPtr factory); static bool IsBackendAvailable(const wxString& backend); - static wxVersionInfo GetBackendVersionInfo(const wxString& backend = wxASCII_STR(wxWebViewBackendDefault)); + static wxVersionInfo GetBackendVersionInfo( + const wxString& backend = wxASCII_STR(wxWebViewBackendDefault), + wxVersionContext context = wxVersionContext::RunTime + ); static wxWebViewConfiguration NewConfiguration(const wxString& backend = wxASCII_STR(wxWebViewBackendDefault)); // General methods @@ -235,6 +242,7 @@ class WXDLLIMPEXP_WEBVIEW wxWebView : public wxControl m_showMenu = enable; } virtual void EnableAccessToDevTools(bool WXUNUSED(enable) = true) { } + virtual bool ShowDevTools() { return false; } virtual void EnableBrowserAcceleratorKeys(bool WXUNUSED(enable) = true) { } virtual bool AreBrowserAcceleratorKeysEnabled() const { return false; } virtual wxString GetCurrentTitle() const = 0; diff --git a/include/wx-3.3/wx/webview_chromium.h b/include/wx-3.3/wx/webview_chromium.h index 4074ad8..fe034a6 100644 --- a/include/wx-3.3/wx/webview_chromium.h +++ b/include/wx-3.3/wx/webview_chromium.h @@ -76,6 +76,10 @@ class WXDLLIMPEXP_WEBVIEW wxWebViewChromium : public wxWebView virtual void Reload(wxWebViewReloadFlags flags = wxWEBVIEW_RELOAD_DEFAULT) override; virtual bool SetProxy(const wxString& proxy) override; + virtual void EnableAccessToDevTools(bool enable) override; + virtual bool ShowDevTools() override; + virtual bool IsAccessToDevToolsEnabled() const override; + virtual wxString GetPageSource() const override; virtual wxString GetPageText() const override; @@ -205,6 +209,10 @@ class wxWebViewConfigurationChromium // Logging level must be one of cef_log_severity_t values (0 means default). int m_logLevel = 0; + // If non-zero, specifies the port to use for remote debugging (the usual + // value for it is 9223). + int m_remoteDebuggingPort = 0; + // Function to create the custom CefClient to use if non-null. // // The CefClient subclass must delegate all not otherwise implemented diff --git a/include/wx-3.3/wx/window.h b/include/wx-3.3/wx/window.h index 4931619..2e18ade 100644 --- a/include/wx-3.3/wx/window.h +++ b/include/wx-3.3/wx/window.h @@ -58,6 +58,7 @@ class WXDLLIMPEXP_FWD_CORE wxControl; class WXDLLIMPEXP_FWD_CORE wxDC; class WXDLLIMPEXP_FWD_CORE wxDropTarget; class WXDLLIMPEXP_FWD_CORE wxLayoutConstraints; +class WXDLLIMPEXP_FWD_CORE wxReadOnlyDC; class WXDLLIMPEXP_FWD_CORE wxSizer; class WXDLLIMPEXP_FWD_CORE wxTextEntry; class WXDLLIMPEXP_FWD_CORE wxToolTip; @@ -1142,7 +1143,8 @@ class WXDLLIMPEXP_CORE wxWindowBase : public wxEvtHandler // return true if window had been frozen and not unthawed yet bool IsFrozen() const { return m_freezeCount != 0; } - // adjust DC for drawing on this window + // adjust DC for measuring or drawing on this window + virtual void PrepareReadOnlyDC( wxReadOnlyDC & WXUNUSED(dc) ) { } virtual void PrepareDC( wxDC & WXUNUSED(dc) ) { } // enable or disable double buffering @@ -1339,6 +1341,11 @@ class WXDLLIMPEXP_CORE wxWindowBase : public wxEvtHandler // send wxUpdateUIEvents to this window, and children if recurse is true virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE); + // do the window-specific processing before processing the update event + // (mainly for deciding whether wxUpdateUIEvent::Is3State() is set) + virtual void DoPrepareUpdateWindowUI(wxUpdateUIEvent& event) const + { event.Allow3rdState(false); } + // do the window-specific processing after processing the update event virtual void DoUpdateWindowUI(wxUpdateUIEvent& event) ; diff --git a/include/wx-3.3/wx/wxprec.h b/include/wx-3.3/wx/wxprec.h index 9ad7321..7ee6e0a 100644 --- a/include/wx-3.3/wx/wxprec.h +++ b/include/wx-3.3/wx/wxprec.h @@ -10,14 +10,10 @@ // compiler detection; includes setup.h #include "wx/defs.h" -// check if to use precompiled headers: do it for most Windows compilers unless -// explicitly disabled by defining NOPCH -#if defined(__VISUALC__) - // If user did not request NOCPH and we're not building using configure - // then assume user wants precompiled headers. - #if !defined(NOPCH) && !defined(__WX_SETUP_H__) - #define WX_PRECOMP - #endif +// check if to use precompiled headers: do it for MSVC unless explicitly +// disabled by defining NOPCH +#if !defined(WX_PRECOMP) && defined(__VISUALC__) && !defined(NOPCH) + #define WX_PRECOMP #endif #ifdef WX_PRECOMP diff --git a/include/xlsxwriter.h b/include/xlsxwriter.h index 702b08e..2dfde5f 100644 --- a/include/xlsxwriter.h +++ b/include/xlsxwriter.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** @@ -18,8 +19,8 @@ #include "xlsxwriter/format.h" #include "xlsxwriter/utility.h" -#define LXW_VERSION "1.1.5" -#define LXW_VERSION_ID 115 -#define LXW_SOVERSION "5" +#define LXW_VERSION "1.1.8" +#define LXW_VERSION_ID 118 +#define LXW_SOVERSION "7" #endif /* __LXW_XLSXWRITER_H__ */ diff --git a/include/xlsxwriter/app.h b/include/xlsxwriter/app.h index 34f2e3b..2931cf7 100644 --- a/include/xlsxwriter/app.h +++ b/include/xlsxwriter/app.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * app - A libxlsxwriter library for creating Excel XLSX app files. * diff --git a/include/xlsxwriter/chart.h b/include/xlsxwriter/chart.h index 3a90056..82cac96 100644 --- a/include/xlsxwriter/chart.h +++ b/include/xlsxwriter/chart.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * chart - A libxlsxwriter library for creating Excel XLSX chart files. * diff --git a/include/xlsxwriter/chartsheet.h b/include/xlsxwriter/chartsheet.h index 5406249..dcf87c5 100644 --- a/include/xlsxwriter/chartsheet.h +++ b/include/xlsxwriter/chartsheet.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * chartsheet - A libxlsxwriter library for creating Excel XLSX chartsheet files. * diff --git a/include/xlsxwriter/comment.h b/include/xlsxwriter/comment.h index e13f353..d5495e7 100644 --- a/include/xlsxwriter/comment.h +++ b/include/xlsxwriter/comment.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * comment - A libxlsxwriter library for creating Excel XLSX comment files. * diff --git a/include/xlsxwriter/common.h b/include/xlsxwriter/common.h index 12679b4..2125394 100644 --- a/include/xlsxwriter/common.h +++ b/include/xlsxwriter/common.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** @@ -9,7 +10,7 @@ * * @brief Common functions and defines for the libxlsxwriter library. * - * + * * */ #ifndef __LXW_COMMON_H__ @@ -106,6 +107,9 @@ typedef enum lxw_error { /** Function parameter validation error. */ LXW_ERROR_PARAMETER_VALIDATION, + /** Function string parameter is empty. */ + LXW_ERROR_PARAMETER_IS_EMPTY, + /** Worksheet name exceeds Excel's limit of 31 characters. */ LXW_ERROR_SHEETNAME_LENGTH_EXCEEDED, diff --git a/include/xlsxwriter/content_types.h b/include/xlsxwriter/content_types.h index 1cb811b..e337ca1 100644 --- a/include/xlsxwriter/content_types.h +++ b/include/xlsxwriter/content_types.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * content_types - A libxlsxwriter library for creating Excel XLSX * content_types files. @@ -63,6 +64,7 @@ void lxw_ct_add_shared_strings(lxw_content_types *content_types); void lxw_ct_add_calc_chain(lxw_content_types *content_types); void lxw_ct_add_custom_properties(lxw_content_types *content_types); void lxw_ct_add_metadata(lxw_content_types *content_types); +void lxw_ct_add_rich_value(lxw_content_types *content_types); /* Declarations required for unit testing. */ #ifdef TESTING diff --git a/include/xlsxwriter/core.h b/include/xlsxwriter/core.h index 40479ba..555e448 100644 --- a/include/xlsxwriter/core.h +++ b/include/xlsxwriter/core.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * core - A libxlsxwriter library for creating Excel XLSX core files. * diff --git a/include/xlsxwriter/custom.h b/include/xlsxwriter/custom.h index 3231257..b1029fb 100644 --- a/include/xlsxwriter/custom.h +++ b/include/xlsxwriter/custom.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * custom - A libxlsxwriter library for creating Excel custom property files. * diff --git a/include/xlsxwriter/drawing.h b/include/xlsxwriter/drawing.h index 1025a04..0ed22ef 100644 --- a/include/xlsxwriter/drawing.h +++ b/include/xlsxwriter/drawing.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * drawing - A libxlsxwriter library for creating Excel XLSX drawing files. * diff --git a/include/xlsxwriter/format.h b/include/xlsxwriter/format.h index 9ff8ee1..116ea9a 100644 --- a/include/xlsxwriter/format.h +++ b/include/xlsxwriter/format.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** diff --git a/include/xlsxwriter/hash_table.h b/include/xlsxwriter/hash_table.h index d334d14..e9ea189 100644 --- a/include/xlsxwriter/hash_table.h +++ b/include/xlsxwriter/hash_table.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * hash_table - Hash table functions for libxlsxwriter. * diff --git a/include/xlsxwriter/metadata.h b/include/xlsxwriter/metadata.h index 86cb5cd..85fbb7a 100644 --- a/include/xlsxwriter/metadata.h +++ b/include/xlsxwriter/metadata.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * metadata - A libxlsxwriter library for creating Excel XLSX metadata files. * @@ -19,6 +20,9 @@ typedef struct lxw_metadata { FILE *file; + uint8_t has_dynamic_functions; + uint8_t has_embedded_images; + uint32_t num_embedded_images; } lxw_metadata; diff --git a/include/xlsxwriter/packager.h b/include/xlsxwriter/packager.h index e5ba793..7016573 100644 --- a/include/xlsxwriter/packager.h +++ b/include/xlsxwriter/packager.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * packager - A libxlsxwriter library for creating Excel XLSX packager files. * @@ -36,6 +37,10 @@ #include "vml.h" #include "comment.h" #include "metadata.h" +#include "rich_value.h" +#include "rich_value_rel.h" +#include "rich_value_types.h" +#include "rich_value_structure.h" #define LXW_ZIP_BUFFER_SIZE (16384) diff --git a/include/xlsxwriter/relationships.h b/include/xlsxwriter/relationships.h index d72ad0a..882d9ff 100644 --- a/include/xlsxwriter/relationships.h +++ b/include/xlsxwriter/relationships.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * relationships - A libxlsxwriter library for creating Excel XLSX * relationships files. @@ -60,6 +61,7 @@ void lxw_add_ms_package_relationship(lxw_relationships *self, void lxw_add_worksheet_relationship(lxw_relationships *self, const char *type, const char *target, const char *target_mode); +void lxw_add_rich_value_relationship(lxw_relationships *self); /* Declarations required for unit testing. */ #ifdef TESTING diff --git a/include/xlsxwriter/rich_value.h b/include/xlsxwriter/rich_value.h new file mode 100644 index 0000000..1ea4388 --- /dev/null +++ b/include/xlsxwriter/rich_value.h @@ -0,0 +1,51 @@ +/* + * libxlsxwriter + * + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * + * rich_value - A libxlsxwriter library for creating Excel XLSX rich_value files. + * + */ +#ifndef __LXW_RICH_VALUE_H__ +#define __LXW_RICH_VALUE_H__ + +#include + +#include "common.h" +#include "workbook.h" + +/* + * Struct to represent a rich_value object. + */ +typedef struct lxw_rich_value { + + FILE *file; + lxw_workbook *workbook; + +} lxw_rich_value; + + +/* *INDENT-OFF* */ +#ifdef __cplusplus +extern "C" { +#endif +/* *INDENT-ON* */ + +lxw_rich_value *lxw_rich_value_new(void); +void lxw_rich_value_free(lxw_rich_value *rich_value); +void lxw_rich_value_assemble_xml_file(lxw_rich_value *self); + +/* Declarations required for unit testing. */ +#ifdef TESTING + +STATIC void _rich_value_xml_declaration(lxw_rich_value *self); + +#endif /* TESTING */ + +/* *INDENT-OFF* */ +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* __LXW_RICH_VALUE_H__ */ diff --git a/include/xlsxwriter/rich_value_rel.h b/include/xlsxwriter/rich_value_rel.h new file mode 100644 index 0000000..2d35ef0 --- /dev/null +++ b/include/xlsxwriter/rich_value_rel.h @@ -0,0 +1,50 @@ +/* + * libxlsxwriter + * + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * + * rich_value_rel - A libxlsxwriter library for creating Excel XLSX rich_value_rel files. + * + */ +#ifndef __LXW_RICH_VALUE_REL_H__ +#define __LXW_RICH_VALUE_REL_H__ + +#include + +#include "common.h" + +/* + * Struct to represent a rich_value_rel object. + */ +typedef struct lxw_rich_value_rel { + + FILE *file; + uint32_t num_embedded_images; + +} lxw_rich_value_rel; + + +/* *INDENT-OFF* */ +#ifdef __cplusplus +extern "C" { +#endif +/* *INDENT-ON* */ + +lxw_rich_value_rel *lxw_rich_value_rel_new(void); +void lxw_rich_value_rel_free(lxw_rich_value_rel *rich_value_rel); +void lxw_rich_value_rel_assemble_xml_file(lxw_rich_value_rel *self); + +/* Declarations required for unit testing. */ +#ifdef TESTING + +STATIC void _rich_value_rel_xml_declaration(lxw_rich_value_rel *self); + +#endif /* TESTING */ + +/* *INDENT-OFF* */ +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* __LXW_RICH_VALUE_REL_H__ */ diff --git a/include/xlsxwriter/rich_value_structure.h b/include/xlsxwriter/rich_value_structure.h new file mode 100644 index 0000000..750adc1 --- /dev/null +++ b/include/xlsxwriter/rich_value_structure.h @@ -0,0 +1,53 @@ +/* + * libxlsxwriter + * + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * + * rich_value_structure - A libxlsxwriter library for creating Excel XLSX rich_value_structure files. + * + */ +#ifndef __LXW_RICH_VALUE_STRUCTURE_H__ +#define __LXW_RICH_VALUE_STRUCTURE_H__ + +#include + +#include "common.h" + +/* + * Struct to represent a rich_value_structure object. + */ +typedef struct lxw_rich_value_structure { + + FILE *file; + uint8_t has_embedded_image_descriptions; + +} lxw_rich_value_structure; + + +/* *INDENT-OFF* */ +#ifdef __cplusplus +extern "C" { +#endif +/* *INDENT-ON* */ + +lxw_rich_value_structure *lxw_rich_value_structure_new(void); +void lxw_rich_value_structure_free(lxw_rich_value_structure + *rich_value_structure); +void lxw_rich_value_structure_assemble_xml_file(lxw_rich_value_structure + *self); + +/* Declarations required for unit testing. */ +#ifdef TESTING + +STATIC void _rich_value_structure_xml_declaration(lxw_rich_value_structure + *self); + +#endif /* TESTING */ + +/* *INDENT-OFF* */ +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* __LXW_RICH_VALUE_STRUCTURE_H__ */ diff --git a/include/xlsxwriter/rich_value_types.h b/include/xlsxwriter/rich_value_types.h new file mode 100644 index 0000000..24bb9aa --- /dev/null +++ b/include/xlsxwriter/rich_value_types.h @@ -0,0 +1,49 @@ +/* + * libxlsxwriter + * + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * + * rich_value_types - A libxlsxwriter library for creating Excel XLSX rich_value_types files. + * + */ +#ifndef __LXW_RICH_VALUE_TYPES_H__ +#define __LXW_RICH_VALUE_TYPES_H__ + +#include + +#include "common.h" + +/* + * Struct to represent a rich_value_types object. + */ +typedef struct lxw_rich_value_types { + + FILE *file; + +} lxw_rich_value_types; + + +/* *INDENT-OFF* */ +#ifdef __cplusplus +extern "C" { +#endif +/* *INDENT-ON* */ + +lxw_rich_value_types *lxw_rich_value_types_new(void); +void lxw_rich_value_types_free(lxw_rich_value_types *rich_value_types); +void lxw_rich_value_types_assemble_xml_file(lxw_rich_value_types *self); + +/* Declarations required for unit testing. */ +#ifdef TESTING + +STATIC void _rich_value_types_xml_declaration(lxw_rich_value_types *self); + +#endif /* TESTING */ + +/* *INDENT-OFF* */ +#ifdef __cplusplus +} +#endif +/* *INDENT-ON* */ + +#endif /* __LXW_RICH_VALUE_TYPES_H__ */ diff --git a/include/xlsxwriter/shared_strings.h b/include/xlsxwriter/shared_strings.h index 98a2710..a4dc0c4 100644 --- a/include/xlsxwriter/shared_strings.h +++ b/include/xlsxwriter/shared_strings.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * shared_strings - A libxlsxwriter library for creating Excel XLSX * sst files. diff --git a/include/xlsxwriter/styles.h b/include/xlsxwriter/styles.h index 780fdb6..5fffab7 100644 --- a/include/xlsxwriter/styles.h +++ b/include/xlsxwriter/styles.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * styles - A libxlsxwriter library for creating Excel XLSX styles files. * diff --git a/include/xlsxwriter/table.h b/include/xlsxwriter/table.h index 452d83c..baf613f 100644 --- a/include/xlsxwriter/table.h +++ b/include/xlsxwriter/table.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * table - A libxlsxwriter library for creating Excel XLSX table files. * diff --git a/include/xlsxwriter/theme.h b/include/xlsxwriter/theme.h index 4a2a2e6..7cbb085 100644 --- a/include/xlsxwriter/theme.h +++ b/include/xlsxwriter/theme.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * theme - A libxlsxwriter library for creating Excel XLSX theme files. * diff --git a/include/xlsxwriter/third_party/ioapi.h b/include/xlsxwriter/third_party/ioapi.h index 50b669a..32bae47 100644 --- a/include/xlsxwriter/third_party/ioapi.h +++ b/include/xlsxwriter/third_party/ioapi.h @@ -66,7 +66,7 @@ #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) #define ftello64 _ftelli64 #define fseeko64 _fseeki64 - #else // old MSC + #else /* old MSC */ #define ftello64 ftell #define fseeko64 fseek #endif @@ -150,7 +150,7 @@ typedef long (ZCALLBACK *tell_file_func) (voidpf opaque, voidpf stream) typedef long (ZCALLBACK *seek_file_func) (voidpf opaque, voidpf stream, uLong offset, int origin); -/* here is the "old" 32 bits structure structure */ +/* here is the "old" 32 bits structure */ typedef struct zlib_filefunc_def_s { open_file_func zopen_file; @@ -194,8 +194,8 @@ typedef struct zlib_filefunc64_32_def_s #define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) #define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -/*#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))*/ -/*#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))*/ +/* #define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream)) */ +/* #define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode)) */ #define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) #define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) diff --git a/include/xlsxwriter/third_party/zip.h b/include/xlsxwriter/third_party/zip.h index 791f013..1921339 100644 --- a/include/xlsxwriter/third_party/zip.h +++ b/include/xlsxwriter/third_party/zip.h @@ -49,7 +49,7 @@ extern "C" { #endif -/*#define HAVE_BZIP2*/ +/* #define HAVE_BZIP2 */ #ifndef _ZLIB_H #include "zlib.h" @@ -190,9 +190,9 @@ extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, filename : the filename in zip (if NULL, '-' without quote will be used *zipfi contain supplemental information if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header + contains the extrafield data for the local header if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header + contains the extrafield data for the global header if comment != NULL, comment contain the comment string method contain the compression method (0 for store, Z_DEFLATED for deflate) level contain the level of compression (can be Z_DEFAULT_COMPRESSION) diff --git a/include/xlsxwriter/utility.h b/include/xlsxwriter/utility.h index 3c770f5..5853d10 100644 --- a/include/xlsxwriter/utility.h +++ b/include/xlsxwriter/utility.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** @@ -9,7 +10,7 @@ * * @brief Utility functions for libxlsxwriter. * - * + * * */ @@ -220,10 +221,9 @@ double lxw_unixtime_to_excel_date_epoch(int64_t unixtime, uint8_t date_1904); char *lxw_strdup(const char *str); char *lxw_strdup_formula(const char *formula); - size_t lxw_utf8_strlen(const char *str); - void lxw_str_tolower(char *str); +uint8_t lxw_str_is_empty(const char *str); /* Define a portable version of strcasecmp(). */ #ifdef _MSC_VER diff --git a/include/xlsxwriter/vml.h b/include/xlsxwriter/vml.h index b5a5866..79cb1fa 100644 --- a/include/xlsxwriter/vml.h +++ b/include/xlsxwriter/vml.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * vml - A libxlsxwriter library for creating Excel XLSX vml files. * diff --git a/include/xlsxwriter/workbook.h b/include/xlsxwriter/workbook.h index 8988461..e635006 100644 --- a/include/xlsxwriter/workbook.h +++ b/include/xlsxwriter/workbook.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** @@ -298,6 +299,7 @@ typedef struct lxw_workbook { struct lxw_worksheet_names *worksheet_names; struct lxw_chartsheet_names *chartsheet_names; struct lxw_image_md5s *image_md5s; + struct lxw_image_md5s *embedded_image_md5s; struct lxw_image_md5s *header_image_md5s; struct lxw_image_md5s *background_md5s; struct lxw_charts *charts; @@ -321,6 +323,7 @@ typedef struct lxw_workbook { uint16_t num_format_count; uint16_t drawing_count; uint16_t comment_count; + uint32_t num_embedded_images; uint16_t font_count; uint16_t border_count; @@ -336,6 +339,9 @@ typedef struct lxw_workbook { uint8_t has_vml; uint8_t has_comments; uint8_t has_metadata; + uint8_t has_embedded_images; + uint8_t has_dynamic_functions; + uint8_t has_embedded_image_descriptions; lxw_hash_table *used_xf_formats; lxw_hash_table *used_dxf_formats; @@ -468,6 +474,7 @@ lxw_workbook *workbook_new_opt(const char *filename, * * The worksheet name must be a valid Excel worksheet name, i.e: * + * - The name cannot be blank. * - The name is less than or equal to 31 UTF-8 characters. * - The name doesn't contain any of the characters: ` [ ] : * ? / \ ` * - The name doesn't start or end with an apostrophe. @@ -510,6 +517,7 @@ lxw_worksheet *workbook_add_worksheet(lxw_workbook *workbook, * * The chartsheet name must be a valid Excel worksheet name, i.e.: * + * - The name cannot be blank. * - The name is less than or equal to 31 UTF-8 characters. * - The name doesn't contain any of the characters: ` [ ] : * ? / \ ` * - The name doesn't start or end with an apostrophe. @@ -853,7 +861,7 @@ lxw_error workbook_set_custom_property_datetime(lxw_workbook *workbook, * @endcode * * The rules for names in Excel are explained in the - * [Microsoft Office documentation](http://office.microsoft.com/en-001/excel-help/define-and-use-names-in-formulas-HA010147120.aspx). + * [Microsoft Office documentation](https://support.microsoft.com/en-us/office/define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64). * */ lxw_error workbook_define_name(lxw_workbook *workbook, const char *name, @@ -926,6 +934,7 @@ lxw_chartsheet *workbook_get_chartsheet_by_name(lxw_workbook *workbook, * This function is used to validate a worksheet or chartsheet name according * to the rules used by Excel: * + * - The name cannot be blank. * - The name is less than or equal to 31 UTF-8 characters. * - The name doesn't contain any of the characters: ` [ ] : * ? / \ ` * - The name doesn't start or end with an apostrophe. diff --git a/include/xlsxwriter/worksheet.h b/include/xlsxwriter/worksheet.h index caf3f81..fe145ee 100644 --- a/include/xlsxwriter/worksheet.h +++ b/include/xlsxwriter/worksheet.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. */ /** @@ -720,6 +721,7 @@ enum cell_types { DYNAMIC_ARRAY_FORMULA_CELL, BLANK_CELL, BOOLEAN_CELL, + ERROR_CELL, COMMENT, HYPERLINK_URL, HYPERLINK_INTERNAL, @@ -817,6 +819,7 @@ STAILQ_HEAD(lxw_selections, lxw_selection); STAILQ_HEAD(lxw_data_validations, lxw_data_val_obj); STAILQ_HEAD(lxw_cond_format_list, lxw_cond_format_obj); STAILQ_HEAD(lxw_image_props, lxw_object_properties); +STAILQ_HEAD(lxw_embedded_image_props, lxw_object_properties); STAILQ_HEAD(lxw_chart_props, lxw_object_properties); STAILQ_HEAD(lxw_comment_objs, lxw_vml_obj); STAILQ_HEAD(lxw_table_objs, lxw_table_obj); @@ -982,7 +985,7 @@ typedef struct lxw_data_validation { const char *value_formula; /** - * This parameter is used to set a list of strings for a drop down list. + * This parameter is used to set a list of strings for a dropdown list. * The list should be a `NULL` terminated array of char* strings: * * @code @@ -1695,8 +1698,8 @@ typedef struct lxw_filter_rule_obj { /** * @brief Options for inserted images. * - * Options for modifying images inserted via `worksheet_insert_image_opt()`. - * + * Options for modifying images inserted via `worksheet_insert_image_opt()` and + * `worksheet_embed_image_opt()`. */ typedef struct lxw_image_options { @@ -1735,6 +1738,10 @@ typedef struct lxw_image_options { /** Add an optional mouseover tip for a hyperlink to the image. */ const char *tip; + /** Add an optional format to the cell. Only used with + * `worksheet_embed_image_opt()` */ + lxw_format *cell_format; + } lxw_image_options; /** @@ -1806,6 +1813,7 @@ typedef struct lxw_object_properties { char *md5; char *image_position; uint8_t decorative; + lxw_format *format; STAILQ_ENTRY (lxw_object_properties) list_pointers; } lxw_object_properties; @@ -2119,6 +2127,7 @@ typedef struct lxw_worksheet { struct lxw_data_validations *data_validations; struct lxw_cond_format_hash *conditional_formats; struct lxw_image_props *image_props; + struct lxw_image_props *embedded_image_props; struct lxw_chart_props *chart_data; struct lxw_drawing_rel_ids *drawing_rel_ids; struct lxw_vml_drawing_rel_ids *vml_drawing_rel_ids; @@ -2192,7 +2201,7 @@ typedef struct lxw_worksheet { uint8_t zoom_scale_normal; uint8_t black_white; uint8_t num_validations; - uint8_t has_dynamic_arrays; + uint8_t has_dynamic_functions; char *vba_codename; uint16_t num_buttons; @@ -2251,6 +2260,7 @@ typedef struct lxw_worksheet { uint8_t has_header_vml; uint8_t has_background_image; uint8_t has_buttons; + uint8_t storing_embedded_image; lxw_rel_tuple *external_vml_comment_link; lxw_rel_tuple *external_comment_link; lxw_rel_tuple *external_vml_header_link; @@ -3621,9 +3631,18 @@ lxw_error worksheet_set_column_pixels_opt(lxw_worksheet *worksheet, * **Note**: * The scaling of a image may be affected if is crosses a row that has its * default height changed due to a font that is larger than the default font - * size or that has text wrapping turned on. To avoid this you should - * explicitly set the height of the row using `worksheet_set_row()` if it - * crosses an inserted image. See @ref working_with_object_positioning. + * size or that has text wrapping turned on. To avoid this you should explicitly + * set the height of the row using `worksheet_set_row()` if it crosses an + * inserted image. See @ref working_with_object_positioning. + * + * **NOTE on SVG files**: + * Excel doesn't directly support SVG files in the same way as other image file + * formats. It allows SVG to be inserted into a worksheet but converts them to, + * and displays them as, PNG files. It stores the original SVG image in the file + * so the original format can be retrieved. This removes the file size and + * resolution advantage of using SVG files. As such SVG files are not supported + * by `libxlsxwriter` since a conversion to the PNG format would be required + * and that format is already supported. * * BMP images are only supported for backward compatibility. In general it is * best to avoid BMP images since they aren't compressed. If used, BMP images @@ -3746,7 +3765,7 @@ lxw_error worksheet_insert_image_buffer(lxw_worksheet *worksheet, * * The `%worksheet_insert_image_buffer_opt()` function is like * `worksheet_insert_image_buffer()` function except that it takes an optional - * #lxw_image_options struct * #lxw_image_options struct with the following members/options: + * #lxw_image_options struct with the following members/options: * * - `x_offset`: Offset from the left of the cell in pixels. * - `y_offset`: Offset from the top of the cell in pixels. @@ -3782,6 +3801,126 @@ lxw_error worksheet_insert_image_buffer_opt(lxw_worksheet *worksheet, size_t image_size, lxw_image_options *options); +/** + * @brief Embed an image in a worksheet cell. + * + * @param worksheet Pointer to a lxw_worksheet instance to be updated. + * @param row The zero indexed row number. + * @param col The zero indexed column number. + * @param filename The image filename, with path if required. + * + * @return A #lxw_error code. + * + * This function can be used to embed a image into a worksheet cell and have the + * image automatically scale to the width and height of the cell. The X/Y + * scaling of the image is preserved but the size of the image is adjusted to + * fit the largest possible width or height depending on the cell dimensions. + * + * This is the equivalent of Excel's menu option to insert an image using the + * option to "Place in Cell" which is only available in Excel 365 versions from + * 2023 onwards. For older versions of Excel a `#VALUE!` error is displayed. + * + * @dontinclude embed_images.c + * @skip Change + * @until B6 + * + * @image html embed_image.png + * + * The `worksheet_embed_image_opt()` function takes additional optional + * parameters to add urls or format the cell background, see below. + * + */ +lxw_error worksheet_embed_image(lxw_worksheet *worksheet, + lxw_row_t row, lxw_col_t col, + const char *filename); + +/** + * @brief Embed an image in a worksheet cell, with options. + * + * @param worksheet Pointer to a lxw_worksheet instance to be updated. + * @param row The zero indexed row number. + * @param col The zero indexed column number. + * @param filename The image filename, with path if required. + * @param options Optional image parameters. + * + * @return A #lxw_error code. + * + * The `%worksheet_embed_image_opt()` function is like + * `worksheet_embed_image()` function except that it takes an optional + * #lxw_image_options struct with the following members/options: + * + * - `description`: Optional description or "Alt text" for the image. + * - `decorative`: Optional parameter to mark image as decorative. + * - `url`: Add an optional hyperlink to the image. + * - `cell_format`: Add a format for the cell behind the embedded image. + * + */ +lxw_error worksheet_embed_image_opt(lxw_worksheet *worksheet, + lxw_row_t row, lxw_col_t col, + const char *filename, + lxw_image_options *options); + +/** + * @brief Embed an image in a worksheet cell, from a memory buffer. + * + * @param worksheet Pointer to a lxw_worksheet instance to be updated. + * @param row The zero indexed row number. + * @param col The zero indexed column number. + * @param image_buffer Pointer to an array of bytes that holds the image data. + * @param image_size The size of the array of bytes. + * + * @return A #lxw_error code. + * + * This function can be used to embed a image into a worksheet from a memory + * buffer: + * + * @dontinclude embed_image_buffer.c + * @skip Embed + * @until B3 + * + * @image html embed_image_buffer.png + * + * The buffer should be a pointer to an array of unsigned char data with a + * specified size. + * + * See `worksheet_embed_image()` for details about the supported image + * formats, and other image features. + */ +lxw_error worksheet_embed_image_buffer(lxw_worksheet *worksheet, + lxw_row_t row, + lxw_col_t col, + const unsigned char *image_buffer, + size_t image_size); + +/** + * @brief Embed an image in a worksheet cell, from a memory buffer. + * + * @param worksheet Pointer to a lxw_worksheet instance to be updated. + * @param row The zero indexed row number. + * @param col The zero indexed column number. + * @param image_buffer Pointer to an array of bytes that holds the image data. + * @param image_size The size of the array of bytes. + * @param options Optional image parameters. + * + * @return A #lxw_error code. + * + * The `%worksheet_embed_image_buffer_opt()` function is like + * `worksheet_embed_image_buffer()` function except that it takes an optional + * #lxw_image_options struct with the following members/options: + * + * - `description`: Optional description or "Alt text" for the image. + * - `decorative`: Optional parameter to mark image as decorative. + * - `url`: Add an optional hyperlink to the image. + * - `cell_format`: Add a format for the cell behind the embedded image. + * + */ +lxw_error worksheet_embed_image_buffer_opt(lxw_worksheet *worksheet, + lxw_row_t row, + lxw_col_t col, + const unsigned char *image_buffer, + size_t image_size, + lxw_image_options *options); + /** * @brief Set the background image for a worksheet. * @@ -3995,7 +4134,7 @@ lxw_error worksheet_merge_range(lxw_worksheet *worksheet, lxw_row_t first_row, * The `%worksheet_autofilter()` function allows an autofilter to be added to * a worksheet. * - * An autofilter is a way of adding drop down lists to the headers of a 2D + * An autofilter is a way of adding dropdown lists to the headers of a 2D * range of worksheet data. This allows users to filter the data based on * simple criteria so that some data is shown and some is hidden. * @@ -4578,9 +4717,9 @@ void worksheet_split_panes_opt(lxw_worksheet *worksheet, * @endcode * */ -void worksheet_set_selection(lxw_worksheet *worksheet, - lxw_row_t first_row, lxw_col_t first_col, - lxw_row_t last_row, lxw_col_t last_col); +lxw_error worksheet_set_selection(lxw_worksheet *worksheet, + lxw_row_t first_row, lxw_col_t first_col, + lxw_row_t last_row, lxw_col_t last_col); /** * @brief Set the first visible cell at the top left of a worksheet. @@ -5811,6 +5950,10 @@ void lxw_worksheet_write_sheet_pr(lxw_worksheet *worksheet); void lxw_worksheet_write_page_setup(lxw_worksheet *worksheet); void lxw_worksheet_write_header_footer(lxw_worksheet *worksheet); +void worksheet_set_error_cell(lxw_worksheet *worksheet, + lxw_object_properties *object_props, + uint32_t ref_id); + /* Declarations required for unit testing. */ #ifdef TESTING diff --git a/include/xlsxwriter/xmlwriter.h b/include/xlsxwriter/xmlwriter.h index 3994095..0796df7 100644 --- a/include/xlsxwriter/xmlwriter.h +++ b/include/xlsxwriter/xmlwriter.h @@ -1,7 +1,8 @@ /* * libxlsxwriter * - * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt. + * SPDX-License-Identifier: BSD-2-Clause + * Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. * * xmlwriter - A libxlsxwriter library for creating Excel XLSX * XML files. @@ -55,7 +56,7 @@ STAILQ_HEAD(xml_attribute_list, xml_attribute); /* Create a new attribute struct to add to a xml_attribute_list. */ struct xml_attribute *lxw_new_attribute_str(const char *key, const char *value); -struct xml_attribute *lxw_new_attribute_int(const char *key, uint64_t value); +struct xml_attribute *lxw_new_attribute_int(const char *key, int32_t value); struct xml_attribute *lxw_new_attribute_dbl(const char *key, double value); /* Macro to initialize the xml_attribute_list pointers. */ diff --git a/lib/libSDL2.a b/lib/libSDL2.a index d7694c7..ccfbb3a 100644 --- a/lib/libSDL2.a +++ b/lib/libSDL2.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f0b6cab74edbdd67a35c1354c285552c1ea716aaf476039a03ee6247fd1eef3 -size 18385232 +oid sha256:e1c4386da635c61416907f500e708e5ab43b1351a0df84d60bdc36781953bf0d +size 18433640 diff --git a/lib/libavcodec.a b/lib/libavcodec.a index ebec2b8..591e703 100644 --- a/lib/libavcodec.a +++ b/lib/libavcodec.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6ca04cd3091f48449aabb7de075e6bf60a8f42e0dc68ceb1531ba03dbec42f2 -size 165368976 +oid sha256:f709f1c29b4cafceb49907a0e76d7f37d1fd737c2277d9df679fa2665f359f13 +size 163702432 diff --git a/lib/libavdevice.a b/lib/libavdevice.a index 0226544..7cafc10 100644 --- a/lib/libavdevice.a +++ b/lib/libavdevice.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09a4272b53e6bed1d498594d188b00a8913692f9d71699cebed331b4c6eaad96 -size 1099824 +oid sha256:1f1561a972ffb10594464cca5a1ace4c1bc049be7a9ecdae3f4696a3f71927aa +size 1099784 diff --git a/lib/libavfilter.a b/lib/libavfilter.a index 59a7b34..891ecd8 100644 --- a/lib/libavfilter.a +++ b/lib/libavfilter.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e21b57cf613e2c768fd510a1f14b4b772cf8d787b344c31160a096fcfdc653f -size 52124760 +oid sha256:053f7d18bf46b06a2c873a947a45ac4672d3f6c26eacc7165a21d938df93916d +size 51569000 diff --git a/lib/libavformat.a b/lib/libavformat.a index 46bbc8c..86c99dc 100644 --- a/lib/libavformat.a +++ b/lib/libavformat.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb68f83a02048cce07114a7b53ede73eee72c3fb3cdb24e154adb19bd849e3e6 -size 53540632 +oid sha256:4aab2dd86362851284bfce7ba0c7e4128c906805de3ff64df4e34278c39e0ee0 +size 53451592 diff --git a/lib/libavutil.a b/lib/libavutil.a index b29d7bf..c13286e 100644 --- a/lib/libavutil.a +++ b/lib/libavutil.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a526c64f7e999d3f2fa4a3fe72a99d98696b68b1ba4ae345ae1e14684afd6e0 -size 6177072 +oid sha256:41f4d169a66cf38202a494633cc2ec1d3b6f4d453afc96eced76fb9516c6ab3c +size 6269712 diff --git a/lib/libhidapi.a b/lib/libhidapi.a index bc07169..2cf5ea7 100644 --- a/lib/libhidapi.a +++ b/lib/libhidapi.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f125df8590c9496c8b2b0e08fb9024ebe37d54a983897f4173b5c1c3ad78218 -size 243888 +oid sha256:3527fe04f4be3de6cfd00bd45c5c87d14da84629a524175b0866b77209b123d3 +size 246192 diff --git a/lib/libliquidfun.a b/lib/libliquidfun.a index d3006d1..c4d8c54 100644 --- a/lib/libliquidfun.a +++ b/lib/libliquidfun.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8f64e280254d2c0c584bb849b532543b8320efad520fe4028e794afc0651dfb -size 11350128 +oid sha256:cdc15430aefb1c0f80e42f0bd4d6a860bc302fd31d03f4448035f42811ce0cef +size 11452064 diff --git a/lib/liblog4cpp.a b/lib/liblog4cpp.a index cb20f70..a9b830f 100644 --- a/lib/liblog4cpp.a +++ b/lib/liblog4cpp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de2e469fb6e413192eb9504493a47021e906bae44647b6a412ddbac84d8d8b2c -size 23983328 +oid sha256:361f8d234a3611d864e5623d4ae1914bc5d604d84536cd4d66e28e87ebcf37eb +size 24096232 diff --git a/lib/liblua.a b/lib/liblua.a index 14ab02f..fb9ba23 100644 --- a/lib/liblua.a +++ b/lib/liblua.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e9d4cb69948591f629c264cd77468a66147ec35469a5ac05263a66c9664a658 -size 4106576 +oid sha256:c090761a49c0158630804cbe85f1c98278fd8945bcb2f74f1b8cd81a0b0c32b2 +size 4147568 diff --git a/lib/libpostproc.a b/lib/libpostproc.a index 7bd7259..09f9651 100644 --- a/lib/libpostproc.a +++ b/lib/libpostproc.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9375f0a0543221ffec2e36119f3756262930845e78e8c14df90bd829aa57cf78 -size 232432 +oid sha256:7ad1fff762fbb1786664d424d0eb7ea871e8707fe8ea53caabaa2b1d201c065d +size 228744 diff --git a/lib/libsharpyuv.a b/lib/libsharpyuv.a index 046a282..e068d5a 100644 --- a/lib/libsharpyuv.a +++ b/lib/libsharpyuv.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e54825d58df32f5ed0ad5d95f432589134bc79362decd0b10ec71b57cd7752d9 -size 193920 +oid sha256:e7ef7d49b725f576055e647a29aa1142737bc7bdb62554573d4ed7722f2445a2 +size 197168 diff --git a/lib/libswresample.a b/lib/libswresample.a index 1d4fa9f..51980d6 100644 --- a/lib/libswresample.a +++ b/lib/libswresample.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6f0d560eec17e241d0ac6bbd9f1d06347c693981ec8ff4877e90a1d893815bb -size 904192 +oid sha256:0f87d1a1ffe350e834f19392cd7b5d271b6709481b7f23c83fd396efc9e85b3d +size 887056 diff --git a/lib/libswscale.a b/lib/libswscale.a index f363c6e..385771e 100644 --- a/lib/libswscale.a +++ b/lib/libswscale.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77abdda8123887927edd7def82a7f348ac064c1ea272983370d054e645d8d936 -size 6082800 +oid sha256:38c93d9a16bcbbb73b557ba2c8268fd03c705b63fdfd98786400d12f54cbfb46 +size 5932760 diff --git a/lib/libwebp.a b/lib/libwebp.a index e6837d9..4c030ea 100644 --- a/lib/libwebp.a +++ b/lib/libwebp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1827e6400bf5fec1ff81063a7095f3d922964f756d90048d8a4fd08ea282195f -size 7046464 +oid sha256:3403eb4b9e36f6f205a651c06cb44239d60670d717059fba7ecfee3831367575 +size 7088704 diff --git a/lib/libwebpdemux.a b/lib/libwebpdemux.a index a6cd259..1791d64 100644 --- a/lib/libwebpdemux.a +++ b/lib/libwebpdemux.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4883a15b6dceff8a009963224c4ce42edd17c02ee5bc85c35e5b087f79c4ddf -size 202560 +oid sha256:183a2fdfc9100095967a99b891b8f7f6164073a02bc7a82ba6561f25721c84f1 +size 202128 diff --git a/lib/libwx_baseu-3.3.a b/lib/libwx_baseu-3.3.a index fbabeda..1f8e916 100644 --- a/lib/libwx_baseu-3.3.a +++ b/lib/libwx_baseu-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d929d2320083ba19a350d94f497fa0340f56235cdb5c12ef65dbbbeaa31291b3 -size 159359656 +oid sha256:c3afbe872e8fae4340f44a4cbaab1b8e71b5485beaa42f0340932852314f9047 +size 155671320 diff --git a/lib/libwx_baseu_net-3.3.a b/lib/libwx_baseu_net-3.3.a index e60dfea..9b82650 100644 --- a/lib/libwx_baseu_net-3.3.a +++ b/lib/libwx_baseu_net-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59b6c5b2087446dc28c55df1224321239aadf9f7710c54b5a435ee3f91283a79 -size 21128992 +oid sha256:e1378e1a09f38b3a8a1a5e1ff07c754ca499cc180a9aa54c7ce5106546ccfc52 +size 21131824 diff --git a/lib/libwx_baseu_xml-3.3.a b/lib/libwx_baseu_xml-3.3.a index 23e615b..e77487a 100644 --- a/lib/libwx_baseu_xml-3.3.a +++ b/lib/libwx_baseu_xml-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d74e223af4bae9b063c3d6e489b89aa8c3256f33da289cfe84a3fff443cd42f -size 2412960 +oid sha256:dc2b81d55efc6f03ce8c62be3e73c0cd4db0fcebddf134808b6c116c0793c987 +size 2319536 diff --git a/lib/libwx_osx_cocoau_adv-3.3.a b/lib/libwx_osx_cocoau_adv-3.3.a index 1237935..9a5a1f2 100644 --- a/lib/libwx_osx_cocoau_adv-3.3.a +++ b/lib/libwx_osx_cocoau_adv-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:870f34620ed9f722903aa16492d7feac2d4f2da8225e0e717007e07e9277c03d -size 4608 +oid sha256:bcabb32fd35fce1356be386b2d548c6562d0d30bf9b348dd14e4e501238053bf +size 4688 diff --git a/lib/libwx_osx_cocoau_aui-3.3.a b/lib/libwx_osx_cocoau_aui-3.3.a index 50db2f3..22c58ba 100644 --- a/lib/libwx_osx_cocoau_aui-3.3.a +++ b/lib/libwx_osx_cocoau_aui-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26609730304b16e10ca84ed60905183e5c489ac108e863c3ff16a0d52251614e -size 25239120 +oid sha256:7081b9ca1fc97e5dcd82af131952911feddc656a60b2a05bc118b660f3bc5d7f +size 24900400 diff --git a/lib/libwx_osx_cocoau_core-3.3.a b/lib/libwx_osx_cocoau_core-3.3.a index 6bf072d..c04c197 100644 --- a/lib/libwx_osx_cocoau_core-3.3.a +++ b/lib/libwx_osx_cocoau_core-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:515fd0d58b8c65ca2a84f0cdec0b16c1f2c462df1370be1059c06e608f4a9bce -size 873146528 +oid sha256:9cf8e0b6aef510a4d48debe0c3ec732bd4324c0459a29e894fa1aa391d9b99e3 +size 859749328 diff --git a/lib/libwx_osx_cocoau_gl-3.3.a b/lib/libwx_osx_cocoau_gl-3.3.a index 3d9b84b..c7d2982 100644 --- a/lib/libwx_osx_cocoau_gl-3.3.a +++ b/lib/libwx_osx_cocoau_gl-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:424857ae94dbbe69abadbb9a4f4d626ed986dba9bfb28d780b5dadbaeea4f321 -size 8477936 +oid sha256:89a8502b7de34cff842a99ea24128f5a2d7d160bf469ef818d7d68e6c487c24d +size 8388544 diff --git a/lib/libwx_osx_cocoau_html-3.3.a b/lib/libwx_osx_cocoau_html-3.3.a index 5c32f2a..f0c33b2 100644 --- a/lib/libwx_osx_cocoau_html-3.3.a +++ b/lib/libwx_osx_cocoau_html-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21e9e01fc3326b3b43fd09c2691689ca6cec1e47dee6ca9a2cc47cf6dcaddf4a -size 62684536 +oid sha256:984aa199d73305af2ab4d2060cb6a5d8eab37a4056b3f1492894b99bf33290c5 +size 61372568 diff --git a/lib/libwx_osx_cocoau_propgrid-3.3.a b/lib/libwx_osx_cocoau_propgrid-3.3.a index 9033cef..acf40bf 100644 --- a/lib/libwx_osx_cocoau_propgrid-3.3.a +++ b/lib/libwx_osx_cocoau_propgrid-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f40e127e52c4f2be42727f36866d3a82c2d3032d7271585afee63980148617bb -size 53868512 +oid sha256:51d4d6e9506919e9e5c1ef2a0814e0698c25930cce3c5e6456836b32302c4480 +size 52329752 diff --git a/lib/libwx_osx_cocoau_qa-3.3.a b/lib/libwx_osx_cocoau_qa-3.3.a index 48e0ac5..6c60b60 100644 --- a/lib/libwx_osx_cocoau_qa-3.3.a +++ b/lib/libwx_osx_cocoau_qa-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99818e5f55d5f3395857d8e27913e77bd90d778b9ea94a61c2a39f0a6da252d2 -size 8366904 +oid sha256:2a4245deb6d3328c9360d2c4c4805912bfa7e328202b07227a65de517bbc7db2 +size 7864432 diff --git a/lib/libwx_osx_cocoau_richtext-3.3.a b/lib/libwx_osx_cocoau_richtext-3.3.a index 1cb354d..5b2fb9c 100644 --- a/lib/libwx_osx_cocoau_richtext-3.3.a +++ b/lib/libwx_osx_cocoau_richtext-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12282ad8434ef57e9e00e26ea8e397d27927d215e6229cb6623e796d0574003f -size 86465712 +oid sha256:17ba0c44a4dfbd3d9e6c6b0e7f90f0701426931ceaefb07a2c01b90084c2a549 +size 84822560 diff --git a/lib/libwx_osx_cocoau_webview-3.3.a b/lib/libwx_osx_cocoau_webview-3.3.a index 109b445..c1a0f01 100644 --- a/lib/libwx_osx_cocoau_webview-3.3.a +++ b/lib/libwx_osx_cocoau_webview-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bb769e1527a84085d660c260414c4734b845686cf39ef67c798234996e63de3 -size 12785960 +oid sha256:4482928763a5ea3a915dff4717e42d5d39c2e4684505fa560e60f05f7007125b +size 12410848 diff --git a/lib/libwxexpat-3.3.a b/lib/libwxexpat-3.3.a index 111b8e0..edab521 100644 --- a/lib/libwxexpat-3.3.a +++ b/lib/libwxexpat-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f65d731d6ed26d45353daed9fc25f573770b9ec0d6807cbe0ac1bb35aaa7a9fe -size 1640192 +oid sha256:6ef346518e11bbdb7f6266cafe2c20bcf8484e09ea0382f1e3496e5288562b1f +size 1681216 diff --git a/lib/libwxjpeg-3.3.a b/lib/libwxjpeg-3.3.a index 8917db2..fc0bc7a 100644 --- a/lib/libwxjpeg-3.3.a +++ b/lib/libwxjpeg-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d0ed0197cc1cd9655da8459c69cc52fd3b96e666d39256182b8c3ce50805daf -size 4524320 +oid sha256:bbe5f64817db5e49a587382f99efb89091f455010f95d8b4495f833076280b67 +size 4532016 diff --git a/lib/libwxpng-3.3.a b/lib/libwxpng-3.3.a index f506176..f4ac77b 100644 --- a/lib/libwxpng-3.3.a +++ b/lib/libwxpng-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2af2d8c971e782aed16d281c74f9262b4331b7c524fc7cd29f470972f75c3a8e -size 3226952 +oid sha256:fbdb99ebc09ab33437224d800e5f38489ffe3368b17d3db01b5db3b21b5668dd +size 3235736 diff --git a/lib/libwxregexu-3.3.a b/lib/libwxregexu-3.3.a index 81f5450..15e36ab 100644 --- a/lib/libwxregexu-3.3.a +++ b/lib/libwxregexu-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55bca637e04ffc582e464393e72f0575b1e2f53b5ab2c1f1d8597e0850daf20f -size 2531376 +oid sha256:fb1fbd9837e54ee6e9f85e4641fc8ce3ca5d949ac7292502a0e21ea32323c219 +size 2553216 diff --git a/lib/libwxzlib-3.3.a b/lib/libwxzlib-3.3.a index b905ac8..6c6da9d 100644 --- a/lib/libwxzlib-3.3.a +++ b/lib/libwxzlib-3.3.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:678e388b0271dbdee13c067d64b586cd1164040c8c9021eccc1453f2d48cade6 -size 1052224 +oid sha256:8d75ee486b55c051f8a977ed8bf867f2b2fbaa236a29858c2792d6f15e771a31 +size 1060256 diff --git a/lib/libxlsxwriter.a b/lib/libxlsxwriter.a index f0972f4..88f9a53 100644 --- a/lib/libxlsxwriter.a +++ b/lib/libxlsxwriter.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be189dbe6ebd8e0de2498c9ce328349699db167639e885192823ac9153d9a31a -size 5037056 +oid sha256:3b71425e5c7136c47fab12b11281512d291f9045f90f9d8bb68606c7effadf72 +size 5443056 diff --git a/lib/libzstd.a b/lib/libzstd.a index 1ee8bcf..1900e44 100644 --- a/lib/libzstd.a +++ b/lib/libzstd.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eec5849d88d02cbbb5cbe78ec3291172d8390fb8298cb9e8d95d93cc083a6d24 -size 15606136 +oid sha256:4c43b96e09f750dd030dab096c47785d81a982286c61859afe9085507cd7a1f6 +size 15829600 diff --git a/libdbg/libSDL2.a b/libdbg/libSDL2.a index f1cd8dc..68d8391 100644 --- a/libdbg/libSDL2.a +++ b/libdbg/libSDL2.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d215b7e23a02cf17e11bf375cd8cbbf1084b007c5cbc50ac800665c0d652450f -size 12104496 +oid sha256:011f9853e9b7cd72268a338aa01410bb6917dc4a81d46b6a805fb525197d963a +size 12135552 diff --git a/libdbg/libavcodec.a b/libdbg/libavcodec.a index b61fee7..48f6929 100644 --- a/libdbg/libavcodec.a +++ b/libdbg/libavcodec.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abb2d261c185060b43c0df03e300729cf1424d2afb73d60159f75a6641a295c1 -size 128024688 +oid sha256:8dbf29e8d13e5b2fcc04e30e210035b6c143748b35e5b0ad0cead901eb9130a6 +size 127973384 diff --git a/libdbg/libavdevice.a b/libdbg/libavdevice.a index 8b9d13a..c4fb56d 100644 --- a/libdbg/libavdevice.a +++ b/libdbg/libavdevice.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f397c7709ee12d5d454a8882f2d4068a4143db9e9921c0228bf88a0bebf547f -size 1009696 +oid sha256:226936f7c09189f811423c771406aa3bab3f33be20841f687c06f34308706431 +size 1013728 diff --git a/libdbg/libavfilter.a b/libdbg/libavfilter.a index 7ff4b00..c4ae093 100644 --- a/libdbg/libavfilter.a +++ b/libdbg/libavfilter.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0a796829f3ceaec83d5c99a84630269de9dd9a891fd1d100e480d5ce6e59c4d -size 44484632 +oid sha256:a445a851e2c2349debd1d89dd6f04737bc29e866895c0913df4da74e96188e23 +size 44386432 diff --git a/libdbg/libavformat.a b/libdbg/libavformat.a index f5257f4..9e14616 100644 --- a/libdbg/libavformat.a +++ b/libdbg/libavformat.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:753e38747d53553c0db0b590bd9ad194eb3365a13557b91a2b47e8a28606f83f -size 47419472 +oid sha256:becd6ac67205682eb257d110a9cb9ba0600897c8f774d440c1306c7f7c668f97 +size 47402800 diff --git a/libdbg/libavutil.a b/libdbg/libavutil.a index 2e26dd0..188a294 100644 --- a/libdbg/libavutil.a +++ b/libdbg/libavutil.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30c3582abfb46c7bcc43ee9a1c8df217cf3f1be855db32cf756974eddb780c38 -size 4448104 +oid sha256:dbdb28d7b96be04b2912d2891bd593a266bf452a92ad06847c720f8ece8ad7d7 +size 4441920 diff --git a/libdbg/libhidapi.a b/libdbg/libhidapi.a index 84ffca4..578432d 100644 --- a/libdbg/libhidapi.a +++ b/libdbg/libhidapi.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f79fd2a7f1ab0fe0c7762407a90bc0ad9388d10059832e151ac3c9cb09e794c1 -size 121920 +oid sha256:045114b7ac3073ec977ce00be9c38a49b28222231196745dd09c411e6b74391b +size 121912 diff --git a/libdbg/libliquidfun.a b/libdbg/libliquidfun.a index c7077c6..d914f3d 100644 --- a/libdbg/libliquidfun.a +++ b/libdbg/libliquidfun.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18b450c976ffaf4e080a9b77cc23eae4fdef2ab3bc0b13d537e2a382e7ade3aa -size 8053000 +oid sha256:61a4ed3f2f20f7409110b486691bd825be534fe6d184cbabe0b16290c5fa8c89 +size 8069032 diff --git a/libdbg/liblog4cpp.a b/libdbg/liblog4cpp.a index 06b80f2..edb8f1a 100644 --- a/libdbg/liblog4cpp.a +++ b/libdbg/liblog4cpp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcd93c41d77b3aac8788378039f6dcb632d1823aa646980eba0ccc4dfa3b11b7 -size 20484856 +oid sha256:b457ccd38876b9bf25075aa59dcfd8988dd3806aba1f0a2421614580120f8d8e +size 20692896 diff --git a/libdbg/liblua.a b/libdbg/liblua.a index fe49cbe..b8c8d35 100644 --- a/libdbg/liblua.a +++ b/libdbg/liblua.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7fc8f73462cfbc7347bbc2f917086ffb46bc21d4a28439b821efabccef2352b -size 2132592 +oid sha256:4cd229c3d6570963d3eefa0b41b17e4516c00cbc69d2b373966af592d61c8fb2 +size 2138016 diff --git a/libdbg/libpostproc.a b/libdbg/libpostproc.a index cc8f3c8..bf4007b 100644 --- a/libdbg/libpostproc.a +++ b/libdbg/libpostproc.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79c3d7d20a00cbb121b996c28c1fbaced93aea9bd47def068f98bcfe5ca877f4 -size 199552 +oid sha256:d78d8462aa8a817100d76e6c896b249757ff88617b8272e6754e11860e5b18ab +size 198824 diff --git a/libdbg/libsharpyuv.a b/libdbg/libsharpyuv.a index b471dc3..a84c482 100644 --- a/libdbg/libsharpyuv.a +++ b/libdbg/libsharpyuv.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e29b5c1fb815340b2c5974aaecaad35a3bc31ca222b72ced6d0e778a987dc99 -size 118360 +oid sha256:78a33e52fa52aec2f2f2a038fd295d7e895689a8a01b9d14563fa1deeeae3943 +size 118448 diff --git a/libdbg/libswresample.a b/libdbg/libswresample.a index 13ad263..2cd2cfc 100644 --- a/libdbg/libswresample.a +++ b/libdbg/libswresample.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2ccf3dfe09fb4c2622eb2d1ecce168cc775d97d6c5343b32e688be6d239cd1a -size 607584 +oid sha256:fe010e2431b909b110061b3153337a7b044aa982874dbf4f30cd6cdc8a65e4fc +size 606152 diff --git a/libdbg/libswscale.a b/libdbg/libswscale.a index 96822dc..cc80e65 100644 --- a/libdbg/libswscale.a +++ b/libdbg/libswscale.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da97eeec0771b7061953138123547e04e7f8397e4cc2b99d519a9cd3d3119eb9 -size 6772256 +oid sha256:ff165d2ab20b5ce50f8b7e8040ceec519ffc56ef564610eab43fb5d17a2c26b6 +size 6769416 diff --git a/libdbg/libwebp.a b/libdbg/libwebp.a index df9e182..a2f8ab6 100644 --- a/libdbg/libwebp.a +++ b/libdbg/libwebp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddf96f7cc5dd4d09b28067b16b8256604356367dfce65254f143ac364302aa7c -size 3369832 +oid sha256:38597c60892d6f63b1ad4865ed3a5ffd183c2b1a767d5a20b94aa7a99f229ee7 +size 3375968 diff --git a/libdbg/libwebpdemux.a b/libdbg/libwebpdemux.a index fbb0bcc..e28e764 100644 --- a/libdbg/libwebpdemux.a +++ b/libdbg/libwebpdemux.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:725d8171ca2756f58514e01bda26bd619b14f4937ddf5c25d285361f79341a34 -size 125008 +oid sha256:6280890ac2f4c9ea73c9f372b385f0f528b6b1c6b186656df049a45d428c777a +size 125216 diff --git a/libdbg/libwx_baseu-3.3.0.0.0.dylib b/libdbg/libwx_baseu-3.3.0.0.0.dylib index 092fb2c..d5c4a9e 100755 --- a/libdbg/libwx_baseu-3.3.0.0.0.dylib +++ b/libdbg/libwx_baseu-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fc9e115c7a578ffb53347f3e4c064394e8294740495ebf9761e3845421bd1c8 -size 12195576 +oid sha256:7b5c51a99e0bfc6f3ffb5d662b59f838820dc48a001885867d1da95d32ec954a +size 12254136 diff --git a/libdbg/libwx_baseu_net-3.3.0.0.0.dylib b/libdbg/libwx_baseu_net-3.3.0.0.0.dylib index 463e1d9..0cbcff1 100755 --- a/libdbg/libwx_baseu_net-3.3.0.0.0.dylib +++ b/libdbg/libwx_baseu_net-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56a7cfbccf6473baf1a795f292d91a58cc05fff9ca325a0c2ad7f872d9156896 -size 1905944 +oid sha256:8f5ae99f39197104b65c7fdf46dc108378078321a542c85afe94c990192ac719 +size 2014880 diff --git a/libdbg/libwx_baseu_xml-3.3.0.0.0.dylib b/libdbg/libwx_baseu_xml-3.3.0.0.0.dylib index c17bc06..c6e0591 100755 --- a/libdbg/libwx_baseu_xml-3.3.0.0.0.dylib +++ b/libdbg/libwx_baseu_xml-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b3757de54fd698ef61b4b3b0e8478477beaf21029602208a97c071705a6500f -size 968056 +oid sha256:584829141f88c2c0bcce8ac245b0ba6857bd2af5b020b39c508439aa22039dfa +size 970544 diff --git a/libdbg/libwx_osx_cocoau_adv-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_adv-3.3.0.0.0.dylib index 21cd886..34fbeca 100755 --- a/libdbg/libwx_osx_cocoau_adv-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_adv-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bdca743b3a5fd5835a69035eaf738cf02d759b4a922de8f4cda91f1ef672ac9 -size 66256 +oid sha256:1c7f0b8b998425361295389e0f8b6463e7932f3fc8293eeb209b9ca09e6a272f +size 66264 diff --git a/libdbg/libwx_osx_cocoau_aui-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_aui-3.3.0.0.0.dylib index ba28967..288e3ac 100755 --- a/libdbg/libwx_osx_cocoau_aui-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_aui-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1e637963d3b12e26f1feaa69bb39e04d0d02811c070285f3ee91e6ab081c998 -size 2618048 +oid sha256:3dcb6701f15522133700b43cffcbe94791b5c11fa22a0bbebef57e20d3c91f6c +size 2622168 diff --git a/libdbg/libwx_osx_cocoau_core-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_core-3.3.0.0.0.dylib index 60f4ebf..5f81335 100755 --- a/libdbg/libwx_osx_cocoau_core-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_core-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb664ffbf26b6ec382ce306c5f28ca271015e3b96fc09babc189ea35c93cef56 -size 32706656 +oid sha256:81f150a7879e82d5989dec3ec0e7f03ade9717da5195fb6ed22250607941f07d +size 33348072 diff --git a/libdbg/libwx_osx_cocoau_gl-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_gl-3.3.0.0.0.dylib index 7062e23..236271e 100755 --- a/libdbg/libwx_osx_cocoau_gl-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_gl-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c04347fc182f54a063b3900155ede1ee4b5391ee8925ea3c316434e249af3b2 -size 453520 +oid sha256:e434c808ed00537e0e5d0937b79ffd00ecf8850218ed5a8154cb39545797ae66 +size 455696 diff --git a/libdbg/libwx_osx_cocoau_html-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_html-3.3.0.0.0.dylib index 0ecd53d..8716a4b 100755 --- a/libdbg/libwx_osx_cocoau_html-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_html-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44cb337c16bc2f6875149296dbda03e9811e498ff06fab63ff8dde4be442b02d -size 3333744 +oid sha256:36ef906ab619f7273100f149a50d88aed13ffc4a7ff1b3d2c0411b0d0b57c693 +size 3335000 diff --git a/libdbg/libwx_osx_cocoau_propgrid-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_propgrid-3.3.0.0.0.dylib index b4c9880..c68671f 100755 --- a/libdbg/libwx_osx_cocoau_propgrid-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_propgrid-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75110014725b6a60d1565ebf886584b73d8ec5c4a5bcc859b20cd8a5287b9b43 -size 5389536 +oid sha256:55c29e3d84937ed30c4f910d1d3943846f9d2157fa480da7ed2eaa971ede486d +size 5398696 diff --git a/libdbg/libwx_osx_cocoau_qa-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_qa-3.3.0.0.0.dylib index 42ba8cf..503b76b 100755 --- a/libdbg/libwx_osx_cocoau_qa-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_qa-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99250d1baf58b01dfccfb4dfbec4d8c8cdbc336dc209219017f74b3199257e3c -size 940096 +oid sha256:66da2ee3603b4ef29004c771b3fd4c6f91ff97577f5a1851e431709974cefa40 +size 959712 diff --git a/libdbg/libwx_osx_cocoau_richtext-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_richtext-3.3.0.0.0.dylib index fd0cdb0..3849668 100755 --- a/libdbg/libwx_osx_cocoau_richtext-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_richtext-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24c8ce3c477b101218a011bc020a6265ea24191bb617ee99693b3e8b42a4a372 -size 6675488 +oid sha256:0d514b3fb70e5317a30aadaa31783cbe546088da9769293847544f6aa58f9781 +size 6681880 diff --git a/libdbg/libwx_osx_cocoau_webview-3.3.0.0.0.dylib b/libdbg/libwx_osx_cocoau_webview-3.3.0.0.0.dylib index 9836068..a1a351d 100755 --- a/libdbg/libwx_osx_cocoau_webview-3.3.0.0.0.dylib +++ b/libdbg/libwx_osx_cocoau_webview-3.3.0.0.0.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7558da9a692b8a120c9ace93422535bb17b4529fc94718e452b717e17e592aa7 -size 1239840 +oid sha256:1241bff7d9f4cad284f47337158070f68121b59677b696a4acf0be583874cd34 +size 1262792 diff --git a/libdbg/libxlsxwriter.a b/libdbg/libxlsxwriter.a index dc83ddc..7894d3d 100644 --- a/libdbg/libxlsxwriter.a +++ b/libdbg/libxlsxwriter.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12e631534af64d5daae2e72c83281ae01a518aef33c6e750e32c9aabf614fbb0 -size 2922920 +oid sha256:8e293e6b4deabbd8ff83a17e418882a99d7bb5e2b1c203a27a6401638778bd4c +size 3111960 diff --git a/libdbg/libzstd.a b/libdbg/libzstd.a index 43c16a4..3b79ea0 100644 --- a/libdbg/libzstd.a +++ b/libdbg/libzstd.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15a5c156a349fa77ecf2c71519cf5e2fb33ddb428cab314aaba3e00f746b5d3f -size 8985384 +oid sha256:0430da399f867684888de59c812c6f165dc890f300ad5e2c41204a9866a6ac45 +size 9051896 diff --git a/share/bakefile/presets/wx_win32.bkl b/share/bakefile/presets/wx_win32.bkl index 842de4e..ef85e18 100644 --- a/share/bakefile/presets/wx_win32.bkl +++ b/share/bakefile/presets/wx_win32.bkl @@ -275,6 +275,8 @@ kernel32 user32 gdi32 + gdiplus + msimg32 comdlg32 winspool winmm