annotate scripts/plot/appearance/annotation.m @ 20141:8eb72c4ed457

Add uicontextmenu to annotation objects * Canvas.cc (Canvas::canvasMousePressEvent): Allow searching in axes that have hidden handles so that annotations objects can be picked by mouse events. * Canvas.cc (Canvas::canvasMousePressEvent): later disallow manipulating hidden axes in pan/zoomin/zoomout/rotate modes * annotation.m: add context menu to manipulate annotation properties * annotation.m: fix wrong position of textbox when position has negative width/height
author Pantxo Diribarne <pantxo.diribarne@gmail.com>
date Mon, 20 Apr 2015 09:26:13 +0200
parents e9f89866074c
children 777f26aa8e3e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1 ## Copyright (C) 2015 Pantxo Diribarne
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
2 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
5 ## the Free Software Foundation; either version 3 of the License, or
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
6 ## (at your option) any later version.
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
7 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
11 ## GNU General Public License for more details.
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
12 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
14 ## along with Octave; see the file COPYING. If not, see
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
15 ## <http://www.gnu.org/licenses/>.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
16
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
17 ## -*- texinfo -*-
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
18 ## @deftypefn {Function File} {} annotation (@var{type})
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
19 ## @deftypefnx {Function File} {} annotation ("line", @var{x}, @var{y})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
20 ## @deftypefnx {Function File} {} annotation ("arrow", @var{x}, @var{y})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
21 ## @deftypefnx {Function File} {} annotation ("doublearrow", @var{x}, @var{y})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
22 ## @deftypefnx {Function File} {} annotation ("textarrow", @var{x}, @var{y})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
23 ## @deftypefnx {Function File} {} annotation ("textbox", @var{pos})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
24 ## @deftypefnx {Function File} {} annotation ("rectangle", @var{pos})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
25 ## @deftypefnx {Function File} {} annotation ("ellipse", @var{pos})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
26 ## @deftypefnx {Function File} {} annotation (@var{hf}, @dots{})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
27 ## @deftypefnx {Function File} {} annotation (@dots{}, @var{prop}, @var{val})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
28 ## @deftypefnx {Function File} {@var{h} =} annotation (@dots{})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
29 ## Draw annotations to emphasize parts of a figure.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
30 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
31 ## You may build a default annotation specifying only the type
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
32 ## @var{type} of the annotation. Otherwise you can set the position of
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
33 ## the annotation using either @var{x} and @var{y} coordinates for
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
34 ## line-based annotations or a position vector @var{pos} for others.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
35 ## In any case, coordinates are interpreted using the @qcode{"units"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
36 ## property of the annotation objects: the default is
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
37 ## @qcode{"normalized"}, which means the lower left hand corner of the
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
38 ## figure has coordinates @samp{[0 0]} and the upper right hand corner
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
39 ## @samp{[1 1]}.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
40 ##
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
41 ## The figure on which the annotations should be drawn may be
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
42 ## specified by providing its graphics handle @var{hf} before any
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
43 ## other argument. Otherwise annotations are drawn on the current
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
44 ## figure.
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
45 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
46 ## Further arguments can be provided in the form of
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
47 ## @var{prop}/@var{val} pairs to customize the annotation appearance
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
48 ## and the units in which coordinates are interpreted. The annotation
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
49 ## can also be customized afterward using its graphics handle
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
50 ## @var{h} and @code{set} function.
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
51 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
52 ## All annotation objects share two properties:
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
53 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
54 ## @itemize
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
55 ## @item
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
56 ## @qcode{"units"}: the units in which coordinates are interpreted.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
57 ## Its value may be one of @qcode{"centimeters"} |
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
58 ## @qcode{"characters"} | @qcode{"inches"} | @qcode{"@{normalized@}"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
59 ## | @qcode{"pixels"} | @qcode{"points"}.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
60 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
61 ## @item
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
62 ## @qcode{"position"}: a four elements vector [x0 y0 width height]
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
63 ## specifying the coordinates (x0,y0) of the origin of the annotation
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
64 ## object, its width and its height. The width and height may be
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
65 ## negative, depending on the orientation of the object.
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
66 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
67 ## @end itemize
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
68 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
69 ## Valid annotation types and their specific properties are described
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
70 ## below:
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
71 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
72 ## @table @asis
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
73 ## @item @qcode{"line"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
74 ## Constructs a line. @var{x} and @var{y} must be two
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
75 ## elements vectors specifying the x and y coordinates of the two
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
76 ## ends of the line.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
77 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
78 ## The line can be customized using @qcode{"linewidth"},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
79 ## @qcode{"linestyle"} and @qcode{"color"} properties the same way
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
80 ## as with @code{line} objects.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
81 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
82 ## @item @qcode{"arrow"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
83 ## Construct an arrow. The second point in vectors @var{x} and
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
84 ## @var{y} specifies the arrowhead coordinates.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
85 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
86 ## Besides line properties, the arrowhead can be customized using
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
87 ## @qcode{"headlength"}, @qcode{"headwidth"} and @qcode{"headstyle"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
88 ## properties. Supported values for @qcode{"headstyle"} property are:
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
89 ## [@qcode{"diamond"} | @qcode{"ellipse"} | @qcode{"plain"} |
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
90 ## @qcode{"rectangle"} | @qcode{"vback1"} | @qcode{"@{vback2@}"} |
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
91 ## @qcode{"vback3"}]
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
92 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
93 ## @item @qcode{"doublearrow"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
94 ## Construct a double arrow. Vectors @var{x} and @var{y} specify the
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
95 ## arrowheads coordinates.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
96 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
97 ## The line and the arrowhead can be customized as for arrow
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
98 ## annotations but some property names are duplicated:
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
99 ## @qcode{"head1length"}/@qcode{"head2length"},
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
100 ## @qcode{"head1width"}/@qcode{"head2width"}, etc. The index 1 marks
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
101 ## the properties of the arrowhead at the first point in @var{x} and
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
102 ## @var{y} coordinates.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
103 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
104 ## @item @qcode{"textarrow"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
105 ## Construct an arrow with a text label at the opposite of the
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
106 ## arrowhead.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
107 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
108 ## The line and the arrowhead can be customized as for arrow
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
109 ## annotations, and the text can be customized using the same
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
110 ## properties as @code{text} graphics objects. Note however
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
111 ## that some text property names are prefixed with "text" to
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
112 ## distinguish arrow and text properties:
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
113 ## @qcode{"textbackgroundcolor"}, @qcode{"textcolor"},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
114 ## @qcode{"textedgecolor"}, @qcode{"textlinewidth"},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
115 ## @qcode{"textmargin"}, @qcode{"textrotation"}.
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
116 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
117 ## @item @qcode{"textbox"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
118 ## Construct a box with a text inside. @var{pos} specifies the
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
119 ## @qcode{"position"} property of the annotation.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
120 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
121 ## You may use @qcode{"backgroundcolor"}, @qcode{"edgecolor"},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
122 ## @qcode{"linestyle"} , @qcode{"linewidth"} properties to customize
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
123 ## the box background color and edges appearance. A limited set of
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
124 ## @code{text} objects properties is also available: besides
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
125 ## @qcode{"font@dots{}"} properties, you may also use
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
126 ## @qcode{"horizontalalignment"} and @qcode{"verticalalignment"} to
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
127 ## move the text inside the box.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
128 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
129 ## Finally the @qcode{"fitboxtotext"} property controls the actual
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
130 ## extent of the box. If @qcode{"on"} (the default) the
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
131 ## box limits are fitted to the text extent.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
132 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
133 ## @item @qcode{"rectangle"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
134 ## Construct a rectangle. @var{pos} specifies the
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
135 ## @qcode{"position"} property of the annotation.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
136 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
137 ## You may use @qcode{"facecolor"}, @qcode{"color"},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
138 ## @qcode{"linestyle"} and @qcode{"linewidth"} properties to customize
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
139 ## the rectangle background color and edges appearance.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
140 ##
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
141 ## @item @qcode{"ellipse"}
19829
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19775
diff changeset
142 ## Construct an ellipse. @var{pos} specifies the
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
143 ## @qcode{"position"} property of the annotation.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
144 ##
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
145 ## See @qcode{"rectangle"} annotations for customization.
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
146 ## @end table
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
147 ##
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
148 ## @seealso{xlabel, title}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
149 ## @end deftypefn
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
150
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
151 function varargout = annotation (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
152
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
153 objtype = "";
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
154 hf = [];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
155 lims = [];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
156 x = y = [];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
157 opts = {};
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
158
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
159 nargin = numel (varargin);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
160 if (nargin == 0)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
161 print_usage ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
162 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
163
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
164
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
165 ## Parent figure
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
166 if (isfigure (varargin{1}))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
167 hf = varargin{1};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
168 varargin = varargin(2:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
169 nargin --;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
170 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
171
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
172 ## Annotation type
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
173 types = {"line", "arrow", "doublearrow", "textarrow", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
174 "textbox", "ellipse", "rectangle"};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
175 if (ischar (varargin{1}))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
176 objtype = varargin{1};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
177 varargin(1) = [];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
178 nargin --;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
179 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
180 print_usage ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
181 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
182
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
183 switch (objtype)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
184 case types(1:4)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
185
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
186 if (nargin == 0)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
187 lims = [];
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
188 elseif (nargin >= 2)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
189 x = varargin{1};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
190 y = varargin{2};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
191 varargin(1:2) = [];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
192
19899
e9f89866074c maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 19885
diff changeset
193 if (isnumeric (x) && isnumeric (y)
e9f89866074c maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 19885
diff changeset
194 && length (x) == 2 && length (y) == 2)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
195 lims = [x(1) y(1) diff(x) diff(y)];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
196 else
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
197 error ("annotation: expect 2 elements vectors for X and Y");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
198 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
199 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
200 print_usage ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
201 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
202 case types(5:end)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
203 if (nargin == 0)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
204 lims = [];
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
205 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
206 lims = varargin{1};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
207 varargin(1) = [];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
208
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
209 if (! isvector (lims) || length (lims) != 4)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
210 error ("annotation: expect 4 elements vector for POS")
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
211 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
212 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
213 otherwise
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
214 error ("annotation: unknown annotation type %s", objtype)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
215 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
216
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
217 ## options
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
218 opts = varargin;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
219 nopts = numel (opts);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
220 if (! isempty (opts))
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
221 if (fix (nopts/2) != nopts/2
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
222 || ! all (cellfun (@ischar, opts(1:2:end))))
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
223 warning ("annotation: couldn't parse PROP/VAL pairs, skipping");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
224 opts = {};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
225 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
226 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
227
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
228 ## create annotation
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
229 showhidden = get (0, "showhiddenhandles");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
230 set (0, "showhiddenhandles", "on");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
231
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
232 unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
233 if (isempty (hf))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
234 hf = gcf ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
235 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
236
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
237 ## Axes
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
238 hca = get (hf, "currentaxes");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
239
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
240 hax = findall (hf, "-depth", 1, "tag", "scribeoverlay");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
241 if (isempty (hax))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
242 hax = buildoverlay (hf);
19854
4569903d6c5a axes.m: reworks axes restacking for ML compatibility (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19831
diff changeset
243 else
4569903d6c5a axes.m: reworks axes restacking for ML compatibility (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19831
diff changeset
244 ## Make sure the annotations are on top of other axes
4569903d6c5a axes.m: reworks axes restacking for ML compatibility (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19831
diff changeset
245 axes (hax);
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
246 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
247
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
248 ## Build annotation
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
249 htmp = buildannot (hax, objtype, lims);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
250
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
251 ## Set user defined properties
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
252 if (! isempty (opts))
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
253 set (htmp, opts{:});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
254 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
255
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
256 unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
257 set (0, "showhiddenhandles", showhidden);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
258 set (hf, "currentaxes", hca);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
259 end_unwind_protect
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
260
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
261 if (nargout != 0)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
262 varargout{1} = htmp;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
263 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
264
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
265 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
266
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
267 function hax = buildoverlay (hf)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
268
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
269 hax = axes ("parent", hf, "position", [0 0 1 1], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
270 "visible", "off","tag", "scribeoverlay", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
271 "xlim", [0 1], "ylim", [0 1], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
272 "handlevisibility", "off");
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
273
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
274 ## hidden property to store figure size in absolute (points)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
275 ## coordinates
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
276 addproperty ("figsize_points", hax, "axesxmtick", []);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
277 update_figsize_points (hf, {}, hax);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
278
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
279
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
280 listener = {@update_figsize_points, hax};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
281 addlistener (hf, "position", listener);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
282
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
283 delfcn = @() dellistener (hf, "position", listener);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
284 set (hax, "deletefcn", delfcn);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
285
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
286 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
287
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
288 function update_figsize_points (hf, dummy, hax)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
289
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
290 persistent recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
291 if (! recursive)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
292 recursive = true;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
293 units = get (hf, "units");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
294 set (hf, "units", "points");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
295 pos = get (hf, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
296 set (hf, "units", units);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
297
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
298 set (hax, "figsize_points", pos(3:4));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
299 recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
300 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
301
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
302 endfunction
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
303
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
304 function h = buildannot (hax, objtype, pos)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
305
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
306 ## Base hggroup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
307 h = hggroup ("parent", hax);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
308
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
309 ## Base context menu
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
310 hui = uicontextmenu (get (hax, "parent"));
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
311
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
312 ## Add common properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
313 if (strcmp (graphics_toolkit (), "gnuplot"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
314 ## FIXME: this is a workaround for bug #39394 (gnuplot toolkit)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
315 defprops = {"position", "axesposition", [0.3 0.3 0.1 0.1], ...
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
316 "units", "textunits", "data"};
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
317 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
318 defprops = {"position", "axesposition", [0.3 0.3 0.1 0.1], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
319 "units", "axesunits", "normalized"};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
320 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
321 addbaseprops (h, defprops);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
322 setappdata (h, "__former_units__", "normalized");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
323
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
324 ## Add common menus
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
325 prop = "units";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
326 vals = set (h, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
327 addbasemenu (hui, h, prop, vals, "Units");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
328
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
329 ## Common updaters
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
330 listener = {@update_position, h, true};
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
331
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
332 addlistener (hax, "figsize_points", listener);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
333
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
334 delfcn = @() dellistener (hax, "figsize_points", listener);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
335 set (h, "deletefcn", delfcn);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
336
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
337 addlistener (h, "units", {@update_position, h});
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
338
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
339 ## Now work with normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
340 if (! isempty (pos))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
341 set (h, "position", pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
342 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
343 pos = getnormpos (h);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
344
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
345 ## Build annotation object and its specific properties/updaters
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
346 switch (objtype)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
347 case {"line", "arrow", "doublearrow", "textarrow"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
348 ## Add properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
349 proptable = lineprops ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
350 if (strcmp (objtype, "arrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
351 proptable = [proptable arrowprops()];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
352 elseif (strcmp (objtype, "doublearrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
353 proptable = [proptable dblarrowprops()];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
354 elseif (strcmp (objtype, "textarrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
355 proptable = [proptable arrowprops()];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
356 proptable = [proptable textprops()];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
357 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
358
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
359 addbaseprops (h, proptable);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
360
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
361 ## create line
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
362 hli = line ([pos(1); (pos(1) + pos(3))],
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
363 [pos(2); (pos(2) + pos(4))],
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
364 "parent", h, "color", get (h, "color"),
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
365 "linestyle", get (h, "linestyle"),
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
366 "linewidth", get (h, "linewidth"));
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
367
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
368 linemenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
369 set (hli, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
370
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
371 ## create patch(s) and text
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
372 if (strcmp (objtype, "arrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
373 [x, y] = arrowcoordinates (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
374 hpa = patch (x, y, get (h, "color"), "parent", h,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
375 "edgecolor", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
376 update_arrow (h, {}, "position", hpa);
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
377
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
378 arrowmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
379 set (hpa, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
380
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
381 elseif (strcmp (objtype, "doublearrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
382 [x, y] = arrowcoordinates (h, 1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
383 hpa = patch (x, y, get (h, "color"), "parent", h,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
384 "edgecolor", get (h, "color"));
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
385
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
386 [x, y] = arrowcoordinates (h, 2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
387 hpa(2) = patch (x, y, get (h, "color"), "parent", h,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
388 "edgecolor", get (h, "color"));
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
389
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
390 update_arrow (h, {}, "position", hpa);
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
391
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
392 dblarrowmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
393 set (hpa, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
394
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
395 elseif (strcmp (objtype, "textarrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
396 [x, y] = arrowcoordinates (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
397 hpa = patch (x, y, get (h, "color"), "parent", h,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
398 "edgecolor", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
399 update_arrow (h, {}, "position", hpa);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
400
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
401 hte = text (get (h, "position")(1), ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
402 get (h, "position")(2), ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
403 get (h, "string"), "parent", h, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
404 "color", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
405 propnames = textprops ("names");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
406 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
407 update_text (h, {}, propnames{ii}, hte);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
408 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
409 update_text (h, {}, "position", hte);
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
410
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
411 arrowmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
412 textmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
413 set (hpa, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
414 set (hte, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
415
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
416 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
417
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
418 ## updaters
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
419 addlistener (h, "color", {@update_line, "color", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
420 addlistener (h, "linestyle", {@update_line, "linestyle", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
421 addlistener (h, "linewidth", {@update_line, "linewidth", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
422 addlistener (h, "x", {@update_line, "x", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
423 addlistener (h, "y", {@update_line, "y", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
424 addlistener (h, "position", {@update_line, "position", hli});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
425
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
426 if (strcmp (objtype, "arrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
427 addlistener (h, "position", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
428 addlistener (h, "headwidth", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
429 addlistener (h, "headstyle", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
430 addlistener (h, "headlength", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
431 addlistener (h, "color", {@update_arrow, "color", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
432 elseif (strcmp (objtype, "doublearrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
433 addlistener (h, "position", {@update_arrow, "position", hpa});
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
434 addlistener (h, "head1width",
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
435 {@update_arrow, "position", [hpa(1) 0]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
436 addlistener (h, "head2width",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
437 {@update_arrow, "position", [0 hpa(2)]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
438 addlistener (h, "head1style",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
439 {@update_arrow, "position", [hpa(1) 0]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
440 addlistener (h, "head2style",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
441 {@update_arrow, "position", [0 hpa(2)]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
442 addlistener (h, "head1length",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
443 {@update_arrow, "position", [hpa(1) 0]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
444 addlistener (h, "head2length",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
445 {@update_arrow, "position", [0 hpa(2)]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
446 addlistener (h, "color",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
447 {@update_arrow, "color", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
448 elseif (strcmp (objtype, "textarrow"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
449 addlistener (h, "position", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
450 addlistener (h, "headwidth", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
451 addlistener (h, "headstyle", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
452 addlistener (h, "headlength", {@update_arrow, "position", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
453 addlistener (h, "color", {@update_arrow, "color", hpa});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
454 propnames = textprops ("names");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
455 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
456 addlistener (h, propnames{ii},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
457 {@update_text, propnames{ii}, hte});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
458 if (any (strcmp (propnames{ii},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
459 {"fontangle", "fontname", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
460 "fontsize", "fontweight", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
461 "horizontalalignment", "string", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
462 "textmargin", "textrotation", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
463 "verticalalignment"})))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
464 addlistener (h, propnames{ii}, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
465 {@update_text, "position", hte});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
466 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
467 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
468 addlistener (h, "position", {@update_text, "position", hte});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
469 addlistener (h, "color", {@update_text, "color", hte});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
470 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
471
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
472 case {"rectangle", "ellipse"}
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
473
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
474 ## Add properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
475 addbaseprops (h, rectprops ());
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
476
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
477 ## Create rectangle/ellipse
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
478 if (strcmp (objtype, "rectangle"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
479 [x, y] = pos2rect (pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
480 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
481 [x, y] = pos2ell (pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
482 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
483
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
484 hr = patch (x, y, "parent", h);
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
485
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
486 propnames = rectprops ("names");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
487 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
488 update_rect (h, {}, propnames{ii}, hr, objtype);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
489 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
490
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
491 rectmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
492 set (hr, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
493
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
494 ## Updaters
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
495 addlistener (h, "position", {@update_rect, "position", hr, objtype});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
496 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
497 addlistener (h, propnames{ii},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
498 {@update_rect, propnames{ii}, hr, objtype});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
499 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
500
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
501 case "textbox"
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
502
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
503 ## Add properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
504 addbaseprops (h, textboxprops());
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
505
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
506 ## Create textbox
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
507 hpa = patch ("parent", h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
508 hte = text (pos(1), pos(2), get (h, "string"), "parent", h, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
509 "color", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
510 update_textbox (h, {}, "position", [hte hpa]);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
511
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
512 propnames = textboxprops ("names");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
513 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
514 update_textbox (h, {}, propnames{ii}, [hte hpa]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
515 endfor
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
516
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
517 textboxmenu (hui, h);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
518 set (hpa, "uicontextmenu", hui);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
519 set (hte, "uicontextmenu", hui);
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
520
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
521 ## Updaters
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
522 addlistener (h, "position", {@update_textbox, "position", [hte hpa]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
523 for ii = 1:numel (propnames)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
524 addlistener (h, propnames{ii},
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
525 {@update_textbox, propnames{ii}, [hte hpa]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
526 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
527 addlistener (h, "horizontalalignment",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
528 {@update_textbox, "position", [hte hpa]});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
529 addlistener (h, "verticalalignment",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
530 {@update_textbox, "position", [hte hpa]});
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
531
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
532 endswitch
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
533
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
534 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
535
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
536 function props = lineprops (varargin)
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
537 ## FIXME: Use "axesx(y)lim" instead of "linex(y)data"
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
538 props = {"color", "color", [0 0 0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
539 "linestyle", "linelinestyle", "-", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
540 "linewidth", "linelinewidth", 0.5, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
541 "x", "linexdata", [0.3 0.4], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
542 "y", "lineydata", [0.3 0.4]};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
543 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
544 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
545 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
546 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
547
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
548 function col = basecolors ()
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
549 col = {"blue", "black", "cyan", "green", "magenta", "red", ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
550 "white", "yellow", "none"};
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
551 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
552
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
553 function linemenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
554 hm = uimenu ("parent", hui, "label", "Line");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
555
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
556 ## Color
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
557 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
558 addbasemenu (hm, hpar, "Color", vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
559
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
560
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
561 ## Linestyle
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
562 vals = set (hpar, "linestyle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
563 addbasemenu (hm, hpar, "Linestyle", vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
564
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
565 ## Linewidth
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
566 vals = [0.5 1 1.5 2];
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
567 addbasemenu (hm, hpar, "Linewidth", vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
568 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
569
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
570 function props = arrowprops (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
571 props = {"headlength", "data", 10, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
572 "headstyle", "radio", "diamond|ellipse|none|plain|rectangle|vback1|{vback2}|vback3", ...
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
573 "headwidth", "data", 10};
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
574 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
575 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
576 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
577 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
578
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
579 function arrowmenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
580 hm = uimenu ("parent", hui, "label", "Arrowhead");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
581
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
582 ## Headlength/width
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
583 vals = 6:2:16;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
584 addbasemenu (hm, hpar, "headlength", vals, "Length");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
585 addbasemenu (hm, hpar, "headwidth", vals, "Width");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
586
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
587 ## Headstyle
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
588 vals = set (hpar, "headstyle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
589 addbasemenu (hm, hpar, "Headstyle", vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
590 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
591
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
592 function props = dblarrowprops (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
593 props = {"head1length", "data", 10, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
594 "head1style", "radio", "diamond|ellipse|none|plain|rectangle|vback1|{vback2}|vback3", ...
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
595 "head1width", "data", 10, ...
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
596 "head2length", "data", 10, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
597 "head2style", "radio", "diamond|ellipse|none|plain|rectangle|vback1|{vback2}|vback3", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
598 "head2width", "data", 10};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
599 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
600 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
601 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
602 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
603
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
604 function dblarrowmenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
605 hm1 = uimenu ("parent", hui, "label", "Arrowhead #1");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
606 hm2 = uimenu ("parent", hui, "label", "Arrowhead #2");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
607
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
608 ## Headlength/width
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
609 vals = 6:2:16;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
610 addbasemenu (hm1, hpar, "head1length", vals, "Length");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
611 addbasemenu (hm1, hpar, "head1width", vals, "Width");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
612 addbasemenu (hm2, hpar, "head2length", vals, "Length");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
613 addbasemenu (hm2, hpar, "head2width", vals, "Width");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
614
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
615 ## Headstyle
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
616 vals = set (hpar, "head1style");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
617 addbasemenu (hm1, hpar, "head1style", vals, "Headstyle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
618 addbasemenu (hm2, hpar, "head2style", vals, "Headstyle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
619 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
620
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
621 function props = textprops (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
622 props = {"fontangle", "textfontangle", "normal", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
623 "fontname", "textfontname", "Helvetica", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
624 "fontsize", "textfontsize", 10, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
625 "fontunits", "textfontunits", "points", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
626 "fontweight", "textfontweight", "normal", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
627 "horizontalalignment", "texthorizontalalignment", "left", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
628 "interpreter", "textinterpreter", "tex", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
629 "string", "textstring", "", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
630 "textbackgroundcolor", "textbackgroundcolor", "none", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
631 "textcolor", "textcolor", "k", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
632 "textedgecolor", "textedgecolor", "none", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
633 "textlinewidth", "textlinewidth",0.5, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
634 "textmargin", "textmargin", 5, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
635 "textrotation", "textrotation", 0, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
636 "verticalalignment", "textverticalalignment", "middle"};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
637 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
638 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
639 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
640 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
641
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
642 function stringdlg (hpar, prop)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
643 def = get (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
644 if (iscell (def))
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
645 prompt = arrayfun (@(n) sprintf ("Line #%d:", n), 1:numel (def),
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
646 "uniformoutput", false);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
647 else
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
648 prompt = "";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
649 def = {def};
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
650 endif
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
651
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
652 cstr = inputdlg (prompt, prop, 1, def);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
653
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
654 if (! isempty (cstr))
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
655 set (hpar, prop, cstr)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
656 endif
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
657 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
658
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
659 function textmenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
660 hm = uimenu ("parent", hui, "label", "Text");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
661
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
662 ## String;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
663 prop = "String";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
664 fcn = @() stringdlg (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
665 uimenu (hm, "label", prop, "callback", fcn);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
666
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
667 ## Font properties
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
668 prop = "textcolor";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
669 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
670 addbasemenu (hm, hpar, prop, vals, "Color");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
671 prop = "fontsize";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
672 vals = 8:2:20;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
673 addbasemenu (hm, hpar, prop, vals, "Size");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
674 prop = "fontangle";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
675 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
676 addbasemenu (hm, hpar, prop, vals, "Angle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
677 prop = "fontweight";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
678 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
679 addbasemenu (hm, hpar, prop, vals, "Weight");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
680 prop = "textrotation";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
681 vals = 0:90:270;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
682 addbasemenu (hm, hpar, prop, vals, "Rotation");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
683
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
684 prop = "horizontalalignment";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
685 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
686 addbasemenu (hm, hpar, prop, vals, "Horizontal Alignment", ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
687 "separator", "on");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
688 prop = "verticalalignment";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
689 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
690 addbasemenu (hm, hpar, prop, vals, "Vertical Alignment");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
691
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
692 ## FIXME: Add text background properties when they are supported
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
693
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
694 prop = "interpreter";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
695 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
696 addbasemenu (hm, hpar, prop, vals, "Interpreter", ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
697 "separator", "on");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
698
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
699 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
700
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
701 function props = textboxprops (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
702 props = {"backgroundcolor", "patchfacecolor", "none", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
703 "color", "textcolor", [0 0 0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
704 "edgecolor", "patchedgecolor", [0 0 0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
705 "facealpha", "patchfacealpha", 1, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
706 "fontangle", "textfontangle", "normal", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
707 "fontname", "textfontname", "Helvetica", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
708 "fontsize", "textfontsize", 10, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
709 "fontunits", "textfontunits", "points", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
710 "fontweight", "textfontweight", "normal", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
711 "horizontalalignment", "texthorizontalalignment", "left", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
712 "interpreter", "textinterpreter", "tex", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
713 "linestyle", "linelinestyle", "-", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
714 "linewidth", "linelinewidth", 0.5, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
715 "string", "textstring", "", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
716 "fitboxtotext", "radio","{on}|off", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
717 "margin", "data", 5, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
718 "verticalalignment", "textverticalalignment", "middle"};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
719 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
720 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
721 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
722 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
723
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
724 function textboxmenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
725 ## Text properties
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
726 hm1 = uimenu ("parent", hui, "label", "Text");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
727
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
728 prop = "String";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
729 fcn = @() stringdlg (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
730 uimenu (hm1, "label", prop, "callback", fcn);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
731
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
732 prop = "Color";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
733 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
734 addbasemenu (hm1, hpar, prop, vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
735 prop = "fontsize";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
736 vals = 8:2:20;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
737 addbasemenu (hm1, hpar, prop, vals, "Size");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
738 prop = "fontangle";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
739 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
740 addbasemenu (hm1, hpar, prop, vals, "Angle");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
741 prop = "fontweight";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
742 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
743 addbasemenu (hm1, hpar, prop, vals, "Weight");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
744
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
745 prop = "horizontalalignment";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
746 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
747 addbasemenu (hm1, hpar, prop, vals, "Horizontal Alignment", ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
748 "separator", "on");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
749 prop = "verticalalignment";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
750 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
751 addbasemenu (hm1, hpar, prop, vals, "Vertical Alignment");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
752 prop = "Margin";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
753 vals = 2:2:10;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
754 addbasemenu (hm1, hpar, prop, vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
755
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
756 prop = "interpreter";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
757 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
758 addbasemenu (hm1, hpar, prop, vals, "Interpreter", ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
759 "separator", "on");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
760
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
761 ## Background properties
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
762 hm2 = uimenu ("parent", hui, "label", "Background");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
763
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
764 prop = "fitboxtotext";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
765 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
766 addbasemenu (hm2, hpar, prop, vals, "Fit box to text");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
767 prop = "backgroundcolor";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
768 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
769 addbasemenu (hm2, hpar, prop, vals, "Face Color");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
770 prop = "edgecolor";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
771 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
772 addbasemenu (hm2, hpar, prop, vals, "Edge Color");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
773 prop = "linestyle";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
774 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
775 addbasemenu (hm2, hpar, prop, vals, "Line Style");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
776 prop = "linewidth";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
777 vals = 0.5:.5:2;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
778 addbasemenu (hm2, hpar, prop, vals, "Line Width");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
779 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
780
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
781 function props = rectprops (varargin)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
782 props = {"edgecolor", "patchedgecolor", "k", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
783 "facealpha", "patchfacealpha", 1, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
784 "facecolor", "patchfacecolor", "none", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
785 "linestyle", "patchlinestyle", "-", ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
786 "linewidth", "patchlinewidth", 0.5};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
787 if (strcmp (varargin, "names"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
788 props = props(1:3:end);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
789 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
790 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
791
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
792 function rectmenu (hui, hpar)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
793 prop = "facecolor";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
794 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
795 addbasemenu (hui, hpar, prop, vals, "Face Color");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
796 prop = "edgecolor";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
797 vals = basecolors ();
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
798 addbasemenu (hui, hpar, prop, vals, "Edge Color");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
799 prop = "linestyle";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
800 vals = set (hpar, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
801 addbasemenu (hui, hpar, prop, vals, "Line Style");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
802 prop = "linewidth";
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
803 vals = 0.5:.5:2;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
804 addbasemenu (hui, hpar, prop, vals, "Line Width");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
805 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
806
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
807 function addbaseprops (h, proptable)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
808 cellfun (@(pname, ptype, parg) addproperty (pname, h, ptype, parg),
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
809 proptable(1:3:end), proptable(2:3:end), proptable(3:3:end));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
810 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
811
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
812 function addbasemenu (hm, hpar, pname, vals, mainlabel = "" )
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
813 if (isempty (mainlabel))
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
814 mainlabel = pname;
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
815 endif
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
816
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
817 h = uimenu ("parent", hm, "label", mainlabel);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
818
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
819 is_numeric = ! iscell (vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
820 nv = numel (vals);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
821 htmp = zeros (1, nv);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
822 for ii = 1:nv
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
823 if (! is_numeric)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
824 val = label = vals{ii};
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
825 else
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
826 val = vals(ii);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
827 label = num2str (val);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
828 endif
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
829
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
830 fcn = @() set (hpar, pname, val);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
831 htmp(ii) = uimenu (h, "label", label, "callback", fcn);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
832 endfor
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
833 handle_check (hpar, {}, htmp, pname, is_numeric);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
834 addlistener (hpar, pname, {@handle_check, htmp, pname, is_numeric})
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
835 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
836
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
837 function handle_check (h, dummy, hmenus, prop, is_numeric)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
838 vals = get (hmenus, "label");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
839 current = get (h, prop);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
840 if (is_numeric)
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
841 current = num2str (current);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
842 endif
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
843
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
844 idx = strcmp (vals, current);
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
845 set (hmenus(idx), "checked", "on");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
846 set (hmenus(! idx), "checked", "off");
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
847 endfunction
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
848
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
849 function update_position (h1, dummy, h, force = false)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
850 if (! force)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
851 pos = convertposition (h, getappdata (h, "__former_units__"),
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
852 get (h, "units"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
853 setappdata (h, "__former_units__", get (h, "units"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
854 set (h, "position", pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
855 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
856 ## FIXME: Inefficient trick to force all objects to be redrawn
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
857 set (h, "position", [0 0 .5 .5],
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
858 "position", get (h, "position"));
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
859 endif
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
860 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
861
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
862
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
863 function update_line (h, dummy, prop, hli)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
864 persistent recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
865 if (! recursive)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
866 switch (prop)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
867 case "color"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
868 set (hli, "color", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
869 case "linestyle"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
870 set (hli, "linestyle", get (h, "linestyle"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
871 case "linewidth"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
872 set (hli, "linewidth", get (h, "linewidth"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
873 case "x"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
874 ## Update position
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
875 x = get (h, "x");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
876 pos = get (h, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
877 pos(1) = x(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
878 pos(3) = diff (x);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
879 recursive = true;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
880 set (h, "position", pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
881 recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
882
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
883 ## Draw in normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
884 pos = getnormpos (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
885 x = [pos(1) (pos(1) + pos(3))];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
886 set (hli, "xdata", x);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
887
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
888 case "y"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
889 ## Update position
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
890 y = get (h, "y");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
891 pos = get (h, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
892 pos(2) = y(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
893 pos(4) = diff (y);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
894 recursive = true;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
895 set (h, "position", pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
896 recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
897
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
898 ## Draw in normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
899 pos = getnormpos (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
900 y = [pos(2) (pos(2) + pos(4))];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
901 set (hli, "ydata", y);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
902 case "position"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
903 ## Update x and y
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
904 pos = get (h, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
905 x = [pos(1) (pos(1) + pos(3))];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
906 y = [pos(2) (pos(2) + pos(4))];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
907
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
908 recursive = true;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
909 set (h, "x", x);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
910 set (h, "y", y);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
911 recursive = false;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
912
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
913 ## Draw in normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
914 pos = getnormpos (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
915 x = [pos(1) (pos(1) + pos(3))];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
916 y = [pos(2) (pos(2) + pos(4))];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
917 set (hli, "xdata", x);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
918 set (hli, "ydata", y);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
919
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
920 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
921 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
922 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
923
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
924 function [x, y] = arrowcoordinates (h, nar = [])
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
925 pos = getnormpos (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
926 ppos = norm2pts (h, pos(3:4).');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
927 ang = angle (complex (ppos(1), ppos(2)));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
928
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
929 if (isempty (nar))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
930 ln = get (h, "headlength"); # in points
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
931 wd = get (h, "headwidth");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
932 headstyle = get (h, "headstyle");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
933 pos = pos(1:2) .+ pos(3:4);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
934 elseif (nar == 1)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
935 ln = get (h, "head1length"); # in points
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
936 wd = get (h, "head1width");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
937 headstyle = get (h, "head1style");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
938 pos = pos(1:2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
939 ang += pi;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
940 elseif (nar == 2)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
941 ln = get (h, "head2length"); # in points
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
942 wd = get (h, "head2width");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
943 headstyle = get (h, "head2style");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
944 pos = pos(1:2) .+ pos(3:4);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
945 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
946 error ("annotation: %d, no such arrow number")
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
947 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
948
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
949 switch (headstyle)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
950 case "diamond"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
951 x = [0 -ln/2 -ln -ln/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
952 y = [0 -wd/2 0 wd/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
953 case "ellipse"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
954 pts = linspace (0, 2*pi, 12);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
955 x = ln/2 * (cos (pts) - 1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
956 y = wd/2 * sin (pts);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
957 case "rectangle"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
958 x = [0 0 -ln -ln 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
959 y = [wd/2 -wd/2 -wd/2 wd/2 wd/2];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
960 case "vback1"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
961 x = [0 -ln -0.85*ln -ln 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
962 y = [0 wd/2 0 -wd/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
963 case "vback2"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
964 x = [0 -ln -0.65*ln -ln 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
965 y = [0 wd/2 0 -wd/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
966 case "vback3"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
967 x = [0 -ln -0.2*ln -ln 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
968 y = [0 wd/2 0 -wd/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
969 case "plain"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
970 x = [0 -ln -ln -ln 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
971 y = [0 wd/2 0 -wd/2 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
972 case "none"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
973 x = [0 0 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
974 y = [0 0 0];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
975 otherwise
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
976 error ("annotation: \"%s\" headstyle not implemented", headstyle)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
977 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
978
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
979 R = [cos(ang) -sin(ang);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
980 sin(ang) cos(ang)];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
981 XY = R * [x; y];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
982 XY = pts2norm (h, XY);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
983 XY = pos(1:2).' .+ XY;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
984
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
985 x = XY(1,:).';
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
986 y = XY(2,:).';
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
987 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
988
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
989 function update_arrow (h, dummy, prop, hpa = [])
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
990 persistent recursive = false;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
991
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
992 nar = [];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
993 for ii = 1:numel (hpa)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
994 if (numel (hpa) == 2)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
995 nar = ii;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
996 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
997 if (hpa(ii))
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
998 switch (prop)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
999 case "position"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1000 [x, y] = arrowcoordinates (h, nar);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1001 set (hpa(ii), "xdata", x, "ydata", y);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1002 case "color"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1003 set (hpa(ii), "facecolor", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1004 set (hpa(ii), "edgecolor", get (h, "color"));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1005 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1006 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1007 endfor
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1008 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1009
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1010 function update_text (h, dummy, prop, hte)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1011 persistent recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1012
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1013 if (! recursive)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1014 switch (prop)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1015 case "position"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1016 if (isempty (get (h, "string")))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1017 return
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1018 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1019
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1020 pos = getnormpos (h);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1021
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1022 set (hte, "position", [textcoordinates(hte, pos) 0]);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1023
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1024 otherwise
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1025 if (strncmp (prop, "text", 4))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1026 set (hte, prop(5:end), get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1027 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1028 set (hte, prop, get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1029 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1030 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1031 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1032 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1033
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1034 function update_textbox (h, dummy, prop, htb)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1035 persistent recursive = false;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1036
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1037 hte = htb(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1038 hpa = htb(2);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1039
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1040 if (! recursive)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1041 switch (prop)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1042 case {"edgecolor", "facealpha",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1043 "linestyle", "linewidth"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1044 set (hpa, prop, get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1045 case {"backgroundcolor"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1046 set (hpa, "facecolor", get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1047 otherwise
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1048 if (! any (strcmp (prop, {"fitboxtotext", "position"})))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1049 set (hte, prop, get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1050 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1051
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1052 pos = getnormpos (h);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1053
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1054 if (strcmp (get (h, "fitboxtotext"), "on"))
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
1055 pos(3:4) = get (hte, "extent")(3:4) .* sign (pos(3:4));
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1056 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1057
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1058 [x, y] = pos2rect (pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1059 set (hpa, "xdata", x', "ydata", y');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1060
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1061 switch (get (h, "horizontalalignment"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1062 case "left"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1063 x = x(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1064 case "center"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1065 x = mean (x(1:2));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1066 case "right"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1067 x = x(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1068 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1069
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1070 switch (get (h, "verticalalignment"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1071 case {"top", "cap"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1072 y = y(3);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1073 case "middle"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1074 y = mean (y(2:3));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1075 case {"bottom", "baseline"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1076 y = y(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1077 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1078 set (hte, "position", [x y 0]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1079 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1080 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1081
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1082 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1083
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1084 function XY = textcoordinates (hte, pos)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1085 ## Get the "tight" extent of the text object in points units
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1086 textpos = get(hte, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1087 rot = get (hte, "rotation");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1088 units = get (hte, "units");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1089
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1090 set (hte, "rotation", 0, "units", "points", "position", [0 0 0]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1091 ext = get (hte, "extent");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1092 set (hte, "rotation", rot, "units", units, "position", textpos);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1093
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1094 ## Find which one of the 8 following points we should align the
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1095 ## arrow with
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1096 ## 8-----7-----6
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1097 ## 1 text box 5
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1098 ## 2-----3-----4
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1099
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1100 ## FIXME: Matlab's horizontal/verticalalignment properties are
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1101 ## interpreted differently: horizontalalignment is passed to the
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1102 ## underlying text object whereas the verticalalignement controls
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1103 ## the vertical alignment of the arrow.
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1104
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1105 ang = angle (complex (pos(3), pos(4)));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1106 rot = rot / 180 * pi;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1107
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1108 [~, pt] = min (abs ((-pi:pi/4:pi) - ang));
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1109 pt -= floor (rot / (pi/4));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1110 if (pt <= 0)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1111 pt = rem (pt, 8) + 8;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1112 elseif (pt > 8)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1113 pt = rem (pt, 8);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1114 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1115
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1116 ## Compute the text actual "position" property
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1117 dx = ext(3)/2;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1118 dy = ext(4)/2;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1119 XY = [-dx -dx 0 dx dx dx 0 -dx;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1120 0 -dy -dy -dy 0 dy dy dy];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1121
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1122 switch (get (hte, "horizontalalignment"))
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1123 case "left"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1124 XY(1,:) += dx;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1125 case "right"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1126 XY(1,:) -= dx;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1127 endswitch
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1128
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1129 switch (get (hte, "verticalalignment"))
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1130 case {"baseline", "bottom"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1131 XY(2,:) += dy;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1132 case {"cap", "top"}
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1133 XY(2,:) -= dy;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1134 endswitch
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1135
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1136 R = [cos(rot) -sin(rot);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1137 sin(rot) cos(rot)];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1138 XY = R * XY;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1139 XY = pts2norm (get (hte, "parent"), XY);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1140 XY = pos(1:2) .- XY(:,pt).';
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1141
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1142 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1143
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1144 function nXY = pts2norm (h, pXY)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1145 sz = get (get (h,"parent"), "figsize_points");
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1146
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1147 nXY(1,:) = pXY(1,:) ./ sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1148 nXY(2,:) = pXY(2,:) ./ sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1149 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1150
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1151 function pXY = norm2pts (h, nXY)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1152 sz = get (get (h,"parent"), "figsize_points");
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1153
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1154 pXY(1,:) = nXY(1,:) .* sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1155 pXY(2,:) = nXY(2,:) .* sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1156 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1157
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1158 function pos = convertposition (h, from, to)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1159 ## FIXME: handle "characters" units
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1160 pos = get (h, "position");
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1161
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1162 ## First convert to normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1163 sz = get (get (h,"parent"), "figsize_points");
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1164 switch (from)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1165 case "centimeters"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1166 pos /= 2.54;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1167 pos *= 72;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1168 pos(1:2:end) /= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1169 pos(2:2:end) /= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1170 case "inches"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1171 pos *= 72;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1172 pos(1:2:end) /= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1173 pos(2:2:end) /= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1174 case "pixels"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1175 pos /= get (0, "screenpixelsperinch");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1176 pos *= 72;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1177 pos(1:2:end) /= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1178 pos(2:2:end) /= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1179 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1180
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1181 ## Then convert to requested coordinates
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1182 switch (to)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1183 case "centimeters"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1184 sz /= 72;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1185 sz *= 2.54;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1186 pos(1:2:end) *= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1187 pos(2:2:end) *= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1188 case "inches"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1189 sz /= 72;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1190 pos(1:2:end) *= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1191 pos(2:2:end) *= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1192 case "pixels"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1193 sz /= 72;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1194 sz *= get (0, "screenpixelsperinch");
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1195 pos(1:2:end) *= sz(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1196 pos(2:2:end) *= sz(2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1197 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1198
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1199 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1200
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1201 function pos = getnormpos (h)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1202 units = get (h, "units");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1203 pos = convertposition (h, units, "normalized");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1204 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1205
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1206 function [x, y] = pos2rect (pos)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1207 x = [pos(1) pos(1)+pos(3) pos(1)+pos(3) pos(1)];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1208 y = [pos(2) pos(2) pos(2)+pos(4) pos(2)+pos(4)];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1209 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1210
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1211 function [x, y] = pos2ell (pos)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1212 a = pos(3)/2;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1213 b = pos(4)/2;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1214
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1215 ## Arbitrarily use 100 points
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1216 ## when it is spread over
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1217 ang = linspace (0, 2*pi, 100);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1218
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1219 x = a * cos (ang);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1220 y = b * sin (ang);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1221
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1222 x += pos(1) + a;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1223 y += pos(2) + b;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1224 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1225
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1226 function update_rect (h, dummy, prop, hre, typ)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1227 persistent recursive = false;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1228
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1229 if (! recursive)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1230 switch (prop)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1231 case "position"
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1232 pos = getnormpos (h);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1233 if (strcmp (typ, "rectangle"))
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1234 [x, y] = pos2rect (pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1235 else
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1236 [x, y] = pos2ell (pos);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1237 endif
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1238
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1239 set (hre, "xdata", x, "ydata", y);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1240 otherwise
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1241 set (hre, prop, get (h, prop));
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1242 endswitch
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1243 endif
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1244 endfunction
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1245
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1246
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1247 ## FIXME: the additionnal regular axes is necessary for fltk to draw the
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1248 ## annotation axes.
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1249 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1250 %! clf; axes ('visible', 'off');
20141
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
1251 %! annotation ('textbox', [.25 .9 .5 .09], 'string', ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
1252 %! {'Right Click on annotation objects', ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
1253 %! 'to customize their appearance'}, ...
8eb72c4ed457 Add uicontextmenu to annotation objects
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19899
diff changeset
1254 %! 'horizontalalignment', 'center', 'fitboxtotext', 'off');
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1255 %! annotation ('ellipse', [.2 .2 .6 .6], 'linewidth', 4)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1256 %! ang = pi/2:-pi/2:-pi;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1257 %! lab = {'N', 'W', 'S', 'E'};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1258 %! x0 = 0.5;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1259 %! y0 = 0.5;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1260 %! r = 0.3;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1261 %! for ii = 1:4
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1262 %! x = r * cos (ang(ii)) + x0;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1263 %! y = r * sin (ang(ii)) + y0;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1264 %! annotation ('textarrow', [x x0], [y y0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1265 %! 'string', lab{ii}, 'fontsize', 20);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1266 %! end
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1267 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1268 %! h = annotation ('doublearrow', [x0 x0], [y0-r y0+r], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1269 %! 'head1style', 'diamond', 'head1length', 60, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1270 %! 'head2style', 'diamond', 'head2length', 60);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1271
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1272 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1273 %! clf; axes ('visible', 'off');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1274 %! plot (1:10);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1275 %! xlabel ('X-LABEL')
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1276 %! ylabel ('LARGE Y-LABEL', 'fontsize', 20)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1277 %! title ('FIGURE LAYOUT', 'fontsize', 24)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1278 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1279 %! ti = get (gca, 'tightinset');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1280 %! pos = get (gca, 'position');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1281 %! pos(1:2) = pos(1:2) - ti(1:2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1282 %! pos(3) = pos(3) + ti (1) + ti (3);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1283 %! pos(4) = pos(4) + ti (2) + ti (4);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1284 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1285 %! ht = annotation ('textbox', pos, 'string', ' Position + tighinset', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1286 %! 'fitboxtotext', 'off', 'linestyle', '--', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1287 %! 'edgecolor', 'g', 'linewidth', 3, 'color', 'g', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1288 %! 'verticalalignment', 'bottom', 'fontsize', 15);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1289 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1290 %! ho = annotation ('textbox', get (gca, 'outerposition'), ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1291 %! 'string', ' Outerposition','fitboxtotext', 'off', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1292 %! 'linestyle', '--', 'edgecolor', 'r', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1293 %! 'linewidth', 3, 'color', 'r', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1294 %! 'verticalalignment', 'bottom', 'fontsize', 15);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1295 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1296 %! hi = annotation ('textbox', get (gca, 'position'), ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1297 %! 'string', ' Position','fitboxtotext', 'off', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1298 %! 'linestyle', '--', 'edgecolor', 'b', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1299 %! 'linewidth', 3, 'color', 'b', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1300 %! 'verticalalignment', 'bottom', 'fontsize', 15);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1301
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1302 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1303 %! clf; axes ('visible', 'off');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1304 %! h = annotation ('arrow');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1305 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1306 %! %% Get allowed headstyles
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1307 %! styles = set (h, 'headstyle');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1308 %! delete (h)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1309 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1310 %! %% Textbox for the title
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1311 %! annotation ('textbox', [0.1 0 0.8 1], 'string', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1312 %! '"headstyle" property:', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1313 %! 'backgroundcolor', [0.7 0.7 0.7], 'fontsize', 20, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1314 %! 'fitboxtotext', 'off', 'verticalalignment', 'top', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1315 %! 'horizontalalignment', 'center');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1316 %!
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1317 %! %% Textarrows
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1318 %! ns = numel (styles);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1319 %! nrows = ceil (ns/2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1320 %! dy = 1/nrows;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1321 %! y = 1 - dy/2;
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1322 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1323 %! jj = 1;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1324 %! for ii = 1:nrows
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1325 %! annotation ('textarrow', [0.3 0.5], [y y], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1326 %! 'string', ['"' styles{jj} '"'], 'fontsize', 15, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1327 %! 'headstyle', styles{jj}, 'textcolor', 'b');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1328 %! jj = jj + 1;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1329 %! if (jj <= ns)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1330 %! annotation ('textarrow', [0.7 0.5], [y y], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1331 %! 'string', ['"' styles{jj} '"'], 'fontsize', 15, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1332 %! 'headstyle', styles{jj}, 'textcolor', 'b');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1333 %! jj = jj + 1;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1334 %! end
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1335 %! y = y - dy;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1336 %! end
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1337 %! annotation ('line', [0.5 0.5], [dy/2 1-dy/2], 'linestyle', '-.')
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1338
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1339 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1340 %! clf; axes ('visible', 'off');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1341 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1342 %! %% Textbox for the title
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1343 %! annotation ('textbox', [0.1 0 0.8 1], 'string', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1344 %! 'Text arrows: text rotation', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1345 %! 'backgroundcolor', [0.7 0.7 0.7], 'fontsize', 20, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1346 %! 'fitboxtotext', 'off', 'verticalalignment', 'top', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1347 %! 'horizontalalignment', 'center');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1348 %!
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1349 %! %% Textarrows
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1350 %! for ii = 1:10
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1351 %! rot = floor (rand (1) * 360 / 90) * 90;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1352 %! annotation ('textarrow', 0.5 + [(0.6 * (rand(1) - .5)) 0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1353 %! 0.5 + [(0.6 * (rand(1) - .5)) 0], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1354 %! 'string', 'A text', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1355 %! 'headstyle', 'none', 'textrotation', rot);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1356 %! end
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1357
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1358 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1359 %! clf; axes ('visible', 'off');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1360 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1361 %! %% Textbox for the title
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1362 %! annotation ('textbox', [0.1 0 0.8 1], 'string', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1363 %! 'Text arrows: text alignment', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1364 %! 'backgroundcolor', [0.7 0.7 0.7], 'fontsize', 20, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1365 %! 'fitboxtotext', 'off', 'verticalalignment', 'top', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1366 %! 'horizontalalignment', 'center');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1367 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1368 %! %% Textarrows
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1369 %! halig = {'right', 'center', 'left'};
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1370 %! ii = 1;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1371 %! for x = .3:.2:.7
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1372 %! annotation ('textarrow', [x .5], [.5 .9], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1373 %! 'string', {'Multiple lines', 'text'}, ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1374 %! 'headstyle', 'none', 'horizontalalignment', halig{ii});
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1375 %! ii = ii + 1;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1376 %! end
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1377
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1378 %!demo
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1379 %! clf; axes ('visible', 'off');
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1380 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1381 %! x = 0:0.01:2*pi;
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1382 %! y = sin (x);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1383 %! plot (x, y)
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1384 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1385 %! %% Extrema
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1386 %! x0 = [pi/2 3*pi/2];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1387 %! y0 = [1 -1];
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1388 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1389 %! %% Convert axes coordinates into normalized coordinates
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1390 %! xl = xlim ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1391 %! yl = [-1.2 1.5];
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1392 %! ylim (yl);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1393 %! x0 = (x0 - xl(1)) / diff(xl);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1394 %! y0 = (y0 - yl(1)) / diff(yl);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1395 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1396 %! pos = get (gca (), 'position');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1397 %! x0 = x0*pos(3) + pos(1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1398 %! y0 = y0*pos(4) + pos(2);
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1399 %!
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1400 %!
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1401 %! %% Textarrows
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1402 %! for ii = 1:2
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1403 %! annotation ('doublearrow', [(x0(ii) - .05) (x0(ii) + .05)], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1404 %! [y0(ii) y0(ii)], 'head1style', 'vback3', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1405 %! 'head2style', 'vback3', ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1406 %! 'head1width', 4, 'head2width', 4)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1407 %! h = annotation ('textarrow', [0.5 x0(ii)], [.85 y0(ii)], ...
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1408 %! 'linestyle', '--', 'headstyle', 'none');
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1409 %! end
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1410 %! set (h, 'string', 'Extrema', 'fontsize', 15)
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1411
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1412 ## test line properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1413 %!test
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1414 %! hf = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1415 %! hax = axes ();
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1416 %! unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1417 %! h = annotation ("line", [0.2 0.7], [0.2 0.7], "linewidth", 2,
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1418 %! "linestyle", "--", "color", "r");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1419 %! hli = get (h, "children");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1420 %! assert (get (hli, "linewidth"), 2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1421 %! assert (get (hli, "linestyle"), "--");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1422 %! assert (get (hli, "color"), [1 0 0]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1423 %! assert (gca (), hax);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1424 %! unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1425 %! close (hf)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1426 %! end_unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1427
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1428 ## test textarrow properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1429 %!test
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1430 %! hf = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1431 %! unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1432 %! h = annotation ("textarrow", [0.2 0.7], [0.2 0.7],
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1433 %! "string", "Hello!", "fontsize", 20,
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1434 %! "textrotation", 90, "textcolor", "r");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1435 %! hte = findobj (h, "-depth", 1, "type", "text");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1436 %! assert (get (hte, "string"), "Hello!");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1437 %! assert (get (hte, "fontsize"), 20);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1438 %! assert (get (hte, "rotation"), 90);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1439 %! assert (get (hte, "color"), [1 0 0]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1440 %! unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1441 %! close (hf)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1442 %! end_unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1443
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1444 ## test textbox properties
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1445 %!test
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1446 %! hf = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1447 %! unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1448 %! h = annotation ("textbox", [0.2 0.2 0.7 0.3], "string", "Hello!",
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1449 %! "horizontalalignment", "left",
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1450 %! "verticalalignment", "bottom",
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1451 %! "backgroundcolor", "r");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1452 %! hte = findobj (h, "-depth", 1, "type", "text");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1453 %! hpa = findobj (h, "-depth", 1, "type", "patch");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1454 %! assert (get (hte, "string"), "Hello!");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1455 %! assert (get (hte, "verticalalignment"), "bottom");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1456 %! assert (get (hte, "horizontalalignment"), "left");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1457 %! assert (get (hpa, "facecolor"), [1 0 0]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1458 %! unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1459 %! close (hf)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1460 %! end_unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1461
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1462 ## test units conversion
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1463 %!test
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1464 %! hf = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1465 %! unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1466 %! h = annotation ("arrow", [0.1 0.2], [0.5 0.2]);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1467 %! set (h, "units", "inches");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1468 %! pos = get (h, "position");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1469 %! x = get (h, "x");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1470 %! y = get (h, "y");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1471 %! set (h, "units", "centimeters");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1472 %! assert (get (h, "position"), pos * 2.54, 20*eps);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1473 %! assert (get (h, "x"), x * 2.54, 20*eps);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1474 %! assert (get (h, "y"), y * 2.54, 20*eps);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1475 %! unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1476 %! close (hf)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1477 %! end_unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1478
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1479 ## test annotated figure
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1480 %!test
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1481 %! hf1 = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1482 %! hf2 = figure ("visible", "off");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1483 %! unwind_protect
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1484 %! h = annotation (hf1, "doublearrow");
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1485 %! assert (ancestor (h, "figure"), hf1);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1486 %! assert (gcf (), hf2);
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1487 %! unwind_protect_cleanup
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1488 %! close (hf1)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1489 %! close (hf2)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1490 %! end_unwind_protect
19867
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19854
diff changeset
1491
19775
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1492 ## Test input validation
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1493 %!error <unknown annotation type foo> annotation ("foo")
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1494 %!error annotation ([], "foo")
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1495 %!error annotation ({})
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1496 %!error annotation ("line", [.5 .6])
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1497 %!error <expect 2 elements vectors for X and Y> annotation ("line", 1:3, 1:3)
b8e4104a8f55 Add the annotation function (bug #43282)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
1498 %!error <expect 4 elements vector for POS> annotation ("textbox", 1:3)