source: issm/trunk/src/m/kml/kml_style.m@ 6454

Last change on this file since 6454 was 6454, checked in by jschierm, 14 years ago

Added a hierarchy of kml base and derived sets, conforming to the google earth kml reference, for writing the kml files.

File size: 6.1 KB
Line 
1%
2% definition for the kml_style sub (derived) class.
3%
4% [kml]=kml_style(varargin)
5%
6% where the optional varargin and defaults are:
7% id (char, style id, '')
8% icon (char, icon style, '')
9% label (char, label style, '')
10% line (char, line style, '')
11% poly (char, poly style, '')
12% balloon (char, balloon style, '')
13% list (char, list style, '')
14%
15% note that zero arguments constructs a default instance; one
16% argument of the class copies the instance; and two or more
17% arguments constructs a new instance from the arguments.
18%
19classdef kml_style < kml_styleselector
20 properties
21% icon =kml_iconstyle.empty();
22% label =kml_labelstyle.empty();
23 icon =[];
24 label =[];
25 line =kml_linestyle.empty();
26 poly =kml_polystyle.empty();
27% balloon =kml_balloonstyle.empty();
28% list =kml_liststyle.empty();
29 balloon =[];
30 list =[];
31 end
32
33 methods
34 function [kml]=kml_style(varargin)
35
36 kml=kml@kml_styleselector(varargin{:});
37
38 switch nargin
39
40% create a default object
41
42 case 0
43
44% copy the object or create the object from the input
45
46 otherwise
47 if (nargin == 1) && isa(varargin{1},class(kml))
48 kml=varargin{1};
49
50 else
51 fnames=fieldnames(kml);
52
53 for i=length(fieldnames(kml_styleselector()))+1:min(nargin,length(fnames))
54 if isa(varargin{i},class(kml.(fnames{i})))
55 if ~isempty(varargin{i})
56 kml.(fnames{i})=varargin{i};
57 end
58 else
59 if ~isempty(inputname(i))
60 warning('Argument ''%s'' for field ''%s'' is a ''%s'' class object, not ''%s''.',...
61 inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
62 else
63 warning('Argument %d for field ''%s'' is a ''%s'' class object, not ''%s''.',...
64 i ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
65 end
66 end
67 end
68 end
69
70 end
71
72 end
73
74% display the object
75
76 function []=disp(kml)
77
78 for i=1:numel(kml)
79 disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
80 class(kml),inputname(1),string_dim(kml,i)));
81 disp@kml_styleselector(kml(i));
82 disp(sprintf(' icon: %s %s' ,string_size(kml(i).icon),...
83 class(kml(i).icon)));
84 disp(sprintf(' label: %s %s' ,string_size(kml(i).label),...
85 class(kml(i).label)));
86 disp(sprintf(' line: %s %s' ,string_size(kml(i).line),...
87 class(kml(i).line)));
88 disp(sprintf(' poly: %s %s' ,string_size(kml(i).poly),...
89 class(kml(i).poly)));
90 disp(sprintf(' balloon: %s %s' ,string_size(kml(i).balloon),...
91 class(kml(i).balloon)));
92 disp(sprintf(' list: %s %s\n' ,string_size(kml(i).list),...
93 class(kml(i).list)));
94 end
95
96 end
97
98% write the object
99
100 function []=kml_write(kml,fid,indent)
101
102 if ~exist('fid','var') || isempty(fid)
103 fid=1;
104 end
105 if ~exist('indent','var') || isempty(indent)
106 indent='';
107 end
108
109% loop over the styles
110
111 for i=1:numel(kml)
112 if ~isempty(kml(i).id)
113 fprintf(fid,'%s<Style id="%s">\n',indent,kml(i).id);
114 else
115 fprintf(fid,'%s<Style>\n',indent);
116 end
117 kml_write@kml_styleselector(kml(i),fid,indent);
118% if isa(kml(i).icon,'kml_iconstyle')
119% kml_write(kml(i).icon,fid,[indent ' ']);
120% else
121% warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
122% i,class(kml(i).icon),'kml_iconstyle');
123% end
124% if isa(kml(i).label,'kml_labelstyle')
125% kml_write(kml(i).label,fid,[indent ' ']);
126% else
127% warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
128% i,class(kml(i).label),'kml_labelstyle');
129% end
130 if isa(kml(i).line,'kml_linestyle')
131 kml_write(kml(i).line,fid,[indent ' ']);
132 else
133 warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
134 i,class(kml(i).line),'kml_linestyle');
135 end
136 if isa(kml(i).poly,'kml_polystyle')
137 kml_write(kml(i).poly,fid,[indent ' ']);
138 else
139 warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
140 i,class(kml(i).poly),'kml_polystyle');
141 end
142% if isa(kml(i).balloon,'kml_balloonstyle')
143% kml_write(kml(i).balloon,fid,[indent ' ']);
144% else
145% warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
146% i,class(kml(i).balloon),'kml_balloonstyle');
147% end
148% if isa(kml(i).list,'kml_liststyle')
149% kml_write(kml(i).list,fid,[indent ' ']);
150% else
151% warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
152% i,class(kml(i).list),'kml_liststyle');
153% end
154 fprintf(fid,'%s</Style>\n',indent);
155 end
156
157 end
158
159 end
160
161end
162
Note: See TracBrowser for help on using the repository browser.