annotate scripts/gui/listfonts.m @ 33623:4517f929c59d bytecode-interpreter tip

maint: Merge default to bytecode-interpreter
author Arun Giridhar <arungiridhar@gmail.com>
date Fri, 24 May 2024 16:22:41 -0400
parents 2e484f9f1f18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28391
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1 ########################################################################
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
2 ##
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 31706
diff changeset
3 ## Copyright (C) 2020-2024 The Octave Project Developers
28391
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
4 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
7 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
8 ## This file is part of Octave.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
9 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
13 ## (at your option) any later version.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
14 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
18 ## GNU General Public License for more details.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
19 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
22 ## <https://www.gnu.org/licenses/>.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
23 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
24 ########################################################################
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
25
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
26 ## -*- texinfo -*-
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
27 ## @deftypefn {} {fonts =} listfonts ()
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
28 ## @deftypefnx {} {fonts =} listfonts (@var{h})
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
29 ## List system fonts.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
30 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
31 ## If a handle to a graphics object @var{h} is provided, also include the
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
32 ## font from the object's @qcode{"FontName"} property in the list.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
33 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
34 ## Programming Note: On systems that don't use FontConfig natively (all but
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
35 ## Linux), the font cache is built when Octave is installed. You will need to
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
36 ## run @code{system ("fc-cache -fv")} manually after installing new fonts.
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
37 ##
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
38 ## @seealso{uisetfont, text, axes, uicontrol}
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
39 ## @end deftypefn
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
40
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
41 function fonts = listfonts (h)
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
42
28392
d872aed70d27 listfonts.m: Fix problem accidentaly introduced in c126a60b0d52.
Rik <rik@octave.org>
parents: 28391
diff changeset
43 if (nargin == 1 && (! ishghandle (h) || ! isprop (h, "fontname")))
28391
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
44 error (['listfonts: H must be a handle to a graphics object ', ...
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
45 'with a "fontname" property']);
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
46 endif
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
47
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
48 persistent sysfonts = get_fonts ();
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
49 fonts = sysfonts;
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
50
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
51 if (nargin == 1 && ! isempty (h))
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
52 font = get (h, "fontname");
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
53 if (! strcmp (font, "*"))
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
54 fonts = unique ([fonts font]);
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
55 endif
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
56 endif
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
57
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
58 endfunction
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
59
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
60 function fonts = get_fonts ()
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
61
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
62 fontfiles = __get_system_fonts__ ();
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
63
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
64 fonts = unique ({fontfiles.family, "FreeSans"});
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
65
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
66 endfunction
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
67
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
68
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
69 ## Test input validation
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
70 %!error listfonts (0, 0)
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
71 %!error <H must be a handle to a graphics object with a "fontname" property>
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
72 %! s = listfonts (0);
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
73 %!error <H must be a handle to a graphics object>
c126a60b0d52 listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
74 %! s = listfonts (struct ());