Skip to content

Commit 881242c

Browse files
committed
Add imagescope arrow annotation file
1 parent 5565848 commit 881242c

File tree

2 files changed

+488
-0
lines changed

2 files changed

+488
-0
lines changed

src/exportXML_arrow.m

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
function success = exportXML_arrow(fullname,scan_scale, task_id,workdir,Left, Top, roi_w, roi_h)
2+
%EXPORTXML Summary of this function goes here
3+
% process data
4+
try
5+
success = 0;
6+
length = 2*(roi_w + roi_h);
7+
lengthM = length*scan_scale;
8+
area= roi_w* roi_h;
9+
areaM= area * scan_scale *scan_scale;
10+
x1 = Left;
11+
y1 = Top;
12+
x2 = Left + roi_w;
13+
y2 = Top;
14+
x3 = Left + roi_w;
15+
y3 = Top + roi_h;
16+
x4 = Left;
17+
y4 = Top + roi_h;
18+
19+
lengthArrow = 100;
20+
lengthArrowM = lengthArrow*scan_scale;
21+
xArrow1 = Left + ceil(roi_w/2)-30;
22+
xArrow2 = xArrow1 - lengthArrow;
23+
yArrow = Top + ceil(roi_h/2);
24+
25+
indexdot = findstr(fullname, '.');
26+
imageDir = fullname(1:(indexdot(end)-1));
27+
filename = [imageDir,'.xml'];
28+
29+
% generate xml
30+
% annotation information
31+
docNode = com.mathworks.xml.XMLUtils.createDocument('Annotations');
32+
docRootNode = docNode.getDocumentElement;
33+
docRootNode.setAttribute('MicronsPerPixel','0.2279');
34+
35+
36+
% image information
37+
entry_level_info = docNode.createElement('Image_information');
38+
entry_level_info.setAttribute('Full_path',fullname);
39+
docNode.getDocumentElement.appendChild(entry_level_info);
40+
41+
entry_level1 = docNode.createElement('Annotation');
42+
entry_level1.setAttribute('MacroName','');
43+
entry_level1.setAttribute('MarkupImagePath','');
44+
entry_level1.setAttribute('Selected','1');
45+
entry_level1.setAttribute('Visible','1');
46+
entry_level1.setAttribute('LineColor','65280');
47+
entry_level1.setAttribute('Type','4');
48+
entry_level1.setAttribute('Incremental','0');
49+
entry_level1.setAttribute('LineColorReadOnly','0');
50+
entry_level1.setAttribute('NameReadOnly','0');
51+
entry_level1.setAttribute('ReadOnly','0');
52+
entry_level1.setAttribute('Name','');
53+
entry_level1.setAttribute('Id','1');
54+
docNode.getDocumentElement.appendChild(entry_level1);
55+
56+
entry_level1_1 = docNode.createElement('Attributes');
57+
entry_level1.appendChild(entry_level1_1);
58+
59+
entry_level1_1_1 = docNode.createElement('Attribute');
60+
entry_level1_1_1.setAttribute('Name','Description');
61+
entry_level1_1_1.setAttribute('Id','0');
62+
entry_level1_1_1.setAttribute('Value','');
63+
entry_level1_1.appendChild(entry_level1_1_1);
64+
65+
66+
entry_level1_2 = docNode.createElement('Regions');
67+
entry_level1.appendChild(entry_level1_2);
68+
entry_level1_2_1 = docNode.createElement('RegionAttributeHeaders');
69+
entry_level1_2.appendChild(entry_level1_2_1);
70+
entry_level1_2_1_1 = docNode.createElement('AttributeHeaders');
71+
entry_level1_2_1_1.setAttribute('Name','Region');
72+
entry_level1_2_1_1.setAttribute('Id','9999');
73+
entry_level1_2_1_1.setAttribute('ColumunWidth','-1');
74+
entry_level1_2_1.appendChild(entry_level1_2_1_1);
75+
76+
entry_level1_2_1_2 = docNode.createElement('AttributeHeaders');
77+
entry_level1_2_1_2.setAttribute('Name','Length');
78+
entry_level1_2_1_2.setAttribute('Id','9997');
79+
entry_level1_2_1_2.setAttribute('ColumunWidth','-1');
80+
entry_level1_2_1.appendChild(entry_level1_2_1_2);
81+
82+
entry_level1_2_1_3 = docNode.createElement('AttributeHeaders');
83+
entry_level1_2_1_3.setAttribute('Name','Area');
84+
entry_level1_2_1_3.setAttribute('Id','9996');
85+
entry_level1_2_1_3.setAttribute('ColumunWidth','-1');
86+
entry_level1_2_1.appendChild(entry_level1_2_1_3);
87+
88+
entry_level1_2_1_4 = docNode.createElement('AttributeHeaders');
89+
entry_level1_2_1_4.setAttribute('Name','Text');
90+
entry_level1_2_1_4.setAttribute('Id','9998');
91+
entry_level1_2_1_4.setAttribute('ColumunWidth','-1');
92+
entry_level1_2_1.appendChild(entry_level1_2_1_4);
93+
94+
entry_level1_2_1_5 = docNode.createElement('AttributeHeaders');
95+
entry_level1_2_1_5.setAttribute('Name','Description');
96+
entry_level1_2_1_5.setAttribute('Id','1');
97+
entry_level1_2_1_5.setAttribute('ColumunWidth','-1');
98+
entry_level1_2_1.appendChild(entry_level1_2_1_5);
99+
100+
% boundary
101+
entry_level1_2_2 = docNode.createElement('Region');
102+
entry_level1_2.appendChild(entry_level1_2_2);
103+
entry_level1_2_2.setAttribute('Selected','1');
104+
entry_level1_2_2.setAttribute('Type','1');
105+
entry_level1_2_2.setAttribute('Id','1');
106+
entry_level1_2_2.setAttribute('DisplayId','1');
107+
entry_level1_2_2.setAttribute('Analyze','1');
108+
entry_level1_2_2.setAttribute('InputRegionId','0');
109+
entry_level1_2_2.setAttribute('NegativeROA','0');
110+
entry_level1_2_2.setAttribute('Text','');
111+
entry_level1_2_2.setAttribute('AreaMicrons',num2str(areaM));
112+
entry_level1_2_2.setAttribute('LengthMicrons',num2str(lengthM));
113+
entry_level1_2_2.setAttribute('Area',num2str(area));
114+
entry_level1_2_2.setAttribute('Length',num2str(length));
115+
entry_level1_2_2.setAttribute('ImageFocus','0');
116+
entry_level1_2_2.setAttribute('ImageLocation','');
117+
entry_level1_2_2.setAttribute('Zoom','0.022562');
118+
119+
entry_level1_2_2_1 = docNode.createElement('Attributes');
120+
entry_level1_2_2.appendChild(entry_level1_2_2_1);
121+
122+
entry_level1_2_2_2 = docNode.createElement('Vertices');
123+
entry_level1_2_2.appendChild(entry_level1_2_2_2);
124+
125+
entry_level1_2_2_2_1 = docNode.createElement('Vertex');
126+
entry_level1_2_2_2.appendChild(entry_level1_2_2_2_1);
127+
entry_level1_2_2_2_1.setAttribute('Y',num2str(y1));
128+
entry_level1_2_2_2_1.setAttribute('X',num2str(x1));
129+
130+
entry_level1_2_2_2_2 = docNode.createElement('Vertex');
131+
entry_level1_2_2_2.appendChild(entry_level1_2_2_2_2);
132+
entry_level1_2_2_2_2.setAttribute('Y',num2str(y2));
133+
entry_level1_2_2_2_2.setAttribute('X',num2str(x2));
134+
135+
entry_level1_2_2_2_3 = docNode.createElement('Vertex');
136+
entry_level1_2_2_2.appendChild(entry_level1_2_2_2_3);
137+
entry_level1_2_2_2_3.setAttribute('Y',num2str(y3));
138+
entry_level1_2_2_2_3.setAttribute('X',num2str(x3));
139+
140+
entry_level1_2_2_2_4 = docNode.createElement('Vertex');
141+
entry_level1_2_2_2.appendChild(entry_level1_2_2_2_4);
142+
entry_level1_2_2_2_4.setAttribute('Y',num2str(y4));
143+
entry_level1_2_2_2_4.setAttribute('X',num2str(x4));
144+
145+
% arrow
146+
147+
entry_level1_2_3 = docNode.createElement('Region');
148+
entry_level1_2.appendChild(entry_level1_2_3);
149+
entry_level1_2_3.setAttribute('Selected','1');
150+
entry_level1_2_3.setAttribute('Type','3');
151+
entry_level1_2_3.setAttribute('Id','1');
152+
entry_level1_2_3.setAttribute('DisplayId','1');
153+
entry_level1_2_3.setAttribute('Analyze','1');
154+
entry_level1_2_3.setAttribute('InputRegionId','0');
155+
entry_level1_2_3.setAttribute('NegativeROA','0');
156+
entry_level1_2_3.setAttribute('Text','');
157+
entry_level1_2_3.setAttribute('AreaMicrons','0.0');
158+
entry_level1_2_3.setAttribute('LengthMicrons',num2str(lengthArrowM));
159+
entry_level1_2_3.setAttribute('Area','0.0');
160+
entry_level1_2_3.setAttribute('Length',num2str(lengthArrow));
161+
entry_level1_2_3.setAttribute('ImageFocus','0');
162+
entry_level1_2_3.setAttribute('ImageLocation','');
163+
entry_level1_2_3.setAttribute('Zoom','0.022562');
164+
165+
entry_level1_2_3_1 = docNode.createElement('Attributes');
166+
entry_level1_2_3.appendChild(entry_level1_2_3_1);
167+
168+
entry_level1_2_3_2 = docNode.createElement('Vertices');
169+
entry_level1_2_3.appendChild(entry_level1_2_3_2);
170+
171+
entry_level1_2_3_2_1 = docNode.createElement('Vertex');
172+
entry_level1_2_3_2.appendChild(entry_level1_2_3_2_1);
173+
entry_level1_2_3_2_1.setAttribute('Y',num2str(yArrow));
174+
entry_level1_2_3_2_1.setAttribute('X',num2str(xArrow1));
175+
176+
entry_level1_2_3_2_2 = docNode.createElement('Vertex');
177+
entry_level1_2_3_2.appendChild(entry_level1_2_3_2_2);
178+
entry_level1_2_3_2_2.setAttribute('Y',num2str(yArrow));
179+
entry_level1_2_3_2_2.setAttribute('X',num2str(xArrow2));
180+
181+
entry_level1_2_4 = docNode.createElement('plots');
182+
entry_level1_2.appendChild(entry_level1_2_4);
183+
184+
xmlwrite(filename,docNode);
185+
186+
% delete the first line from XML file
187+
fid = fopen(filename, 'r') ; % Open source file.
188+
fgetl(fid) ; % Read/discard line.
189+
buffer = fread(fid, Inf) ; % Read rest of the file.
190+
fclose(fid);
191+
fid = fopen(filename, 'w') ; % Open destination file.
192+
fwrite(fid, buffer) ; % Save to file.
193+
fclose(fid) ;
194+
195+
winopen(fullname);
196+
% [status2,cmdout2]=system(fullname);
197+
%[status2,cmdout2]=system(fullname,'-echo');
198+
success = 1;
199+
200+
catch ME
201+
error_show(ME)
202+
end
203+
204+
end
205+

0 commit comments

Comments
 (0)