From a65f4c61338e6b076d9491a69726b379a889db1f Mon Sep 17 00:00:00 2001 From: Ricci Adams Date: Wed, 22 Jul 2026 09:32:10 -0700 Subject: [PATCH] Use aligned toolbar icons and updated app icon. --- lib/matplotlib/backends/_backend_gtk.py | 7 +- lib/matplotlib/backends/_backend_tk.py | 4 +- lib/matplotlib/backends/backend_qt.py | 18 +- lib/matplotlib/backends/backend_wx.py | 2 +- lib/matplotlib/mpl-data/images/back.pdf | Bin 1623 -> 986 bytes lib/matplotlib/mpl-data/images/back.png | Bin 380 -> 263 bytes lib/matplotlib/mpl-data/images/back.svg | 51 +- lib/matplotlib/mpl-data/images/back_large.png | Bin 620 -> 310 bytes lib/matplotlib/mpl-data/images/filesave.pdf | Bin 1734 -> 1126 bytes lib/matplotlib/mpl-data/images/filesave.png | Bin 458 -> 293 bytes lib/matplotlib/mpl-data/images/filesave.svg | 72 +- .../mpl-data/images/filesave_large.png | Bin 720 -> 393 bytes lib/matplotlib/mpl-data/images/forward.pdf | Bin 1630 -> 974 bytes lib/matplotlib/mpl-data/images/forward.png | Bin 357 -> 260 bytes lib/matplotlib/mpl-data/images/forward.svg | 51 +- .../mpl-data/images/forward_large.png | Bin 593 -> 299 bytes lib/matplotlib/mpl-data/images/help.pdf | Bin 1813 -> 1140 bytes lib/matplotlib/mpl-data/images/help.png | Bin 472 -> 289 bytes lib/matplotlib/mpl-data/images/help.svg | 57 +- lib/matplotlib/mpl-data/images/help_large.png | Bin 747 -> 489 bytes lib/matplotlib/mpl-data/images/home.pdf | Bin 1737 -> 1114 bytes lib/matplotlib/mpl-data/images/home.png | Bin 468 -> 343 bytes lib/matplotlib/mpl-data/images/home.svg | 64 +- lib/matplotlib/mpl-data/images/home_large.png | Bin 790 -> 605 bytes lib/matplotlib/mpl-data/images/matplotlib.pdf | Bin 22852 -> 3568 bytes lib/matplotlib/mpl-data/images/matplotlib.png | Bin 1283 -> 23683 bytes lib/matplotlib/mpl-data/images/matplotlib.svg | 3201 +---------------- .../mpl-data/images/matplotlib_large.png | Bin 3088 -> 0 bytes .../mpl-data/images/matplotlib_small.pdf | Bin 0 -> 14791 bytes .../mpl-data/images/matplotlib_small.png | Bin 0 -> 1191 bytes .../mpl-data/images/matplotlib_small.svg | 34 + lib/matplotlib/mpl-data/images/move.pdf | Bin 1867 -> 1086 bytes lib/matplotlib/mpl-data/images/move.png | Bin 481 -> 358 bytes lib/matplotlib/mpl-data/images/move.svg | 80 +- lib/matplotlib/mpl-data/images/move_large.png | Bin 767 -> 557 bytes .../mpl-data/images/qt4_editor_options.pdf | Bin 1568 -> 1040 bytes .../mpl-data/images/qt4_editor_options.png | Bin 380 -> 224 bytes .../mpl-data/images/qt4_editor_options.svg | 53 +- .../images/qt4_editor_options_large.png | Bin 619 -> 356 bytes lib/matplotlib/mpl-data/images/subplots.pdf | Bin 1714 -> 1122 bytes lib/matplotlib/mpl-data/images/subplots.png | Bin 445 -> 254 bytes lib/matplotlib/mpl-data/images/subplots.svg | 88 +- .../mpl-data/images/subplots_large.png | Bin 662 -> 292 bytes .../mpl-data/images/zoom_to_rect.pdf | Bin 1609 -> 994 bytes .../mpl-data/images/zoom_to_rect.png | Bin 530 -> 368 bytes .../mpl-data/images/zoom_to_rect.svg | 44 +- .../mpl-data/images/zoom_to_rect_large.png | Bin 1016 -> 686 bytes tools/make_icons.py | 339 +- 48 files changed, 372 insertions(+), 3793 deletions(-) delete mode 100644 lib/matplotlib/mpl-data/images/matplotlib_large.png create mode 100644 lib/matplotlib/mpl-data/images/matplotlib_small.pdf create mode 100644 lib/matplotlib/mpl-data/images/matplotlib_small.png create mode 100644 lib/matplotlib/mpl-data/images/matplotlib_small.svg diff --git a/lib/matplotlib/backends/_backend_gtk.py b/lib/matplotlib/backends/_backend_gtk.py index 0491db40e565..39c490a97f27 100644 --- a/lib/matplotlib/backends/_backend_gtk.py +++ b/lib/matplotlib/backends/_backend_gtk.py @@ -16,7 +16,7 @@ import gi # The GTK3/GTK4 backends will have already called `gi.require_version` to set # the desired GTK. -from gi.repository import Gdk, Gio, GLib, Gtk +from gi.repository import Gdk, Gio, GLib, Gtk, GdkPixbuf try: @@ -144,8 +144,11 @@ def __init__(self, canvas, num): if gtk_ver == 3: icon_ext = "png" if sys.platform == "win32" else "svg" - self.window.set_icon_from_file( + small_icon = GdkPixbuf.Pixbuf.new_from_file( + str(cbook._get_data_path(f"images/matplotlib_small.{icon_ext}"))) + large_icon = GdkPixbuf.Pixbuf.new_from_file( str(cbook._get_data_path(f"images/matplotlib.{icon_ext}"))) + self.window.set_icon_list([small_icon, large_icon]) self.vbox = Gtk.Box() self.vbox.set_property("orientation", Gtk.Orientation.VERTICAL) diff --git a/lib/matplotlib/backends/_backend_tk.py b/lib/matplotlib/backends/_backend_tk.py index a18a9bd8660f..08d929c3fd1a 100644 --- a/lib/matplotlib/backends/_backend_tk.py +++ b/lib/matplotlib/backends/_backend_tk.py @@ -552,11 +552,11 @@ def create_with_canvas(cls, canvas_class, figure, num): # supported Tk version is increased to 8.6, as Tk 8.6+ natively # supports PNG images. icon_fname = str(cbook._get_data_path( - 'images/matplotlib.png')) + 'images/matplotlib_small.png')) icon_img = ImageTk.PhotoImage(file=icon_fname, master=window) icon_fname_large = str(cbook._get_data_path( - 'images/matplotlib_large.png')) + 'images/matplotlib.png')) icon_img_large = ImageTk.PhotoImage( file=icon_fname_large, master=window) diff --git a/lib/matplotlib/backends/backend_qt.py b/lib/matplotlib/backends/backend_qt.py index 39450ee32065..7ae0f7d5120c 100644 --- a/lib/matplotlib/backends/backend_qt.py +++ b/lib/matplotlib/backends/backend_qt.py @@ -87,6 +87,13 @@ } +def _create_WindowIcon(): + icon = QtGui.QIcon() + icon.addFile(str(cbook._get_data_path('images/matplotlib_small.svg'))) + icon.addFile(str(cbook._get_data_path('images/matplotlib.svg'))) + return icon + + # lru_cache keeps a reference to the QApplication instance, keeping it from # being GC'd. @functools.lru_cache(1) @@ -136,9 +143,7 @@ def _create_qApp(): pass app = QtWidgets.QApplication(["matplotlib"]) if sys.platform == "darwin": - image = str(cbook._get_data_path('images/matplotlib.svg')) - icon = QtGui.QIcon(image) - app.setWindowIcon(icon) + app.setWindowIcon(_create_WindowIcon()) app.setQuitOnLastWindowClosed(True) cbook._setup_new_guiapp() if qt_version == 5: @@ -590,9 +595,7 @@ def __init__(self, canvas, num): self.window.closing.connect(self._widgetclosed) if sys.platform != "darwin": - image = str(cbook._get_data_path('images/matplotlib.svg')) - icon = QtGui.QIcon(image) - self.window.setWindowIcon(icon) + self.window.setWindowIcon(_create_WindowIcon()) self.window._destroying = False @@ -983,8 +986,7 @@ def set_history_buttons(self): class SubplotToolQt(QtWidgets.QDialog): def __init__(self, targetfig, parent): super().__init__(parent) - self.setWindowIcon(QtGui.QIcon( - str(cbook._get_data_path("images/matplotlib.png")))) + self.setWindowIcon(_create_WindowIcon()) self.setObjectName("SubplotTool") self._spinboxes = {} main_layout = QtWidgets.QHBoxLayout() diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 930a944b5274..42183b8dd316 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -1043,7 +1043,7 @@ def _load_bitmap(filename): def _set_frame_icon(frame): bundle = wx.IconBundle() - for image in ('matplotlib.png', 'matplotlib_large.png'): + for image in ('matplotlib_small.png', 'matplotlib.png'): icon = wx.Icon(_load_bitmap(image)) if not icon.IsOk(): return diff --git a/lib/matplotlib/mpl-data/images/back.pdf b/lib/matplotlib/mpl-data/images/back.pdf index 79709d8f435ef2031ee4129b2180e725dd1a8d21..4bb01898022f011da416e8afef39fa642d6c883b 100644 GIT binary patch literal 986 zcmY!laBZ^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%A1 zL8ipD_lfX+?sDzl_^3}+BC$#N zn$GOBO-y-jJ~HUPdc_c=@k~{7*5yqGhI@NEcR$;h^gi|Cy(gu!7{A+JuHDCC{CdKM z)Y;PlSh&i9{L^$+HYeoPcDMO#xny;$ZkyZ+NhA4)I>~~)RyXb}Z_PVmyNAFAO%ojOEdse&W;L(3i`>3K+?_*fQmN`jeWJP{QJQ!+?RoL7e#j aX1ErYBo>ua6s4wd0bRqTs_N?R#svUj$8UoG literal 1623 zcmZuyZA@EL7+!|kvbzZrI}A?Z*)jq+={@)M>lPUaZCAp^vaV$gotoUXr|rdZZ@E2X z#SaYoF`07-gF$pLBH5DRBr*|DKsN=Zn{gUr9FxsC{bP*qL#LZsF`m;8%BVL@ZqJkV z>pbuKytmL{vzKyOJyY0!4ZJnRZ~y|uUC)%41J)t>Q5f(9aRRosIfMXf6|opp{Gg(O zL9&+`3X2@JMRAo2ix>fY!pW}480ZrJ9U{g^m4SgC8P=gH9v8x3AIW30llUl#0bAWb za$1saYw}$Uo&>BbAbKU)4~z--x?S#im5Ayg1X6|;2&9}YVviP+s@5(A2|<9h2ML2Vhj+3X~#EB z1#j$bzaki%7w66%t@rP}tF2(;iK%Or`%Jz0e~nKZdfPGF68>!8n{_$sI~oI)M=d*+ zm)10DUiy3J_vKlQvt5sE^3^%|0_XT!eR}IBEwW~^b<;!V%j$YY^FD3uZyJL`-xW+% z=UmVnjC7sc?k_HDxHmVu`|d-V%`dlgS&Ku{9~QdxjYp1ac3XZtyA?19TWix2i+>7DD}EY+Jg z%uJ{cR9{>-z4iN|{S%jexZeK!zbkGIoameHSr@%$y!6laDqf4N>im4ONJWRf&+vCTVv_UaF_K%A9oQ6Kf%{Dbly&?r%Qy2#gWC7fXLBUAaT#5-~2Q0zNLWUg&VTK(Cd9ovx_(CJ;?Gj8U zkU3j|@tN_UpwG<9(SD|Uu_{VIq{hDh)v`|k@n(_*=2R3q1My|%lAb|?FiK(=iz<#& P$ngUCjudX&WoP~a6%7Oo diff --git a/lib/matplotlib/mpl-data/images/back.png b/lib/matplotlib/mpl-data/images/back.png index e3c4b5815487bc1e5fef303915d494e3aaf015d4..8536649d16ca1cd03863d3084f74de9187b98322 100644 GIT binary patch delta 246 zcmVY9K0M1E7K~#90t&>d-f-n$;zj6?$oWyf_0k-ai z;5k$TE?|stYsTPD)6#+^@y(`9=S^SVOqH+<3I8A{ttwS19b||XXxi7JB@3L&RQeF5 zPe{gMs0mB?VzRo>p=TwLa<;ZTxt}g9Oc&IsZrU7KUw|xFzlbeJCYmXt+%u;<0!%o@L)qNndGW8~^|S07*qoM6N<$g1G=}xBvhE delta 364 zcmV-y0h9iR0{jAy8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i00ACJL_t(YiM5omN&`Uu8?-S$!OkrbVcZRVDkz>u?&SjHzPXv%k(segYkzGu`Z@qfr;?7{0yA?v za0SeP5*WBN4T4_-R`EG-meRROBxwZP1=lU0mt7)Y6lA{i8E}$SqD1g+Ru6z8H+U4V zso-XY!j~+m0B$2K`v5)@ZT$v@W;XrTWZ*KAc~gImjcJj{&TEIuLkM`;5TN`!1tn?& zWAe&V0_V{wN@YOafg_+(tx z&Flxb0G?KS{z~cHJ7vY6+{0qkG}=XVCaDedS)0 - - - - - - - - - - - - - - + + + + + + diff --git a/lib/matplotlib/mpl-data/images/back_large.png b/lib/matplotlib/mpl-data/images/back_large.png index e44a70a9cd230e86135e1f27492fc649bc464f00..280ad57a41396136029f085db17a64304830c189 100644 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s_5nU2uK)l42QtY9M_KR50X2)1 z1o;Isuz7fTd6(BWw0CqaU$Ju4lc&#~H$$N9S!zcH+U%#QQJjq~x_KNcv zxhY#$du-F|iR=Bn<-EhpU7!B8EsE57T5`w#D7Q?XnMC)m>t{e-_jL7hS?83{1OOwA BY|H=v delta 606 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 bpTHTy=#Ydn7Y+#k00000NkvXXu0mjfkiUT` delta 443 zcmV;s0Yv_#0?GrB8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i00C@CL_t(YiPe_9N&`U@g})nuu@MBpGL;t52M88|2JLLbLQt!8sZv;K zYvViE*$9G);tSXbRzb84TBH&bm4H9TBD1)zv)N>E10ERWa)0;EIdkv)tw|zF!hc;23yt_NHg1wNUK3^DO`+par}Fm2MfNf}|T@9(V%IqM7{3F7k*>r4g_gJ1nvY z6o7i*&qo6tK7TyEEi+qlcF`9nsbOaKz(kV35wHr3Mf~HgZv&^mrDv=NW#|=<)C6W? z#QQ?#SH-sew%bJny>8!ycYheFtZZ< ly~#ej0k@Jqfu90d;0puXx>Geun$`dS002ovPDHLkV1ntBzu^D? diff --git a/lib/matplotlib/mpl-data/images/filesave.svg b/lib/matplotlib/mpl-data/images/filesave.svg index 856721b6b5e2..613efd973508 100644 --- a/lib/matplotlib/mpl-data/images/filesave.svg +++ b/lib/matplotlib/mpl-data/images/filesave.svg @@ -1,68 +1,6 @@ - - - - - - - - - - - - - - - + + + + + diff --git a/lib/matplotlib/mpl-data/images/filesave_large.png b/lib/matplotlib/mpl-data/images/filesave_large.png index a39b55a6166ba51063ad780cb1f4ea09d08dc1a4..3fc796d6f39ea2c5a08fd9cc8d22df2761995de5 100644 GIT binary patch delta 377 zcmV-<0fzq21&ITY8Gi%-008|9F$@3z0Z>UqK~#90?UzkX!!QtqpVK0)fy4q9v|>?C zQSQ@iuK}xGfE|bOuM{u25>4bANroq z-)L<>LarMK-x#CbsMIU?rs=zPPOiNflEz6i!v>8-sMhzWaoOMQOUFty%tVAliL5Gs zKlaim?U-I+>vA}zx;J>kj60@0U>j7Nl&_=vAYfEj#zwyn#^6kZHl6q?%I1|m@LG}R zA4oJdq60?X-PoE4{>s%d5Bw9nB89yekumHhcpm%_Lh8@J6E4_cm&2;e^-%y`%P!F; X7!U%BrEs0-00000NkvXXu0mjf`p>FD delta 707 zcmV;!0zCbR1JDJK8Gi-<00374`G)`i00eVFNmK|32nc)#WQYI&010qNS#tmY2VnpJ z2Vnt~!??Bp00MGJL_t(&f$f^VYZXBd$3K&3UP7WqK`XJa($t2ie}HM!B9)yYSlEcz zXkjH*g8zW2?d&udUnv$65DR~RT3QH^ry}Zu_+u>YB>UFAyMNug_p*0zUs%|ko7tJ~ z%`&^(o~SBK##rnCs-h(j8;vKh%_S6(Y2Xa7XN10g0q=noRqdCaMO6nHFbzBgbcfwNl}yxE=tv!MiBOK7*z{{g%-#`A#WWi-Vr;JYQ80p^VHIbUTxRpFJhPtlDSngBovBWUzcBQ!0{ehf%YKc3OpKxmea(1LYClue zb>K9xVu*5=s0{(gC9x_ZQ!blY5r9k*3&3@k ze(ear0Ew<4z91qKw(ckhfZwTTFR*CqIe!mx6>(HVZUf&e`A*jgTPKu2ADArA*$!OsoXZCrMt|IX7`lY+2I^;_2Rs_aM4=hD1bhUJm$3bZ z&%jMpeN)nY06{^d=b0PBa6By3vW$kHB@i1ef!GMDLLxFw@&%zv8O_2^;0bU|RsZ-J zg$8j4IDa2#6M|#F4&b7%LFf`%3e+!yARnO_Fwa5Dz}rCkEF5MtvqfjE0aRJX_f)l8 ztX2#WIZ4T-+4w5d5{QkKKy0)GVx#c{TpO8r^F1dbuZ?lX=r4Z^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%8m zM+tz?0Pnn`1{`;axvow1;{7MT*nNf0*W5p1x$pHwrDdLK3e8kJW6)yw;`6zvq=O$@ z#hfe2M zOUY!M?(v=Cva&n)4hZ6h@jLocwz(wGxoFyNs|GI zMY+WgEAn$nbMuNpDKwxcH6=5-B)>?(&^a}0P+@em;e9( literal 1630 zcmZuye@t6d6vj-qtn7zQ)R+ytpbQG7@7|WSwBk%@X~WpE+M+ZeWISGPOSksD=JoPp zgv4bKg*Xz1b7H2$jIp3Ym`*_^;^xF`(=BE*veh|F%rY`#79;VGq3FH+0Uhp$jf80U< zR}rL~W%0Kq{;mMEfO9qQ9>3@V`dGSqNBu4=5MYRIzH}S}DUi5;SrjD_rW7>aLXUz) zx-!N#u**_o2(W8fT!6FUCcl84c1lfGRWdJzL%fVdVNc@bv3N?vZO0xzUnaHCeHocS z!+w;(!4gP9FDDL5jj})mWC|?`$TUq-j~ym)TAM#W1p=HcKozuNLGn<+w_(vo8USK- zak9iPkue`sv_xuMW^qOKn#uXcCeNJRyLMB}ix)rN=^peC1i3dNcW3%e_H6As)Bc?P zoN8j@+egmVe(_GT;h%p^vah*y;_tS=n=^l&`f=)P;lgU;>__9}FMqagY;r}L(lWcI z`U6pQdu&zD-nXtzcYM3SU9s{@xBG#$mWDhuFnZ|ejsqrV*gI~{$k-{25#<#A{oM?C zwDbI6=I;K3Lmz+D@qNU4?8p`2R*vdA=a|dCuytkSP@ikm6bU~3U}aGdj<}C@e`={4 z&i$l7?VfHeJap}{QTXenQ+4~gR8spx_?fGG_I{J!;{CPr=Ih%ZO}}@!cdqQc?y~m} zkMrw?!0ktr>4#tWupr{zoD;d)v~e2*(_`23j$ec|)xx?b+Z*7s>phvFy7`>!uBpnr z{wFqn-ShZh{++JUPWzp#=d(OVkM)jRIbh$=`rSxD^Gw^6`nY%CkA?l4BBspVlRr%M z&1U^}Yh8c$!E>*z`etr;?1kD_PprQ1^Cj)2r>a!SpMIH`*WakUcQ-wfb~9}utvdU3 zFSA0tEOApr%f;%dHR=;aVK#`DdZ}HRPZISvqgXqdDHgZelA$<(r!Z?jvnCOS{yz-S zu%s4aeoNtHE=mEJmr_7x|HKI`QX_3}N?YmoFk3~<=48Den+~yov2;6hUo!1m;+I4# zn-BR`lLjI^)I)?cS{*bL!Qwm!^OOqC!r~+ud2uLnr2Q)^^FqYg=7f{a?N z+Jl>5p|9Rx(D53*3N#QBGI88eidvF=bTc|-JdFZ%Rq}2jj~CSQ!fskDWs*=WGWIGU zKw1S{e1Kl3)9Qd1EMkaC#~vUiFa&i}x%)9#VxXm6ju~k!mSIL?N*sbHB@RJt3NM8E zlsKp@p?$WDLj&muT85SAQh5`^Q3;X8h!nZGY9K0Lw{4K~#90tyEhMf-n%A#ZMDMJb*ODi*N&f zxqz2M^dLT3y~q+lp|x9D5@vt8ZHIkLA;vspSb{)`F4T|`8SEJf=x(8*gj4pnnqetW zvdM%Mu3ln71O;Qc+KnO*7}()qxi9P^geeO3gQEkESUI`oIBa1%cyE;av}(XT5Nb5j z*D{@%Yv*`d{~P+jH^MFYeT~8`y22VZHmHyXi{|9EVu8Wor`A+yU{tH1*UTxj$M|Xu tN;ckUFs0N7)Cs&sEnOexkdE1ZjTU8nOGm4H^Z5V(002ovPDHLkV1iKqY~%m{ delta 341 zcmV-b0jmCl0_6gb8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i009R{L_t(YiM5nJP6AO7hrbd0(|{eZFhJuaEV+Rp@eI~%Wo-2Tp1=_9 zAao=gM6X~=D8>R-9-Do>nU~#3e#Lvq{JzJzw(P7!bp z^#9QS*jUZIdroi#tUTtPP0lj6zC{ - - - - - - - - - - - - - - + + + + + + diff --git a/lib/matplotlib/mpl-data/images/forward_large.png b/lib/matplotlib/mpl-data/images/forward_large.png index de65815bba205d862508648dc1fe0d0ed2b058a3..227186ce9d1c9544cbd3dc31f26eef7a92be41e3 100644 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sW&u7SuK)l42Qoiee!IlRLA&AZZa&#ix6rxmt)yoZZnb`~eV1KGPyZ8HM=FXiFRi({Y z$PF-S9t3iy^#UF1KNOJ_U<+6RKC9|i>u3BIRW)nC3*aZ9WxE5mEuS&=Ok?;zBk;p^ z5A4jf0Pw5=-d(~<;L8MfR|yOFZUnrWgw+gO=aR4zc+)_@RKjj5VK0Y-nLsJ=HnoJQ zKq;}GQo>xIlz%u#CE+4aN*tz;a1$scj=UvY1xkr`o)W?1w1_MMuYgV9QK+V2eglsq zYXvwJ5mfa|ON;1jUi;5P%Hud3f`E1l0l>%a{TBkz8gO9AgDkP6;KASJxHKx%kX zfgJE=0>IN8@RkDSIp9?%e8^%WB3WXXERNHEfnSlertn}Opv4rvk0>>V z9|Bms13VqzBMH{L%S&7%;RbIiFe0%_aTNasoB*p{@Fu%Z?zH7nUzyem`~wIxw1xd& RZ^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%5f zMhSq>An!a?LykMYMdIA0l6ra{N?1C5S#nY*PHgg>c(2C0`khgmR+`P%YREqPy}hvG z+U@F}@lpSNRjfY0e(kOt7+WafhrE|R2lr@ItADcyE+O_-PJF?Y;o}9`}VHrzu%*;++W_5@a{=c z!-n1+juGlF!;Yt&NS+Xx&E3YxVdDXb4U*i^^_jQ*;g4$PZ?=raH@UJ6B>Uzm(msjmSq@*k(!nUaF zXm0Cbxs<>WdR*WZx5O7o^$ii(=EzuXH~ej$XP2C-rGMhYnLChc7*Y{C9}iU zZTQS#J$-YGVS2Oi-K|F=+E3Ivg!N@d=%{X9dX^piVv-tnn~nd? zJ@21PhqP8-!i-vTq^NbRC~*%i0VZt)P&P<308`G63Wf^$$%#PH&JKb=rht-#1(IG! zrilnjO@n6{V{;ri29k3E5{q(+Ay(w)l;-9YgYr>8QEEzNa!G!Xf}s(}GW~FcXrRqT zKpd-}@0pjD4^(BK5Tu|Vl%HRsUgw;t1pq+!$7=up literal 1813 zcmah~3rtg27|x;&*NlgQIp+fpOyr?(AARsrCbX0x7+6799kAWo9%@~CZ+Ckk1!Wly zK^)V_f=*u9WH=GnA_7s7IY!X94HAtEG0rGNCr)t!2`YP?(^5e&*-ew%^W}e>^PT_u zu3xfB9ZZGDBz_IoK>cY61xUcN+azn&03w+&Kr5gTq5(u|js*fj$%u@JH-M-p3FP!R zFl<^vtWAtd5g8EznIlQfb0UyB{wFh{2n7zv@lrx03%o7`ir`(;N2Nyfp-lutyczY3 znS3iJ-|-+F5Gh+3y^%8jg(F>?#BPH+5ro={Pi==H5#T&PG{^Cx6}3S5O0*Top;fq} zK%Bs5SpYt!G6fJSm~GTSO&n^CR;dERSuKnJIbDwP0p}M$PD2;!p zLo!YfoqTDamCq7%h(OHHQvxxk)7ZnCaqd=aG$Dcjp*A4~RZz$45#foDGl*LOh3`d! z6Rn~E8MDN8)%CgxUO>DhN;u1|M$FuSoZ|JW~?D{OgttH!Qp6kHDK z?F);FYRzdo@{RkM_V4+ewt)%5L{nbZWAotsob6A>Mkap0b!&9={QZ$?`q6in=bi6% z-@$$S;a_hJxe^z4483}>@9)}@gFk43*0X69+_iv%hua4_Jmpqx!Il?GKa0G%JT9^Q zrHW;DO1;LnMgG?22kD`6x$D5M-W}s!{>{y4m!g-rwoGh~{8`s|D4hVarb;0=V#`T@$sb{M{UDz_`tE-9S z_vh9o_wG+mJEEx6?+iaTP-;>E?Ezai968gqtStLMRbl74m7CXkWcLf&hyq#Pk*bra zNx9ZzwYDv>r{u#sTNdBW@AuVJ&c7~=NvqmFy0FsdD@06Epbs6pYH4M)&}&EMq<+{`Gq@`H66X4b?Tqyk*@ut!TXkWtQp=I-UQt? zyNtS3Y^ZZ@e!K3tTTPGe#k}emms^KkDK$SH{L$ihx4m^!&xr@ajW<5=(O&td-(>-t z8BP?Cg{i(LTNbVG9?$nIVN1IAvdb6$F_dvndHmA77jjPpd6)PsZg1FiQkqfoX5MCx z1Gg>pkLDM>qj{LXE`O5d(NXf}h}WENm!)6+Vv#xHVdqCw@2TQ{`@`Ss8e3a?_95$1 zk2N|uFOzDu&k-Itxh&kNV64x{8JyA)7O-Dq4Zg&9<7Nx_s98NZMI_jBZBq-6y zb1H0H0jda^q(aFsil$^TQYH^3W&R}TA1EP|IF1)UfSD03CSEidSwM%7A#{j^w~8_a zEe+AbY;u)B$4VK-NslLz*zM)s@Wc|0L@ dD^4-yLPQuQ(JC^6Xr~Yz34I0qVw2R8{{W}EW2OKA diff --git a/lib/matplotlib/mpl-data/images/help.png b/lib/matplotlib/mpl-data/images/help.png index a52fbbe819e2fcbb1c1d5f8f143fc8d069688b3a..55c27e48361a35f1725f09f1459940f9911dac9a 100644 GIT binary patch delta 273 zcmV+s0q*|T1EB(t8Gi%-002sU^>Y9K0O(0XK~#90WBkuR8en3ey9P!9#uCOejBgmf zGM;42W@N|E@gD^;=rcS-5jf8vi>3mFBggO_&4m99*BQ8QYuJOK90Y5TIjDa40;MN1 zXfxO_oPhEoaQcCPnW3BEKf`P&&lD>B9jBAP0u~G`P*yHf=zlq04NzfzhA9kxpqyC* zH83bM+=X+VGDr~6z`)LM8O}M$pok|Pph7`#W+wwPhAb8hbx_7?Y|drElD^(U=|k8O zA0rj=1EUY)561tDKN!7<)WBfE07}&C45q|tU?9;+45t}>GB7awWH^OQ12sHNWeot& X$M6odEB;yl015yANkvXXu0mjf`Q&jp delta 457 zcmZ3;bc1<} zJvqrZF*VU3B}qpiqokz3N?#wUvmU5bFTW^Vf8Ek~iy0UgWjtLRLp(a)PTA?q=T zp101aDfEbw=jvLHUy@vp>N{>M*(9*VOTjm*-a+91A+4W{4N1a+y3=gBYq=9|q!?v0 zam7_^$e&hy-XOm`B`qgtYwxoE%>VctE=^og?J4XzbBVd9v*+6tH_wPo%THjqQ9tPw zQ`8JW#xKebU1L?58=5CAF#N!4W$J(a%d` zM87V0KkKGO+NAe-TAsfTEZlDV;NqEOhWD>IdA;1}*I-<4_MrLC@@VM=u68e+tXI#d xJ6`(slv3@=ptczHS@)z2j5eR&%DC#4^xoXBLTme!Zv!KO!PC{xWt~$(698FPw`~9b diff --git a/lib/matplotlib/mpl-data/images/help.svg b/lib/matplotlib/mpl-data/images/help.svg index 260528d607aa..e6161d1cb197 100644 --- a/lib/matplotlib/mpl-data/images/help.svg +++ b/lib/matplotlib/mpl-data/images/help.svg @@ -1,52 +1,7 @@ - - - - - - - - - - - - - - - + + + + + + diff --git a/lib/matplotlib/mpl-data/images/help_large.png b/lib/matplotlib/mpl-data/images/help_large.png index 3f3d4dfed7e99421bd024c14046bf4616b4ca2ff..92c7258339d7f7fd3575598df2b3ab927e99bf65 100644 GIT binary patch delta 474 zcmV<00VV$H1?dBj8Gi%-008|9F$@3z0kBC#K~#90?Up+%L_rjWzgdsQD+-lDwA)%L z5~W8XqM%YKG(;j+O-Zv6g<|Qn5``!vB9?|i6e@+tK13xF5td{}Y(#cv@7;Uu*p1iD zROkQCfBt*to^vxwQ{ELQbA2iX-+x5avNYAn2weneB)|=q?0>MWQzEJM-1Kqg0H;}_ zRiO5u>)0ql-!c3p0~$H@&}Rr+8&Jcc=Lx)9OxhZ(2+F_jG(igkddLV3G%*{4Q*n8X zCgeuA4_Z?J5@Uj1#)$G#z>WK!1KK#x2{TORa2?zm=_kIAC_4jNpTUB`%^JzK76uv= zi`h@TOTb`8jepcsv@M1-oMI$`;Co*dv5L!L^Z!KwqePJ=)x zG`KQ=3{yg-FzwX#{06`O`mP35Qt6MK zPy;?3gl(G03**uz)jy|;tk?fBNajU}(s$87P9MeTFL@XJfp1{FDh7D1H$eCrA~y1b QEdT%j07*qoM6N<$f}k?fr~m)} delta 734 zcmV<40wMkB1M3Bl8Gi-<00374`G)`i00eVFNmK|32nc)#WQYI&010qNS#tmY2VnpJ z2Vnt~!??Bp002^SMObuGZ)S9NVRB^vZDDk9Y;SaIX<{IDWpZvr5A08b0Zs!00nRzp_Ymyjb z48;~u6|I5TXnzgFMr$B8S_84s8i>+pSV^BV zFbrGV!BCsc?-BI9Emo`~EXru;GL1%z(TLe4?hI+J_3m8}_qoLAOLedg&40xSB zS_Kv)b$T@W66n^-XsCRZko3{ajspw8Q%M_vCbNP3kFo+936haLPk1M~)L0Fa5I;+@ z8->Jg0)Gd$jRBHv@qPi}S==ejQKR_%Bt>0R{4-#5TNnU#1FuSmzem%TxqyKS1%i90Si)551a#zyXegBplpZ5%y*)+)^)(syd9rog@ zqliO&x^fQux6#%>Y_tY)@GFr2=}A`0L1tzr>3$Bpl=R+>YtT>PwgzJ3A5n<4U?kvM QJOBUy07*qoM6N<$f*6uF8UO$Q diff --git a/lib/matplotlib/mpl-data/images/home.pdf b/lib/matplotlib/mpl-data/images/home.pdf index f9c6439b9b84bfdf40a2570d6971951b94977841..47d22ab7d6699586db3c4f67bb19f55065ad1d94 100644 GIT binary patch literal 1114 zcmY!laBZ^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%Kr zLk)mQzIm?=cv`+&wO-@b(Eb-;fBc0Y7h|sYyG3vRHXdL2#DYWMy!vF}LWy%n?e*Wp zM}7X|XTS2u#rNrTwfa9l>ldDHzBO_G<`OHT@}T9#6UC~S)GQTLx14UE;5{|Fd^~U;8*Mu)X&6UFGa1zT{W#Ji)8QFF%lAOBGUF zvr?U}TVG@C+PMjTCijZCrR4C}>X#?o&3|d{{CdR_%=j}$ia*zi68GQ|VER=6rS(Ju zFy-v1V5p#>vna3MlR^kn}=wMnq6*8a!VZTj0nRkn9nVSd?1~u_8aGG&ipp zlvx6bQd2UMOY(~p42?jR>4z&s18p_};#dWJ&%CsJpeh4}AO-!P{QMFHQwTdavno}= z5-9JY5N%_Snq+F4W@3_RWRPZ%Xl!I+V3BBUVq|QYVwq}WYL;q8SVb&KQcX@`U{Z5q zs}uOx*~ob!*+uD}@vA?nNeMO#Qxdi$GB7w#W^up_*y57JqLPZD)HE&&14}MdRabvE FE&w(6wsrsj literal 1737 zcmZuy3rtg27}g*fDnz3W=N93}f?$N+M;}l?C$tnxQA*1;vJS)T?F9|p zjW%es@sw09i9T}!v|Nx-fCPf2M3RyM2m@2ZIRT9jBOr3C92_9j3}oy=5m>)o!tqvY zm^jTL-32pDkbxYK`<%1_4}r}0-@rh~i9Ar?ql7Ss0&C(RFrz#gEsD>%ARu&QC}*1g zt@gilARiE>V#aFYi-6MSo|kPY;aCU~yuqi+p-2P-8c5}N0Xk6%P<%}69H9F;r4DWO>BFD2;fzEyQC=s!Vv)Y(6!G+@DWC=9>p$rD> z00Vp(Ij2w|vWP&;&@%!tr_HLE-jCk56u?JQTjMU~-}E-zU1J zk@1IP%_D95zW#N5;%QIxt+DSv9lZ7Wqrr1+y;c8hH2?8=4=Ek5+}pdZ;L>~9ci+nG z$oV{@X6SoJ4F=TEMdPhd_6>6{nKgX$JL;%J!*SgScs!}<#+qKa(>ge+t2g|{TNx$ zY&ibc{3>(AljZAA=x?xZTwJo4sqnOY^pA=f&km=A2tz(6G4nE_Arpl?Nv+ zS#-W}YaAaF+JCsUq9f?#s7EmBz#aG1%bod6HO9x?Z@>1-hWUjhwM%yHci*?hch*d1 zh9z_~w*A%S}Nt6{8WVbl|7|hf@KhlCq0!8m{Bh_ zqmbFOX~xo?l@|+k7Kmj#3&fiyP@!6=Kw3g+^)@S3uvgbcEHmFC^6jRn?x-2gNFvZC z@EW{|Vl_!LNhwJsNl~;+K_b}(Lc!2NvsSQ3z|*5StcAeBu%+m-)=VSH zC31xl5>PS;`RoBog+itPh2R-RA?ol0_y9&xN_34gF;bO?mcvYpB1y!@a~MU=wxj45 z*vZlS%=9HmCA!<^Fj?YkJDNn>?m0V^a&}&tp4JBx8JnFGz26)iUnl_YWuld76a+j2 e-t}p+ZRHSQm_#RJMChfElBp6U(b4JITFL+DnLv#I diff --git a/lib/matplotlib/mpl-data/images/home.png b/lib/matplotlib/mpl-data/images/home.png index 6e5fdebb357c5fe4e87fa01756bfe33b40ac25f4..ad63d5a40144c8a1b0c8c788ef7280a2984ddaad 100644 GIT binary patch delta 327 zcmV-N0l5Cu1J?qO8Gi%-002sU^>Y9K0Uk+2K~#90y^=jk13?r;&ny=H0Sig~z&6Ih zfCOws6g#yR1#1go+Y~9%TG|LUwn7>k3$?HnBDN}MsV0#G787$NvyjB>tY#tjUUT2a zfyKXz2r$DHqR9r!yz{|2n>3@L17Lw?!~=8e(YCD)0XZHKpA<#_wrC-)$#VR| zm z8VYK&{sAF$iI(P?0;g)OAt^1}Ov}^Y6>jgR-}hPy2^~1_-hXpA&-2`K&U+&>9i$yO zQ1t%4`W!W zV(nUl@v5(HaDN6*8$gL?IE}?BHr15?H>+VjFW`$ifM+FO6!Yc$6L&fYY_02~s_;I} z;ZqmzZC@#Ks)zps{WZaG>E}8oaUI`VfN%Q-rf>~wrNtw^ZBay=#bCMSOMhmUY^`ly zX1>C%LvE|Q=^b0tzXx@*cu~H`aJx;>UI<=i<{U)C(LS~W|ITZ=p9HIaf%ml;*zvK8 vh*KD9gx_c8O34r7L?geJnQvPW?5F(#yBkrpuH5W~00000NkvXXu0mjfv)|B- diff --git a/lib/matplotlib/mpl-data/images/home.svg b/lib/matplotlib/mpl-data/images/home.svg index db140d43d156..ba27209b12c1 100644 --- a/lib/matplotlib/mpl-data/images/home.svg +++ b/lib/matplotlib/mpl-data/images/home.svg @@ -1,59 +1,7 @@ - - - - - - - - - - - - - - - + + + + + + diff --git a/lib/matplotlib/mpl-data/images/home_large.png b/lib/matplotlib/mpl-data/images/home_large.png index 3357bfeb9011141ebce16febf6539f610f12ecc9..e0860d2b1a20a25333a50889b92006acdba40325 100644 GIT binary patch delta 591 zcmV-V0AZK4E_93 zIKc+ilCc7YX{tkjWn8!5MN$r%;*!PQjx4}>o+|iFzd$p?jF1rMk!}!KNLJ?lfYJ9EAy5e0-d~wB;Yi{gEv?%aEO_bpsySiNORNT zKD#sW5ulBG3g$SADcecj+Mu&Gz?^a!@AIo6z-C^SJ!Oi^H3xN#R)NFT+vV7~fB*-X zR`7~0fpt8oS-#*|HVSNEQkhwf)exYUUkdKhCeY3M1%JyI{1f{G+DjTcfGHCo$ptHE zgl2&r^1kH@{+-hTOBl4ctMlirdueA}m-3vf2p3;>AL$g|l*y3x1WqXZt}rCh+zM4* zw5hwvDRaaVNEF|oc*}&)pV;8}Ih!(*{L=z>5q|qjbf)Rr#_zXU?$A4n(>N>f1_PTp_Cn590 zfnn}HbN+wk{5vx%s>)18UD^UFMP?vvWCqekW*}{32GT}mAZ=8|fQU4S$PE$sW~yIA zmN>YBBBHUH6p?PPW~v&rfc3z0Kw~uuv|9M@EL;UH`1A{U2Sg+XJOo-S%j)|!Elnj0VrYpTvz;fGyp6G1|3)GwBfV>PXdZB)CjP~+>Nsi&K+P;l7UXkLB+G$ zj{DsuM7;ramI!x8l7Tv+H_8I}6@SBe82C{|@rC*h9CC#F8X%=Iun>5R39H$6v#ZjSRs8~NjqPrW^J;)r0974hs(+q8$Uf@R#*`5XfVV^+IX1Kd%R)A* zhJmN5+GSf1kq5wzkj-ZN2xSJ+MrI&w%o+n)RTXyReMr6r?owM5dE5`fe<0?KuQX9) z7qFJ-gChy!syg5}M~>(pi6kg6s;Wa?x_k{xSIn9aPh0#32T2g6p7Q`f00000NkvXX It^-0~f}v+ervLx| diff --git a/lib/matplotlib/mpl-data/images/matplotlib.pdf b/lib/matplotlib/mpl-data/images/matplotlib.pdf index 6c44566ad819ba31e93bf50d3b7c2b9fa1bb8f64..2aa4974e771f315b2ae7d33dacdd9aed501fa609 100644 GIT binary patch literal 3568 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 literal 22852 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 diff --git a/lib/matplotlib/mpl-data/images/matplotlib.png b/lib/matplotlib/mpl-data/images/matplotlib.png index 8eedfa7cc8fc7d68be0e1781421f845ef4f54db0..fa60d7d86c935b388b4f9d9f3566d408c3914dbe 100644 GIT binary patch literal 23683 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 literal 1283 zcmV+e1^oJnP)KUMsYHnhAA*w2*)Hms87jo^amzGnL<1Y!95F*iMi>j-)=YZ^ z*NzP67Y599ForTl(r#T{SGux${2^Ofc3Z=fyve6CiCzC@)`6|PvZVo`c}ddz+x5I}c# z_ce#ZVX<1R)f~sU1c`_!W&sczjYgBp7$y`)pU7%GEoWW+B#5IXIoqWBBF3OOf1V+|_mSrtG z&r?Iy$8>WeLsWw4b>#DpVhFDe^v$S>=Xo-jOdZjcObZx|MpHN(o(??l{_AvWOO!x) zQ4E=>x`@8|@mVr=9-2{!!C+ux1PTfYly0}%8yy%LAE)ZgTH=fE2&~T`p67{(=yHEA zHT=4ay2l@|qZeThP$kVhZ>EU6SlI}hXN_)-8scBCJDy}tth zezrGYdH!vj`XL*}P2bLF9ECz5*XeY{0FcBmOo~dSDg=Oz6Sb(_t%0Sr9z4$@YvF@f z`d&4-u?0}1-h$_slOQ4laUS;L^RVuveUL~bg59ZBs|y*1k>01(YM-yHtSpsCBsl*Q zi;a1mm=ijQmR1X{-3TF1_bU2%IYO5>+)TP3K1nkE9&5of5ADISoTmiI0U$FoGu>vh z*+jXyxvJFEQ~*Fy_zwU;mYlFb(}Uqa51PI_gp>!?;>OZaj9jqdqCJe9>`lmfdR1I< z07y$qgHowfi>9uBBocv`d@(^8slYmo6M>);=E3D?>Aj9CX9lrY@i2~?cj4Ig+Y^e& zoO-SzZ`G%p@ zYF`{39TmL(o7nBNaeoyJ`$vd~sN%?0+SRm^&UCiY!I$S#9;q)fKd<;))+p8ef}D}6={R{1062(bj9R491aT+g^~ckYPD8- zJf7GVx(jFjJd5-tX`lr>t`A-Z!!X#es~(M$d00RD0!F@j1LlTr00173$H#G84S@ef z1;=r&`uh6XiHV800;+5kWX<#N=+$f_OOgQq(v%de`lJCT#+G2^oFVkL)xhufqpq&* z;Isjez_`9w*gION>b2!`$$6GombE}=T+Fad5VzpXbn4h1&cxqlvArJ__ZnqCO91aV|aW(NwKd!)Z0K-T% t8qG?jQmKx9wzym_hs|a?P5<+3`4^p@EBvCxN5=pF002ovPDHLkV1lx`QPKba diff --git a/lib/matplotlib/mpl-data/images/matplotlib.svg b/lib/matplotlib/mpl-data/images/matplotlib.svg index 95d1b61203bf..d87270ac0c81 100644 --- a/lib/matplotlib/mpl-data/images/matplotlib.svg +++ b/lib/matplotlib/mpl-data/images/matplotlib.svg @@ -1,3171 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/mpl-data/images/matplotlib_large.png b/lib/matplotlib/mpl-data/images/matplotlib_large.png deleted file mode 100644 index c7dcfe6cb8255b332d9c6d15d8049ec63c3141e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3088 zcmV+r4Da)aP)$ja2&`>wZLI*Hv9XcW>2!~^TJ3}C z>gs#7wYBM`rKK4}RQ!J-o7SwL#j@0 zSeB*4#Kby@L~^#Tz0s?HP$-H# zBt+d)Pgr&1A{}Ki+3BRDq_G?h2LRyXmI$DouM8&ovzz*gTa73dp|~L zX=$$>lEdL3DJf~JOeQ2k#E-t+)1ArN`X5*zbTd||ip-Y*sO(O~l3cBQ{rlnxo{MG=qxrxQzx2=%y54Ac4La4 zJB}qDhQVO4sBqW*ID88kvL8GhcGH}JtIG3ca`6d!p?KX007%*Q1aqdY!wWNJ_se(y zkjZ3R4-bzBGXf05j0*}18q-mbh>-ftKk(E3duT4&fWaB(KaA5VqW}MrhhD}v8mdu-g1N(NNsj0~%YiDPNxRd9xHt#t! zws|IJD;=t~|1i4)9@EFE8)a=l6z|mKKsoBq^qKVAQBl?wxm1c{x|%FY3zP$_iNe!V{d^se#yL4^{?0 zk8PXRqqepd(`LQ^#oODlt-t}(g?e1MbQW5z7A;hU_^m9qM#sV3-F?7+z8yRs56;fc zZUA7#FbpFU3P*JoB11je!XS%a7+}7P#kV`kAa{$!+Ax27@a`LUY2hniB_YVJrw8q5 zXlQ`Irt3=D8v=ZQ6rX#@Q-6)kMNX)!YlPka97{Ndug~N`@3agsNb%$4Z20*242pn_ zjg1umKDRr8z8+Q>3_x)OkgMiERqBZ1Nu7s#Jhq8*RZEZV&JAe(;k7!fyf>7vtk_ zd6fd!&!&os3TkRH714Lxaa3A`yNQ3nhBv~x#8!Plettf* zT5USe77LY@mS!lG%APl;oxtbwQI>xTC%-rhfk4ouyu7*`cFuNim}HNi^REMF-3V>k z6OTWuMq-Ok9TwJ}MsQ#NDk>`aML?-kKGbM5872ZmRGgNUcDG+zfNniXU0ofRws|_z z*9kWZa!h4&<^{of(K^Jb?J(c<2@ZOyuy)aOq+d$wQ=3GDw6wHeh^WLw001-^&9Ut4 zY|BA^KXLi$WeBIWZe95fd_4H|fm!*+Ejy7Vn2F2P9C-c?I1^BglOL_Z-?l}!A7yrn z?CflVMx!z9K}`foN=o8mVq$(73IfV2N;pqQ;A5OpIEsR>yZCKt#=jg@sqEs;UM};AX*1jGX9X`nL73MOj&y znT(B%4PsMLu~y}Vme!3L-W=PAP5cZj50oNbrRt)$s;UZwg@u_!WLme(260YK&c?{d z$UD7tV^1&`40vqS3@gr4)dF8TVMc(6YE>%L&gA6e`hgN?Zf=I*p%Kbu8MyT7ceu1%iCghS&>Jng z%ee~{!BepYU#jg)c|vR8M8JJ~_R&UDF~dbZ;w#? zvb1u^T)G-;Wjf(IuHe(gwX2Az^|)Okk({+;Yqu8~3WcI*AXi2Mg-)lVpnwTfxw6&x z)gdpF(P*TWmKIVd6h-Lf!lTc}>%Rp`ii=6)Vow{_t|Ft+XgXdWF=E8T?(FQ>1;=jz zolZwYt?^DsNXWo1IH*HUC=`mK-*Qe2*%gyXsM96ivjWSqboA)aUx)OPuVeD^@(K?Q z4!(W={{100{+V90npFTCCr_SyBrGiKc4lVglfm=|%d(W2nfW9vEUd`i-#?+Rf4yTG z>{El)qeqX92nq`FlFQ{zlO|2-^HT$*Qu#0~ElsV_XpX7X>ccd^rv^jy*hA#u;Snel z3fmuhINRCTS+^a1psA^eZD?qCtkr6(tE;Q;X|>vPjYg9}Z6WcX+8zo578Ns$*>f8r e8j?`GGyVstZ^#$l90oIx|rY;!tU3$4qa zX-?S>Z8Od;vZgH1G#oq3$L5b0a|iXc2*2?1-a>P!p_@zkDQ*Ay+@Y1myJ-J?v8XhW z_vGpDuidh~+7)i8@nS`W@btb7*QUfiSrKnwy?gD5_%(wb<<;>DcF?tsNNd*CZnX`G zv-8<0KKRNlgLc1+Cq|*40bC(eY;kmyGQc1)nOy*k(>p;UxwqwVDFHPV zuZk~e2s6(HUhxawcH{Y<$vP7Z`)#r_*Yw5c|Z(X@}$nbutdm}Rv zc|Z1>+R(4YWQShm9x^xdiV3 z1c`o&NGnX^u0BCfG$&pJ^sD%cL4F+3bcl`)S1|?NAi)q|T_JC(sw?#4s_IHkPE}tD zUg*qx_ps#TRrQ4eRyi&Ng{r>LFGyuy2n$txp9rkJu=&DT#%C&bts5)HGXuP-Ar-&S_5~!JX(BiF zCeXGMeAlLi3|cPyPB&KK^85b4CV z%J|}!Qj{+Pm<&X|%$|pr2{9DD;2(+)@B~c0xx@`h@X9SwmjKLyfVBeZ?Ro1PlMOLC ztR*1)!O@|xL%oNHo0Z|k=S^7ng(2XF<$kxPMF%>Nufjh5L-M6}$Tx?$UKwA!3H5>) zsNV$k$~8VIhJ!g4x&3)#^yzrJ30k4fQdKLwu>`G952>mZ-a>*_XgZ>*6+WZ%fJqt^Ni16AQI=5A0p zkkSmY+Cxs~`MbTb*x2_&~mero#oN zmpY|^6*sHHjjtOGXSbvn%$U-r?gxvwy94HIvH2me+6BIISle+&#ub}NoU)QGVugV zo)DXTN5f~diKQONR+Oz=_eXh;r4QHplp39WRWe&=C?hB|#53Hd#NXcXacLO2s3zYj zZv2YIeP0hRa`q@*%9`C!JD4_IbjMo9(y~nBUx^tN0 zeX*@>jt| zo2>8k{nf|r<|z}>f`!#vBrCG5x%vmR=G}_#o922Z!`IR`IzQhgXP<$Cw(0k7C6sGt z8iFcnLqaBo`Fme%B2Flp1jr99xwNo_1%*&2MwV7|6m!$>A`WVy;B|2(jBy~k8UyDZCx$n z7vHRV>DWA{mAGKAg(=PT_-{2Wr(}28o3|`;ez}rvp@a*55qcjk*s7%-7rV|}{9W~= zE~Mh$vuE|nlAe8`VQD#JhgU=C)iBFTT&uo$`M zWC67}xULghURi5ITCn6n;AHQU*;O7jS-;uwN{zhJPOm9BxBlmWp{0jbC9S5MB4q8& zAI%$hdGhhlgxmJ6=2}*?i`VabTNt*mEO6M>s$J}|`W0c@l22PjmNXP3jc{GsaPdI$ z%i4i;$LeM~HP4yRXTe|(Q(CCQkV!-HzZqn|xnQI7r96gA2^+kXK-nPae~&G(0DFxD zQM9T#~VaSlutlsEhhMhT5EDr3|%_ z%ml>h9$TIPvhIF)Morc^n5>!N&1w+Gf5=|I?u{On(dAvqnwHX@Bs z1{#%*_NtGKzjXCzj_dACp?ws>|m|tC)4euB}1~qK2466Wsp49Nh=3`J()FVE3t>OLG$DpPtEqw0O z@HSCBYFh@B~394nJO z;YCKytt!oluGlD>8aA-^>+xd@zvV_66#sQAlhY0xXY7*MT;T-FTQlO7%OHH&$oR2P@1a_7mxBF1UPZov(x+?x)8|B^>EdxM zVUBZWj?TE-rspZo(En6e|7nl$T>8TEPm6#U1 z5&i=FBLK%+{V%}(ec*EI(mh-LC8T^vNU`ly|5VGHegXbLz`LJ9eF6SKz`LJ)eF6SK z!10M2S``Z9N53fqfx5VI3#ji3E3CTc#Kn(V86sIL)Q~8iBsAT)NLz5isU^|#$&jy7s77W|* z=}e|QpT(xxa-*VHOnWBZS@j(eol02zrAKr#Tnsc)4)z+cXt}R;8IzMr;66$p8?$^Q z>GaCEq8N?u`g$@_D>wQ`@}CiQhJEdHd*`+2JjRKBo2WKDbe2B^~_Oy%|}ahmpL_zo*^!(vHI)6vU##XeRJEQ2zr%%@CK9TZ`(tW Ym?IQRg#2hS%w*Wp$rctK<2}j$1CmQ(od5s; literal 0 HcmV?d00001 diff --git a/lib/matplotlib/mpl-data/images/matplotlib_small.png b/lib/matplotlib/mpl-data/images/matplotlib_small.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d29971a583ccd80d79709458cb162d990f1bd9 GIT binary patch literal 1191 zcmd6l`8OK|0LO#vQLk3VYpvF8Mfxh@sKn8SZfzG9Rfb|^kJ|IY9#KWKMimMAL|WB& ztjffdINFFI35iUEP<2ZXQbF8Tlw5L<#ecES`yT(m2NM+dvx%{lF#rHC@q@!cbbtA@ zMh3ct)fWx`0Q$cN-3|58{$GhLfBBGxc+5s-(9<(9O*zGP(Sq!}MKmT8QAokyXvHN> zzNHC4<=CjdYpSav>}y+7YMH)u^sxGFDj_w5P=_aydWfAwVi%#IEw33F_zs66;giVd zSaM+!xs^!%ht&FKNE^bl4GC{AK(rSY`~R46UuE6aT8Sy0{Aur$6$dx0NyorHqjej0HF|!Hr3+>Zx*MwbZc4 z^}QT2dw|LwVfR0TaN#Z8QNi)&w47ca2TmeKGZT}8 ztjT#kZ;s1T1y3h|r(3`?+`(BgnBNMX<4p*V4gw)hnCh@JKeHs5U0PdO7R)ZMFN@L~ zSA_E`8!M}8i|eAr%?zi_Rng|g%J%x|&d%m8%Xu%;d2f4DytgG5@9gjG?u)ng#XAT4 z;)4URgwfvGXL%A9~c~(ndQ&TZ*A`$97?20)g0h$`@8G}JbxJ=KPZ8G^(F=d9KA zdiOZlZ;Vd_0v+rT6<_V9h(Z2=zyT?yM&4J5EbB8?=leKu>hKte`|Eg!mw9FKn5(75 z#<*!k-52)Z<-{&q`28zpLQiwTdGjaFUd2T-^u4zjoSQ?l{Zr@y1Iv-`D^U4^hKpBi z{B2y%mARc8O^-Pnk!Ff@GBe3xAy{udCo+4L?+-SIjKx?r52wU2+S*yWQvFi5N@_mFG7_Dh5|+Q2upZ{31m z;QfPSzjx@Rf0@R})!y6hfVC}lZ@&?&RYjrJXbnQ!_i%?f{_3gc5rnv0Q`IcVJ){~(EkDItmI7q literal 0 HcmV?d00001 diff --git a/lib/matplotlib/mpl-data/images/matplotlib_small.svg b/lib/matplotlib/mpl-data/images/matplotlib_small.svg new file mode 100644 index 000000000000..8911144550c1 --- /dev/null +++ b/lib/matplotlib/mpl-data/images/matplotlib_small.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/move.pdf b/lib/matplotlib/mpl-data/images/move.pdf index d883d9224a6e61436205a18182f5e66708312976..658a7a63844ecf5152ce0ce0f2b20dfe324fa3a3 100644 GIT binary patch literal 1086 zcmY!laBZ^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%M5 zKnZ}*$&P+5iac%K=Pb$=*48y>O|D>ZE{XXd*7x0CXN&2q>1VPV|NZ$J*RJsTv(K;K zJcIRLrhba7y7Ta3*5#hu42zt=7)S2(n+^V+ptNGD zHBHt9ls-Eh!(MFs_Ch4n&pU+%@egku+?}od{!^dbJN|F4`!ieT*99+@Z*QNyo&SMu z>_5f1|28oiemkjltkTV6p$$$t%^{sfTE&w3WcIhM+>IYdlMoE?qp_j&wS5wzwd0A zR;7+6Vqzs>C)>e^Y6$^wz#G;|5)uHWWh|^6kPy)UEVIzY0!+z>OfGK$iHQ=HGa|rA8L)K(vQg{c9i;~Gn^n)3+ z$U*e-rDN@UzF>p|B8FZOh&Ua=9xBFLt=gIk2?Cfp7c!_~jl2mGzL@1K;u=7pd(k0B zyC|?sp2X3bpS6g)i~G0t1SR@}cK^+m`SKl6v#qT^_0CVSyLL#+%FF!HSJ&)H-&H@i zq3uM`KwaCFwyp~wzjX2!7oM-+uW#P`?)8q~RTnycExhksG4;hkSBZ1R(T$rF&nLcD z*Wd5k)AzXP_O&c$gQ}{fz4u9|zP~VP!EgIQwBw>}fzpo-Yiu_l)%zqyJaNfrIA__L8ij%|l8}^n|AF9+$pBcP5FSDom zPn*x%l@GH+6$=`5g=GmUmg~BZG-dh}#fvRJ);Ky7l2T7aI42$2Q+;AW>B)x9o2j=G zQ?q8swGH(*GHQO=(R|UoCnQZXxZ=p1%HIF#O3(O&F;^7hs`OK92mDk9LKRmOaW!#D zYw_u}5YqC*Fn?FbG?ODWuxdGRt*urT9=}OZM*2mj{Ltn5$Z&PH%s&7V_S!Xb`x=+? z>D}EC^*3)6KRuV-Zwz|=WFHBvl7|zHul1*`b0;6U)lu8MURnHk=)GeWvu0TfS3R-I zwYqkoBw|~jWg5dRr__U2*Uj3Hm(tr*6+igyB%R6Ze)3G*&kLL!2?k z9lW%xm9EG+eEv?3>u&R{oRydBtAek&#aQzAQF0Ma~0wB_<*uGIjD7&?X&jAV?Bw~ItPMa7ud0zArMkjrU?l)Vquh@wq_ zVZ$ylykLRBpro4ejZi{HMzfjBz`z*S!OMymL6k#a%@Q0ClmvhE02xhFG%$l#7y+q6 z58%8QLB_*t9EA~R1V&>N@Qe*8%`VDq+I6trZ;PqZx1uxZb*fg@hpz?II(HZVCySjFW_gr7lrR F{s+sqfx`d* diff --git a/lib/matplotlib/mpl-data/images/move.png b/lib/matplotlib/mpl-data/images/move.png index 4fbbaef41bbadaab211d778f32f6febf31e5251c..3646eb4780ce49c35e8e95b93dbe4719962b0da0 100644 GIT binary patch delta 342 zcmV-c0jd7s1Lgvd8Gi%-002sU^>Y9K0WC>HK~#90m6SbB!$1&)zcCgB1t^e}0*Q;z z;1ZN36(`^xn0q7#a76(WkOqo0Ab}LBlnE)2s1Qnr8058O#r8NRv(k9}o_6=`j770T zMC}BgS$@DoUL-IPT3PJz>Wn9LjI5Ren+$X37QYz~7u6Zh@KGz&MV3ZYvsm}dGLPm0; za}eIln_FvwBzLIk8bcPUqDx2OGE0OU1CKmp{)N-eboDdkz0FNx)V%|V8nT;7i`0L-c&GHF97Pyhe`07*qoM6N<$g8e<3$^ZZW delta 466 zcmV;@0WJRK0^tLY8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i00DzZL_t(YiM5qGO9Md^g})Pm3V{$pYAx&qwGlz^k$<4rS&3b+Gp)6@ z+SqHOg+;n37Dg+r^bZJvm52}(6y#bs>Nv@6c2_)b+1>j%XMc9)&Wy~A|3ofLvZN(R z%c&I1ERg{4u*1Bzz$8pRR2$o8o|3QPkHFLdO5 zBXQ(kBuUp{ho7n0O4;vdMbfU?XCNhRPI7=CE}2SAhbH~|j7 zNA8gKGn~j`26D`-1++qcstYFzVoy^5N&CPsFbGtf`%3}10d9eLGkcG!&qoD33;|<- zuk5UMeS%Ze@2;@VD?RHI9@U{pBJ!R$nh&=bn?N5>^; - - - - - - - - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/lib/matplotlib/mpl-data/images/move_large.png b/lib/matplotlib/mpl-data/images/move_large.png index 96351c115f0b504c28b10ad7518915638373eeb8..915a4ddcf53a7f500c8c478c6c98dec470327f1d 100644 GIT binary patch delta 543 zcmV+)0^t4s1+4^-8Gi%-008|9F$@3z0rW{kK~#90?U=nz8$l4qe`E1w5Q#(y!t|t| zrGYmHDL_O5m&aDZc@yPB0R=1!Ihml;()roRViv@2?~ zQ@t$?%-fUo25F%x!@caDDlVwxA-iUuWOo|n(|BN+Dn7f`00;O~DSt=piD$A5t7m^E%Sh4%;Qi3g zluRy?L-9ld?Xh+&@*;bg`59NoQJyhfvV6vp3L^I#=nFMtK+U{;jv0+IC#lXe#xwJ^ z{|TY)WB}2$8RyE`2&Jz~dsE;LsL?so{TQo3=;tnDwpq2v${(t*!9DkE*yLD{T_7^l hxg^+R6d3(?&L0h&8W_HvUX1_%002ovPDHLkV1k!p{1*TK delta 754 zcmV6&0;gM2p~wsEMz|?wP&Z&FE+J}_`QJMX^FGjq)Q zAv2@Nn5vtAFJ{X6u%uaF71#%Eo7r9|j?66h0NTJ)z~Zq1v`X<+0r^rzR7Jit5mk~e zMMTx)gNvwxd{7a-Dz7;k0jl`dU#~$|UKI8$v z69AAj4V(m8@qg43aM!VX1?a`Ue*hoM?3a&!?^MFf_JMbUXGx1G%RidgD_@^UG(MU8 zFQ9Iu3Xs&6^hi=)(v7M}N$N`aD(Rl2R_fvjBJ3V8l_R)a#2vVna@fx?LBt+=0+QN9 z_xqK^^fV@uH)Sr@HWH#2yn;oZWFjriu3G5^fDd}`V#8y1D zZe?|thy8xxpi%IG6!MUfU7Fdpr1L~YdzF8wtH2rHy_tPaTbP+1$8C?TtaTv~pL8yt z|8_~)1TnGOj0N3ko?rU~p@;<1wxw{Lz^ss;K+uZdM5MOtf zDHbC(3DG$4{SOvQ#m6RQg?xwj$b=$-kq;^$r--2BgA2$I5uAJ}0vsYrA#dgx2htFi kr?-gm`&BdZjTd9_8(B_dsfD6IYXATM07*qoM6N<$g29_y6#xJL diff --git a/lib/matplotlib/mpl-data/images/qt4_editor_options.pdf b/lib/matplotlib/mpl-data/images/qt4_editor_options.pdf index a92f2cc3aaee87f45926546bcc135f40a357160a..0637424888dbfe30439c795014d3a428ee9ce886 100644 GIT binary patch literal 1040 zcmY!laBZ^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%Kk zMh$>K$GpP^JiC93TJg_F^W2tWzt~@bX^ric_T2yMZa4FcSv*d(lxTQqJgySIbLM5m zlJ`@dub!`6Ta&iypW5jwJ1#Y!@i4kD*Q7X1*;H?BZF=aoqWZ@*(VWSV$Cy0Z z*KgR#`qf5b?+lSjtz7AHCY!QbbI*tEn_Ihai~H?Ik1cm^*}Oc1t>(MP+T3mFF}Gg4 zEHnH6bsEpXXF?vo?=W5~Rhr!SiSty=y-8v3W?X#!Z%3$tg~2Lu2kx1hZ*n^o>hx&J z)cTc5u8_VgX?4)hF3aG(W613{j%;&&%r$e)d7J3EJon651?GLO2UmW2VH+Xt-llwP z_Y(W-s&y=w!ETNe?5-6h?!hI%WTya1qKO7z%GpuDP(eRA5lGtEK@i9kP?T99>4hZd zh@jLocycy2$B~*LsX8FBD7P45MSf0cZeB4cjRzE^rer3UJ;mEN<&j(bNB9YNmJKtZL)M(tId)MTcx_oYnJqa!Xkayr2zZS4@%d?elp=r+ z^wFM8xvw|(4S-I-hr5-irpJIQ3*Xxo=|L(1?o9E*cA!85`2#fSIwmG0*6>fqwytmTgx`!Kq?{AsGCCJv9=TArTyX7%HpdhbHJt+zdV zS+Sxgcffm3z*mm!p4{@q?<1e5=k>&a!-1E7Sr;Cwv~T?3#fGNHT=SbF-`>3&aa`3L zTAHf(?4GvO*+%xsncxXf0T^;|vbAEWtA}`!mF?H(Bmf~}^!P2WU7M>Is`_o$nscArb30sKwWD@FkkfnCI)4<%=)ecFwnx*|&!jJ2f z1Lt?>#Yrkr+O|cDGGk=y5@PDj`a5g+!s+1uz*Koe!@7?-+~%tn1?Uo70)(O@3+`IM zSuF_FH5~6{dDsB9K7}OWn8dXRfDYLq8mj0>V3RWkuPiD(yyC~7YqR!tF6DFbzJ0)P@HtUSOa%aRPbz)B2K>evJH zm6*pvIWCFSv9p)PB&vaum`5tl^T;>Jb5p65UKx6424h>J)G6Lv(3-_2iA4qYybcN diff --git a/lib/matplotlib/mpl-data/images/qt4_editor_options.png b/lib/matplotlib/mpl-data/images/qt4_editor_options.png index 792ec81244e3b8f3fe3cd28ef4898d934a1d73a3..d7aa16bd82195c2b9e8637634be26b0ca81e71fc 100644 GIT binary patch delta 207 zcmV;=05Jdj0^k9V8Gi%-002sU^>Y9K0H;YrK~#90&6H6Nf-n$7-+B@+VB+cUvwX^# zxC%$`3S^9?u%#`ACYsp&YMD1XKwA@SNN2fNyAiuHJ{2#HTc?-LyX1Y;9G zTL%{TxC_wH74lvXm@7b(+&A(NpIr(d$vZH(yIhe1>Fcc(vPi%VtaA6x+?4{`yxeN; za)6LKrr%0AfHBnr>~}ab)dG}d%l0;V|HfnIfrin3;{NXvcmh(sGL;P?f*k+=002ov JPDHLkV1mDzT$BI+ delta 364 zcmV-y0h9jV0sI1x8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i00ACJL_t(YiM5uYPQ*YIMbF*h5G(cvK;i&PvYKzef=3a)fP~;c;II%3 z61Nh8gD+V41j6dQh)!X)JEdLdyyTkqCg-$ylcusw&KhK;1AhZaTUiCbSx&)P9}r0w zz^K+XaM_Chcmqxn{YfuNwtWp;rDnYdB#nW?EP?=k1lIo~kW@%Il{D-KzXOira}Tyj z1t@@f${XgYm;okzv>)Hs94p)*+aNFg_&h}i=l%JXb`?jB=9=4~Fwt)}Z zb2?VMgY(pr|0fHA(Aek;ZW{qFz)jcJUA08H&}=1OC#xX$Z_5|SEVtE#bgR$+0000< KMNUMnLSTY7GM#S# diff --git a/lib/matplotlib/mpl-data/images/qt4_editor_options.svg b/lib/matplotlib/mpl-data/images/qt4_editor_options.svg index 02adfbc4ae11..acc08fb3ea94 100644 --- a/lib/matplotlib/mpl-data/images/qt4_editor_options.svg +++ b/lib/matplotlib/mpl-data/images/qt4_editor_options.svg @@ -1,48 +1,7 @@ - - - - - - - - - - - - - - - + + + + + + diff --git a/lib/matplotlib/mpl-data/images/qt4_editor_options_large.png b/lib/matplotlib/mpl-data/images/qt4_editor_options_large.png index 46d52c91c9bfe19b86b24fd92326c31b52a03ece..669443612fd4b8aa9e0a8a71d280ad3f51d89804 100644 GIT binary patch delta 340 zcmV-a0jvJ&1mpsc8Gi%-008|9F$@3z0V_#FK~#90?Uzw%!!Qhne}z)m&a{IR27~4h z_0!Tm<`UUucBpO-L1js^HHmCX#b&gP4KdjG`)o@FhZuQFk(rN0@c&0dIHwWQ;|7`D z=$lxmpNRxmVJ-H*^bPm*++0<0kO#W46aw}r5(-#U{Cu)!5r1yth>$nP@Zb{(FvaiT zt`ML^slp$+-kni^9#h9x|2y&y#+OonKTNH|ccZV^s00{eY90P!eprBchSU~(MBqul z1|L#r%>sXZL%I5(APt^+@H0U?zu_$S zi2#)*gebAq;!Q^aJfn@{*;xHMNP_2C42B@8&zNn3ZWk@8RCtzN*Yw248+yLeAjnmU mym;J!fR;b~`ww!FTW|s;wVlpa%vn+Z0000b9)Mo5t^U=dPI@37v#fE5U$PN zASPXiWlBkvCXFeqB{s$~T}Wdo}&|+?YI%f6|SaF;#;J2i4F#^B=u<9{? zA9z#J7TN(WJ?0Ofpfe!pE3gS%`P3C703c}}c!!5XQ36#CfIqI2ixM!iA#eyhcC9H! zpaK8Xr>+QrP=9zRKp+Ml5(=2vQU&8v;|hNaY}4^|67W_Mp@T_NIReJO3&)xva8j*5 zZTtiVRn2QA%}&7g`tNX*Km)#BaHd2Ee51CO_!ceD0zXqC2EOr(m%yVafhq8v5-H$Y zIQ#`1;BQFG13pN=1HK*?z{Wh_y#)f`eTFx@B=php_4$V z@Zcce0sjm5Z^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr*&4 zK?#7+VDCH^MV{NmT-T<0DIR!S*dw>FDrkB4b=TX!y?q~jkPKb)jmNNTlBeCL``M3_ z<^TOEv)6m&zMud9H^IM;&o7l*<>}uKWCxDcN)aU#Hr`O)^#X2ZElS3)E$r z$Py|;a;H=Z=ScFQP`dyzfnTi@(S~&6_0=G_S`$!c|34g+qBo&CfAJ$R4x^Y z75H);(zW}d7?Aa9<*IFhI&vM-rCIpVy+xjRKi9AFlD&Q@D8Oi%7|ZOe zC4E7;7HiJA_%Yk7J~@)1nktZ6_;5i5S#1?9~zZRT-VES3! zH`8vO40*HYU)!!+=R0CXZ9AI|JY%|=mglXgIX}4YO!;^IB@B10Fyql2DIQ%bO5B4> zfazEPl;#r+z?8G2f}w(baw3qlvx6XzDWEi9fut9bLn4Aw)8P5T*aAoPfMk<^#G>3{ zh!y!crMY>!|u zm_pdWnN_I@mOyzIg=m`;Bg@oeGqaQ=vs5#)q!fdsL{kHEBO|k91G6-96LSkY!YX1> zl5BDk1CyE?Tb;ni&PL7?$u3I&j9>jpO-is~oRY95k%7VaG>Zpjz!sMz7L`;KrKWLN O7@Bjbs=E5SaRC6c^{^TM literal 1714 zcmZuy4@?tR7@wHHybvLATgC+T#B_j2@2=%~Eo+KUC?W%!mJk+X6@iUK zru^AtB9brxH@3mh4L2kNoGx)eoWaC^*@SJ5I3#MAWJAG?3`f{|E#+T#X>xtPeBbwb z@AtmncM^TFE|!$WVUly>pz9Jw0s`=+B229YxSp}HP9TGb0pM9>4i?~AMr7=~6=*aV z%UMvMa!o=?shDaM8Ic8Xo+KU5i9qi8uV+M&6*xelC5Gz--fUz=kPCT|b+A5LDgr#M z7;+{pzqQNnG>`{yV4x59F8 zrScR=6?m5epkr!{08eI1Y-ZMw3aQ~LOJF#sgArKHT;@HwCms^v8LY*|B=M!NE+V64 z=m#0}C_(hW zy%_Tc3Bxr;xSz1_ z{Vn!SX5i#_2y5%VdFpfZ`-V$@O-(%BS67o(GHA)|Y}Q|Xp*Xag4CEv?X0e{2BDL}H zIF)z(`cA`kl2F+wV7Yy?CI4DI5MWIR6`e>=nB$ zyQ%HbLDhlmqfsM%uXfb#sEgQ=@q5mpGOhmZR)yTuvXV_MU`D*t8d z>r;1<-qXx1pvqh%H-q)ugzYfiP<6M42~?{Qoc#hOKE^yn`tL>tc~qnQ(x94{kC1)(5FQYNPeI+low zB#6jp4A-JKUI0BE_O<@vA I%6=X89}zDwrvLx| diff --git a/lib/matplotlib/mpl-data/images/subplots.png b/lib/matplotlib/mpl-data/images/subplots.png index bb0318c40e72343d52227ef29048224b5c7177ae..601a03ca746bec107f2b888cdb21c1b3f92715b9 100644 GIT binary patch delta 237 zcmVY9K0L4i}K~#90wUj*$fRMSFjXXZ(xgKBxYG)SwO?QWb-n~?9RM-Sy6^Xz}N+0NhM;JCC`T)6b2W%R$KV-ov~>5i6k4?_HcWYP@jW2zi)NF6Ei>T3SznHp8hRWI z-Idv5Xh}qyU~X=WicI|brgiC@VQ*-vQYmPO6UqX(*}BzK>ftA?D%0sFjF+_2Pw~HA n(q4Y5tJLWykC)sr{wMGTpwY`YQvE%}00000NkvXXu0mjf*&S@* delta 430 zcmV;f0a5<`0lfo|8Gi-<007{3J@^0s00eVFNmK|32nc)#WQYI&010qNS#tmY1F!%9 z1F!)n#1E|i00Cb~L_t(YiQSb?D@0)w#(&RrP0EInNlJENqm+^u8(Z69ZD-{JC`%te z7G}v8z!#WO!$K(~QFazch-`6e-Wl(md#8Kd+{jx`o%eL^`G5P|^UBP~^AvLR{(l2V zDoeVQbmed%X(CI2z;ikR^t$T|Fx+B0E2%T3-)A#B1HjC1Oxgp?Vat;nsK)5pq1Nyl zdkQ+?0;&UtxwZ+pq#RZqZnPEq`H$&%xne1E$RkJDFYN^bOrDGo~AZqix!Et zXzj;XB&iEnCOqVAGrNu0{_1-msVeEt!=WU7CxFkQal%7>0;XGZC16Zae}dmfGdl*_ zE;|G2z&Y8LUM(_YNmIapm&F6H35>R6Hwg?TRB&%*2PdHl+R$+ac=d3KBgUUucDcXF YpD5yLwz`w&SO5S307*qoM6N<$g4@};0ssI2 diff --git a/lib/matplotlib/mpl-data/images/subplots.svg b/lib/matplotlib/mpl-data/images/subplots.svg index 9a0fa90972ff..aec67ebaa37b 100644 --- a/lib/matplotlib/mpl-data/images/subplots.svg +++ b/lib/matplotlib/mpl-data/images/subplots.svg @@ -1,81 +1,9 @@ - - - - - - - - - - - - - - - + + + + + + + + diff --git a/lib/matplotlib/mpl-data/images/subplots_large.png b/lib/matplotlib/mpl-data/images/subplots_large.png index 4440af1759ee448e56727ad09e6861eab94ecca5..cee7f070e5728cf95c273e4865a779d36f6236a9 100644 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)Iv;urWT>t<74`dPpo&|e$0oC!A z1o;Isu(1aQw|8`QJ$d@<`L*j+d_ajgo-U3d7N?UFB$^zO-`~C6dPAk^{k^@_yt9u) zE;u5~6Zn3&_`4>C_pufcJfVGxh1~mD{1!JP=uapXp1nG&Q7C+)=Zf`vtFIZ6Oc3~sVm7PV@=ZeaV1-rQ_7oI(mHUcLbhnT zla*Bhsat4oKr>S(k-F>}3`n{L+%3@Fj+zef$YsIy>;Ax&2>>U63kC72trPLc<<($d z;!mNX6<7ft7JtM)C-|0mrYwl5|oR-4o<^mRm<$@MNU zpJF&|=GrD}3rX4!94xuqv%Q|Z^4|D>$ol3WFSpVYkck_-hy z3sVJsx6GW9)FL3AlUS1KlA4^K0#xXyU;>gUDlSnlGE}g$<0>vGN=?k=s+i;3=gZY> zAmQ@e_UIjjSy8(u>TFS1D$=z}Td#>t&`as3=GSk&J*`e*lg&TdcCompNE%%*InFud zl5=1~$SKcmktb&TZ2tVJ85f#MUMo4s)d;cmyj`=!DXO`q*<Iu;>>-*m_m+v&;zV5{LI^X1*1oO`B!e>i={W$DtaOUvq!;$eD7JT$m?kTGJp!8f~ zOI_UtK_k0glkdisKVGr_yvvG5)AnBx>Cm4V?90WKnwJ9g1CRv@6*HvJ!5Rk8Kr%8l zM-6}g&pZ}Gjy=Cc=P0*sxWP7WqPmN2s@_cJN&meWcUK#|n&!KcOCw>ypEyhYxdnG_ zmoNVMrMP)Jf79*!$BkwV5BZcb7D{$KW^h-&{cxI$dO--cfVbV!7Ci;wt>42$_f%_z zPH5Fm^g1BEVo_J~k#`GJ*;7p}E|uN9Zb9VEmc&~Q)-!6ARgMSEubllyKQDX2 z`RU*8{bNwSo4N`!AkC2i(zT+*J-7szkQ6|PF3|u?IXfyCD(ELC0!ceN2m+Y`iUbQJ zy^tgt5tNz+PoT!;IMOF1odzTpRw%_|0_+JK_el+5Ik{2~QIBamhK;R?|} zn~i`tRzcr0FD)Oa%0MAVK|d%zzeK?l!Vb=?N>#7~%DX5;+n8G>B^ev0CMTtsnHpM} z8Q8D?!WS0L j8wLyv4*tw1FvGRDB(bQZq9`?u%goY%OI6j?-;E0Z5wm)0 literal 1609 zcmZuxeM}Q)98Q)w%!SR6Igu^s>juLQ?A?1udlU&$T8qR1wMD@ZmR+werBd$ByBAiN zEH2Dt;>aR1Cd8>EbGQT-Bxq2aLUqi*f$pvM^mX68FCSfJ%31a=j&jo5PJ3rHnuh}5OcM4tXg z2NzAialYKhP@8p`5J(xCCy;WQz#ctJ{It$MkPrk|XOJ-HK(gv1guj9mKW+e!&c#g= z4Xh)ni3x?9+}o5)m^yuLdC}Y6_T1^ORxG(STD>wW&@rhzadwhzdf1h+bzjEK-mLEK z+`C=JN4K`MS6VOq^5|&RPuG7KzO#Ar2Y2od58Mr%N}WsJadpq?l+jI>Tj#((Pd`XXt&Fw)yIBn}@bG}4|M-?6&qirXcwY#cJH;mW!&2(B|s@!qxYM)U&l{S&p z^I7GkrAO9h=N>roZrA4>or8z@H?^Jbz4TU2$kTPGUpqMksz8S4`bR_GOfR{3ex~8d z>2SD0%3JZM{qNbqoU`z2@n(2-bi03Y*WNXIi>rTo)*+8u1^h#rWv&UW>8t;Dc;j3Mje{JiVskRkY z)c^6$ncv5Dp1Sqzru4d%nad7Tt{S(^mdq|&+Hme5Refv%G5tp-Lq{lx=C~)Q;$u@? zP$soReAG4=Ri2GtF=s7!hm|D)Q>EGXco_WuFi64@)I_b7)R!7238c130;$vEC$y{0 zM9ZY@wt$a1DB>$Om3ed#M0dl&?cig{M4~vLDh|2|);bD!4q7-12O%$*IdLPGm&0*6 z>loHf<5V52ZIZASRBfo8Gi%-002sU^>Y9K0XIoRK~#90rIN8u!$1r`-&LYrk}%RC%KyLz zL|tJhMUd|0Yxn{t2HGkkoe=|LDMQnO#K3}DBpMX=)FhWf1Yt|IW8XX3@u`%*NrV3Y z%2j<8t3-XOM8zsnj)h2fN{5%iXQoTSaw5$EF4-8hOg9Xy0Dm2Qd`cIeJ$z1?Y9y=x zxVo8JoI=TED8ZtX71P(Z7YZ7gNpN8TvAAw^1bX7eCXk5pEkGb{ZUSp@O$*Qxx6U)$ z#l49=u&k*q_TAj{qu4_Wa3uD@*ff#;ORmw7$Fl^HIfKJef?*NCVV`_)Z{debv{ z1T+aa)3>MG<5}6>(!lzbwmQj?V#gs1-2cbkIdf)Z zW;|p(dQkN;14&(y<|OS(I+gTC(sxNalAcRal!KYIC9n+q2CO8%0ke7hj8=~LhYDez zx4=TQL5_G6_zb)OUIL52-oKc5@yURA2s|!m;W%*NuyvqTWw7lC$3TDSr^5(vpYiW z0e>B5qsm~6>_q$^XDX6DzXGlu_L72o6Oz{g69e{vC468WSfO>pL(DZW9lPxEOky(E zq^Q4d3w~+1tJcYGfHsq|Llp1~*aE%+2f!C#1DF6h65Q)Dlgd$y9M{m~1{n3L;=jVo zHfjB5G?P*{@FIPAZwbuMx*NZMAu~hCi+hV?%{0=5c?Y|{03?pA`D_3H002ovPDHLk FV1hW6<)Q!p diff --git a/lib/matplotlib/mpl-data/images/zoom_to_rect.svg b/lib/matplotlib/mpl-data/images/zoom_to_rect.svg index 44e59a8a4fdc..ac07a910f2a9 100644 --- a/lib/matplotlib/mpl-data/images/zoom_to_rect.svg +++ b/lib/matplotlib/mpl-data/images/zoom_to_rect.svg @@ -1,40 +1,6 @@ - - - - - - - - - - - - - - - + + + + + diff --git a/lib/matplotlib/mpl-data/images/zoom_to_rect_large.png b/lib/matplotlib/mpl-data/images/zoom_to_rect_large.png index 5963603bb681f76a1f2ce3e3fc120b5a089c27fa..9162c6698e3018770fc2ddf4d4bb6dce096c87ab 100644 GIT binary patch delta 673 zcmV;S0$%<22d)K>8Gi%-008|9F$@3z0(D75K~#90)tEs~6G0S!zgBNxOH3rFm?l6% zV?CKhG$GWp2gG=5(n$12c+;3bke}c|{(rzp`*3WC8(b$tihl&K!&laM#~br#l016(D zGEce5IDPan&J54k_V`#9%2dYqWf=CDBjE{2GS8l2sxjgQFn7*3E(eBX*)R+x2LQRY z^yjT>JKTnt41WidjKv9@y|kX9uGEzf07EpDeJ(7${EJyoN|Ql5;GVLUy{}gMf|JIM zn)UN(Rnwd*P_JdzsgCWitW=%hxU~QoWnFQul`BfVWCx^_^|LeJlaf<*z$sp5q@StXb4fG^5=(HW3Y@((*;U4L1podMHI{^;v*d}!_(2QBGz z&<3a|wa`han0Ep!Dy6|0D?p&Alseha^jC~x_aeYciBrbN2E*3$7uf8uTnntWA+na) zo9SN$dK$`T+jXVRg74tYN@3a?vJRDjtC$@h*D$#@kca>M+Oi-M3WN{0>q10i*SkL z2vPC-nnVT=NK>N00c*O<$D;ii5{nZP<9-w|z#7|n{;%RMt9-$Q4_-tP00000NkvXX Hu0mjfo&7;w delta 1005 zcmVP3w>aMJ-e>P~j(PiG zP3~UzU;n?~=Nu&>{Ljc6YXNcb-y6tJibyF{1e5}Wzz{GXBE3oR8|y}014^k0z#5t?9TVB5l#78XzKG0aOAlKp!BUaR*ojq_#`1ook)hp+I=Xb0;5 znE{{{c%FdpV1En(dw_ybH2^dMUlJA{jEiwhjJ5dKCXBm~QmP8L3zTF{7>S4I1^NiR zxbuP8=-p`vFv)@Al!&Z%$Qubm&ljY{*m`XkI1W^YjA9AU40MI?39vemDFo~cDbx)t z_9_J9fx{uZy};C127of)howk6P#SsB!IlschvFL8Wq%=m8%KPg#&%1M0bpVz13(J+ zU?E=`SA4oo9&pQ2XH!%ID=nnwk`N!LRb{Ew=E{?KonC|)EtWQKh{!YGx}mvRDOK#k zlWCyNkk>6DHyyS4;Dq7#e4xgKAk#ptA@826B2V16w3#|{1pXLMN~M6whP)>pqI~cY z_-<$`b$=lUjzFO$Z@^WN4@6`b_-be_a^VOX7_{W2Tt!8IiF?T9&p`v<&?j&97!bWVKQ-jl`$=<#jrWxcLFO*hYRIcmO3iYTK4y{%jK){FsmID`no)7`U=tt6R!0aqs6%HL@G!gj|QxHn2GW6AWCQyui82N<062B6W z{*eEdqu)@>v7`+EO(Jr8#II3CU^D`K*k-wmL|yDDG|DDALQLF9dGzd58We(rHNP`7IuD&;Wplyhoep$kMzwGdX7im<}98zcGIfG>^(QI+n=E bDddA+kZ(_gjY7o900000NkvXXu0mjf``fYo diff --git a/tools/make_icons.py b/tools/make_icons.py index b253c0517c43..d2794baf6c1f 100755 --- a/tools/make_icons.py +++ b/tools/make_icons.py @@ -1,120 +1,249 @@ #!/usr/bin/env python """ -Generates the Matplotlib icon, and the toolbar icon images from the FontAwesome -font. - -Generates SVG, PDF in one size (since they are vectors), and PNG in 24x24 and -48x48. +Generates PDF and PNG variants of the Matplotlib app icon and toolbar icons. """ -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter -from io import BytesIO +# ------------------------------------------------------------------------------------ +# +# Toolbar Icon Notes: +# +# Historically, the toolbar icons were generated directly from the FontAwesome 4.7 +# font (released under the SIL OFL 1.1 license): +# +# Code Point | Icon Name +# ------------+--------------------- +# 0xf015 | home +# 0xf060 | back +# 0xf061 | forward +# 0xf002 | zoom_to_rect +# 0xf047 | move +# 0xf0c7 | filesave +# 0xf1de | subplots +# 0xf201 | qt4_editor_options +# 0xf128 | help +# +# This resulted in fuzzy edges (due to scaling) and vertical misalignment. +# +# The glyphs were redrawn by hand and pixel-aligned to a 48x48 canvas. +# +# ------------------------------------------------------------------------------------ +# +# App Icon Notes: +# +# The app icons were generated using a modified logos2.py. +# +# For the 256px icon, the following parameters were used: +# height_px=256, lw_bars=1.5, lw_grid=2, lw_border=4, rgrid=[1, 3, 5, 7], +# dpi=72, ax_positions=(0.0891, 0.0891, 0.8218, 0.8218) +# +# For the 32px icon: +# height_px=32, lw_bars=1, lw_grid=0, lw_border=0, rgrid=[1, 3, 5, 7], +# dpi=72, ax_positions=(0.0891, 0.0891, 0.8218, 0.8218) +# +# Both matplotlib.svg and matplotlib_small.svg were manually cleaned up and +# optimized using svgo +# +# ------------------------------------------------------------------------------------ +# +# Conversion and Compression Notes: +# +# This script requires `inkscape` and `optipng` binaries. These were chosen due to +# being dependencies of the documentation build process. +# +# Optionally, this script uses `pngcrush` if present to further optimize PNG files. +# +# Output PNG files have the following pixel dimensions: +# +# matplotlib.png 256 +# matplotlib_small.png 32 +# {toolbar_name}.png 24 +# {toolbar_name}_large.png 48 +# +# ------------------------------------------------------------------------------------ + +import argparse +import subprocess +import shutil from pathlib import Path -import tarfile -import urllib.request - -import matplotlib as mpl -import matplotlib.pyplot as plt -import numpy as np - - -plt.rcdefaults() -plt.rcParams['svg.fonttype'] = 'path' -plt.rcParams['pdf.fonttype'] = 3 -plt.rcParams['pdf.compression'] = 9 - - -def get_fontawesome(): - cached_path = Path(mpl.get_cachedir(), "FontAwesome.otf") - if not cached_path.exists(): - with urllib.request.urlopen( - "https://github.com/FortAwesome/Font-Awesome" - "/archive/v4.7.0.tar.gz") as req, \ - tarfile.open(fileobj=BytesIO(req.read()), mode="r:gz") as tf: - cached_path.write_bytes(tf.extractfile(tf.getmember( - "Font-Awesome-4.7.0/fonts/FontAwesome.otf")).read()) - return cached_path - - -def save_icon(fig, dest_dir, name, add_black_fg_color): - if add_black_fg_color: - # Add explicit black foreground color to monochromatic svg icons - # so it can be replaced by backends to add dark theme support - svg_bytes_io = BytesIO() - fig.savefig(svg_bytes_io, format='svg') - svg = svg_bytes_io.getvalue() - before, sep, after = svg.rpartition(b'\nz\n"') - svg = before + sep + b' style="fill:black;"' + after - (dest_dir / (name + '.svg')).write_bytes(svg) - else: - fig.savefig(dest_dir / (name + '.svg')) - fig.savefig(dest_dir / (name + '.pdf')) - for dpi, suffix in [(24, ''), (48, '_large')]: - fig.savefig(dest_dir / (name + suffix + '.png'), dpi=dpi) - - -def make_icon(font_path, ccode): - fig = plt.figure(figsize=(1, 1)) - fig.patch.set_alpha(0.0) - fig.text(0.5, 0.48, chr(ccode), ha='center', va='center', - font=font_path, fontsize=68) - return fig - - -def make_matplotlib_icon(): - fig = plt.figure(figsize=(1, 1)) - fig.patch.set_alpha(0.0) - ax = fig.add_axes((0.025, 0.025, 0.95, 0.95), projection='polar') - ax.set_axisbelow(True) - - N = 7 - arc = 2 * np.pi - theta = np.arange(0, arc, arc / N) - radii = 10 * np.array([0.2, 0.6, 0.8, 0.7, 0.4, 0.5, 0.8]) - width = np.pi / 4 * np.array([0.4, 0.4, 0.6, 0.8, 0.2, 0.5, 0.3]) - bars = ax.bar(theta, radii, width=width, bottom=0.0, linewidth=1, - edgecolor='k') - - for r, bar in zip(radii, bars): - bar.set_facecolor(mpl.cm.jet(r / 10)) - - ax.tick_params(labelleft=False, labelright=False, - labelbottom=False, labeltop=False) - ax.grid(lw=0.0) - - ax.set_yticks(np.arange(1, 9, 2)) - ax.set_rmax(9) - - return fig - - -icon_defs = [ - ('home', 0xf015), - ('back', 0xf060), - ('forward', 0xf061), - ('zoom_to_rect', 0xf002), - ('move', 0xf047), - ('filesave', 0xf0c7), - ('subplots', 0xf1de), - ('qt4_editor_options', 0xf201), - ('help', 0xf128), + +from lxml import etree +import pikepdf +from PIL import Image + + +INKSCAPE_BIN = "inkscape" +OPTIPNG_BIN = "optipng" + +DEFAULT_IMAGES_PATH = "../lib/matplotlib/mpl-data/images" + +TOOLBAR_ICON_NAMES = [ + "home", + "back", + "forward", + "zoom_to_rect", + "move", + "filesave", + "subplots", + "qt4_editor_options", + "help" ] -def make_icons(): - parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) +def run_command(*args: str) -> None: + """Run a subprocess and raise RuntimeError with stderr on failure.""" + try: + subprocess.run(args, check=True, capture_output=True, text=True) + except subprocess.CalledProcessError as err: + raise RuntimeError(err.stderr.strip()) from err + + +def run_inkscape(actions: list[str]) -> None: + actions_str = "; ".join(actions) + ";" + run_command(INKSCAPE_BIN, "--actions", actions_str) + + +def optimize_png(png_path: Path) -> None: + """Removes all metadata from a PNG file and then runs `optipng`""" + img = Image.open(png_path) + img.save(png_path) # Should save without metadata + run_command(OPTIPNG_BIN, str(png_path)) + + +def optimize_pdf(pdf_path: Path) -> None: + """Removes all metadata from a PDF file.""" + with pikepdf.Pdf.open(pdf_path, allow_overwriting_input=True) as pdf: + # Each PDF gets a fresh CreationDate when we run make_icons.py + # This dirties the git working tree directory, so strip all metadata + # that could change. + for key in ("/CreationDate", "/ModDate", "/Creator", "/Producer"): + if key in pdf.docinfo: + del pdf.docinfo[key] + + if "/Metadata" in pdf.Root: + del pdf.Root["/Metadata"] + + pdf.save(pdf_path, deterministic_id=True) + + +def has_black_fill_group(svg_path: Path) -> bool: + """Checks that the SVG file has a root-level group with 'fill:black'""" + tree = etree.parse(svg_path) + root = tree.getroot() + for child in root: + if etree.QName(child).localname != "g": + continue + style = child.get("style", "") + declarations = [d.strip() for d in style.split(";") if d.strip()] + if "fill:black" in declarations or style.strip() == "fill:black": + return True + return False + + +def process_toolbar_icons( + source_dir: Path, + dest_dir: Path, + png_paths: list[Path], + pdf_paths: list[Path], +) -> None: + actions = [] + + def add_actions(name: str) -> None: + svg_path = source_dir / f"{name}.svg" + pdf_path = dest_dir / f"{name}.pdf" + png_large_path = dest_dir / f"{name}_large.png" + png_small_path = dest_dir / f"{name}.png" + + if not has_black_fill_group(svg_path): + raise ValueError( + f"SVG file missing with style='fill:black': {svg_path}") + + actions.extend([ + f"file-open:{svg_path}", + f"export-filename:{pdf_path}; export-do", + f"export-filename:{png_large_path}; " + f"export-png-color-mode:GrayAlpha_8; " + f"export-width:48; export-height:48; export-do", + f"export-filename:{png_small_path}; " + f"export-png-color-mode:GrayAlpha_8; " + f"export-width:24; export-height:24; export-do", + ]) + + png_paths.extend([png_small_path, png_large_path]) + pdf_paths.append(pdf_path) + + for toolbar_icon_name in TOOLBAR_ICON_NAMES: + add_actions(toolbar_icon_name) + + run_inkscape(actions) + + +def process_matplotlib_icons( + source_dir: Path, + dest_dir: Path, + png_paths: list[Path], + pdf_paths: list[Path] +) -> None: + actions = [] + + def add_actions(name: str) -> None: + svg_path = source_dir / f"{name}.svg" + pdf_path = dest_dir / f"{name}.pdf" + png_path = dest_dir / f"{name}.png" + + actions.extend([ + f"file-open:{svg_path}", + f"export-filename:{pdf_path}; export-do;", + f"export-filename:{png_path}; export-do;" + ]) + + png_paths.append(png_path) + pdf_paths.append(pdf_path) + + add_actions("matplotlib") + add_actions("matplotlib_small") + + run_inkscape(actions) + + +def make_icons() -> None: + parser = argparse.ArgumentParser( + description="Validate and convert SVG icons to PNG/PDF.") + + parser.add_argument( + "-s", "--source-dir", + type=Path, + default=Path(__file__).parent / DEFAULT_IMAGES_PATH, + help="Directory where to read the SVG files.") parser.add_argument( "-d", "--dest-dir", type=Path, - default=Path(__file__).parent / "../lib/matplotlib/mpl-data/images", - help="Directory where to store the images.") + default=Path(__file__).parent / DEFAULT_IMAGES_PATH, + help="Directory where to write the PNG/PDF files.") args = parser.parse_args() - font_path = get_fontawesome() - for name, ccode in icon_defs: - fig = make_icon(font_path, ccode) - save_icon(fig, args.dest_dir, name, True) - fig = make_matplotlib_icon() - save_icon(fig, args.dest_dir, 'matplotlib', False) + + source_dir = args.source_dir + dest_dir = args.dest_dir + + if not source_dir.is_dir(): + raise NotADirectoryError(f"Not a directory: {source_dir}") + if not dest_dir.is_dir(): + raise NotADirectoryError(f"Not a directory: {dest_dir}") + + if shutil.which(INKSCAPE_BIN) is None: + raise FileNotFoundError(f"Could not locate the `{INKSCAPE_BIN}` binary") + if shutil.which(OPTIPNG_BIN) is None: + raise FileNotFoundError(f"Could not locate the `{OPTIPNG_BIN}` binary") + + png_paths = [] + pdf_paths = [] + process_toolbar_icons(source_dir, dest_dir, png_paths, pdf_paths) + process_matplotlib_icons(source_dir, dest_dir, png_paths, pdf_paths) + + for png_path in png_paths: + optimize_png(png_path) + + for pdf_path in pdf_paths: + optimize_pdf(pdf_path) if __name__ == "__main__":