OSDN Git Service

MOdified: dm2mrc , Length information v2.3.4p0158 v2.3.4p0159
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sun, 21 Jun 2015 00:04:20 +0000 (09:04 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sun, 21 Jun 2015 00:04:20 +0000 (09:04 +0900)
src/Objects/DataManip/dmFile/src/ldm2mrc.c

index 32fd811..bf82f47 100644 (file)
@@ -123,12 +123,40 @@ dmFile3TagDirectory2mrc(dmFile* dm, dmFile3TagDirectory tagDir, int layer, int m
                                                                curImage->HeaderN.z = 1;                                
                                                        }
                                                        DEBUGPRINT5("%d: %s: %u %u %u\n", mode, curDir->Tags[j].tagName, curImage->HeaderN.x, curImage->HeaderN.y, curImage->HeaderN.z);
-                                               SBREAK;
+                                                       SBREAK;
+                                               }
+                                               SCASE("Calibrations") {
+                                                       for(k=0; k<curDir->Tags[j].tagDir->numberOfTags; k++) {                         
+                                                               SSWITCH(curDir->Tags[j].tagDir->Tags[k].tagName) 
+                                                                       SCASE("Dimension") {
+                                                                               if(0==strncmp(curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[2].value, "nm", 2)) {
+                                                                                       curImage->HeaderLength.x = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[1].value)[0]*10;
+                                                                               } else {
+                                                                                       fprintf(stderr, "Not supported units: "); 
+                                                                                       dmFileValuePrint(stderr, curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[2].value, dmFileTagDataTypeUInt2, 2);
+                                                                                       curImage->HeaderLength.x = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[1].value)[0]*10;
+                                                                               }
+                                                                               if(0==strncmp(curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[2].value, "nm", 2)) {
+                                                                                       curImage->HeaderLength.y = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[1].value)[0]*10;
+                                                                               } else {
+                                                                                       fprintf(stderr, "Not supported units: "); 
+                                                                                       dmFileValuePrint(stderr, curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[2].value, dmFileTagDataTypeUInt2, 2);
+                                                                                       curImage->HeaderLength.y = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[1].value)[0]*10;
+                                                                               }
+                                                                               curImage->HeaderLength.z = curImage->HeaderLength.x;
+                                                                               SBREAK;
+                                                                       }
+                                                                       SDEFAULT {
+                                                                               ;
+                                                                       }
+                                                               SSWITCHEND
+                                                       }
+                                                       SBREAK;
                                                }
                                                SDEFAULT {
+                                                       ;
                                                }
-                                       SSWITCHEND      
-
+                                       SSWITCHEND;
                                }       
 
                                for(j=0; j<curDir->numberOfTags; j++) {                         
@@ -158,7 +186,7 @@ dmFile3TagDirectory2mrc(dmFile* dm, dmFile3TagDirectory tagDir, int layer, int m
                                                                        exit(EXIT_FAILURE);
                                                                }
                                                        }
-                                               SBREAK;
+                                                       SBREAK;
                                                }
                                                SDEFAULT {
                                                }
@@ -248,9 +276,38 @@ dmFile4TagDirectory2mrc(dmFile* dm, dmFile4TagDirectory tagDir, int layer, int m
                                                                curImage->HeaderN.z = 1;
                                                        }
                                                        DEBUGPRINT5("%d: %s: %u %u %u\n", mode, curDir->Tags[j].tagName, curImage->HeaderN.x, curImage->HeaderN.y, curImage->HeaderN.z);
-                                               SBREAK;
+                                                       SBREAK;
+                                               }
+                                               SCASE("Calibrations") {
+                                                       for(k=0; k<curDir->Tags[j].tagDir->numberOfTags; k++) {                         
+                                                               SSWITCH(curDir->Tags[j].tagDir->Tags[k].tagName) 
+                                                                       SCASE("Dimension") {
+                                                                               if(0==strncmp(curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[2].value, "nm", 2)) {
+                                                                                       curImage->HeaderLength.x = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[1].value)[0]*10;
+                                                                               } else {
+                                                                                       fprintf(stderr, "Not supported units: "); 
+                                                                                       dmFileValuePrint(stderr, curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[2].value, dmFileTagDataTypeUInt2, 2);
+                                                                                       curImage->HeaderLength.x = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[0].tagDir->Tags[1].value)[0]*10;
+                                                                               }
+                                                                               if(0==strncmp(curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[2].value, "nm", 2)) {
+                                                                                       curImage->HeaderLength.y = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[1].value)[0]*10;
+                                                                               } else {
+                                                                                       fprintf(stderr, "Not supported units: "); 
+                                                                                       dmFileValuePrint(stderr, curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[2].value, dmFileTagDataTypeUInt2, 2);
+                                                                                       curImage->HeaderLength.y = ((float*)curDir->Tags[j].tagDir->Tags[k].tagDir->Tags[1].tagDir->Tags[1].value)[0]*10;
+                                                                               }
+                                                                               curImage->HeaderLength.z = curImage->HeaderLength.x;
+                                                                               SBREAK;
+                                                                       }
+                                                                       SDEFAULT {
+                                                                               ;
+                                                                       }
+                                                               SSWITCHEND
+                                                       }
+                                                       SBREAK;
                                                }
                                                SDEFAULT {
+                                                       ;
                                                }
                                        SSWITCHEND