[1f77fb]: devel / @svg / svg.m  Maximize  Restore  History

Download this file

70 lines (57 with data), 2.3 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
## Copyright (C) 2011 CarnĂŤ Draug <carandraug+dev@gmail.com>
## Copyright (c) 2011 Juan Pablo Carbajal <carbajal@ifi.uzh.ch>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, see <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
## @deftypefn {Function File} {@var{obj} =} svg ()
## @deftypefnx {Function File} {@var{obj} =} svg (@var{str})
## Create object @var{obj} of the svn class.
##
## If no input argument is provided the object is empty. @var{str} can be a filename
## or a string defining an inline SVG.
##
## @seealso{@svn/parsePaths}
## @end deftypefn
function svg = svg(name='')
svg = struct;
## SVG data. All the attributes of the <svg> node.
## The field unparsed contains all the attributes that are not being parsed.
svg.Data = struct('height',[],'width',[],'id','null','unparsed',' ');
## SVG metadata. All the attributes of the <metadata> node.
## The field unparsed contains all the attributes that are not being parsed.
svg.Metadata = struct('unparsed',' ');
## SVG paths. It is a vector of path structs. Maybe path can be a object too?
## Order of Path.Data is important so we store in a cell (could be a matrix padded with zeros).
## All the paths stored in polyval compatible format. Straigth segments are also stored as a polynomial.
svg.Path = struct();
## SVG paths. All the paths of the svg
svg = class (svg, 'svg');
if !isempty (name)
paths = loadpaths(svg, name);
svg.Path = paths;
elseif !ischar(name)
print_usage ;
endif
endfunction
%!test
%! dc = svg('../inst/drawing5.svg');
%! dc.path
%! dc.Path
%! dc.getpath()
%! dc.pathid
%! dc.getpath('path3756')
%!
%! dc = svg('../inst/drawing.svg');
%! ids = dc.pathid;
%! dc.path({ids{[1 3]}})