X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fgeometry-1.5.0%2Fio%2F%40svg%2Fsvg.m;fp=octave_packages%2Fgeometry-1.5.0%2Fio%2F%40svg%2Fsvg.m;h=c2f5074390212834a45abe6e4352395061956f26;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/geometry-1.5.0/io/@svg/svg.m b/octave_packages/geometry-1.5.0/io/@svg/svg.m new file mode 100644 index 0000000..c2f5074 --- /dev/null +++ b/octave_packages/geometry-1.5.0/io/@svg/svg.m @@ -0,0 +1,82 @@ +## Copyright (C) 2011 Carnë Draug +## Copyright (c) 2011 Juan Pablo Carbajal +## +## 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 . + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{obj} =} svg () +## @deftypefnx {Function File} {@var{obj} =} svg (@var{str}) +## Create object of the svg class. +## +## If no input argument is provided the object is empty. @var{str} can be a filename +## or a string defining an inline SVG. +## +## @end deftypefn + +function svg = svg(name='') + + svg = struct; + + ## SVG data. All the attributes of the node. + ## The field unparsed contains all the attributes that are not being parsed. + svg.Data = struct('height',[],'width',[],'id','null','normalized',false); + + ## SVG metadata. All the attributes of the 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 = class (svg, 'svg'); + + if !isempty (name) + if exist(name,"file") == 2 + name = file_in_path(path(), name); + else + error("svg:BadArguemnt", "File %s doesn't exist",name); + end + paths = loadpaths(svg, name); + svg.Path = paths; + data = loadsvgdata(svg, name); + svg.Data = data; + svg.Data.normalized = false; + elseif !ischar(name) + print_usage ; + endif + + +endfunction + +%!test +%! dc = svg('drawing5.svg'); +%! dc.getpath(); +%! dc.pathid(); +%! dc.getpath('path3756'); +%! +%! dc = svg('drawing.svg'); +%! ids = dc.pathid(); +%! dc.getpath({ids{[1 3]}}); + +%!test +%! dc = svg('drawing6.svg'); +%! ids = dc.pathid(); +%! P = dc.path2polygon(ids{1}); + +%!test +%! dc = svg('drawing6.svg'); +%! dc.plot(); +%! dc.plot('color','r','linewidth',2);