|
| 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