00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 #include <stdio.h>
00010 
00011 
00012 #ifndef WSXM_MAXCHARS
00013 #define WSXM_MAXCHARS 1000
00014 #endif
00015 
00016 #define IMAGE_HEADER_VERSION        "1.0 (April 2000)"
00017 #define IMAGE_HEADER_SIZE_TEXT      "Image header size: "
00018 #define IMAGE_HEADER_END_TEXT       "Header end"
00019 #define TEXT_COPYRIGHT_NANOTEC      "WSxM file copyright Nanotec Electronica\n"
00020 #define STM_IMAGE_FILE_ID           "SxM Image file\n"
00021 
00022 #define IMAGE_HEADER_GENERAL_INFO                  "General Info"
00023 #define IMAGE_HEADER_GENERAL_INFO_NUM_COLUMNS      "Number of columns"
00024 #define IMAGE_HEADER_GENERAL_INFO_NUM_ROWS         "Number of rows"
00025 #define IMAGE_HEADER_GENERAL_INFO_Z_AMPLITUDE      "Z Amplitude"
00026 #define IMAGE_HEADER_GENERAL_INFO_ACQ_CHANNEL      "Acquisition channel"
00027 #define IMAGE_HEADER_GENERAL_INFO_HEAD_TYPE        "Head type"
00028 
00029 #define IMAGE_HEADER_MISC_INFO                     "Miscellaneous"
00030 #define IMAGE_HEADER_MISC_INFO_MAXIMUM             "Maximum"
00031 #define IMAGE_HEADER_MISC_INFO_MINIMUM             "Minimum"
00032 #define IMAGE_HEADER_MISC_INFO_COMMENTS            "Comments"
00033 #define IMAGE_HEADER_MISC_INFO_VERSION             "Version"
00034 
00035 #define IMAGE_HEADER_CONTROL                     "Control"
00036 #define IMAGE_HEADER_CONTROL_X_AMPLITUDE         "X Amplitude"
00037 #define IMAGE_HEADER_CONTROL_Y_AMPLITUDE         "Y Amplitude"
00038 #define IMAGE_HEADER_CONTROL_SET_POINT           "Set point"
00039 #define IMAGE_HEADER_CONTROL_Z_GAIN              "Z Gain"
00040 #define IMAGE_HEADER_CONTROL_BIAS                "Topography Bias"
00041 #define IMAGE_HEADER_CONTROL_X_FREQUENCY         "X-Frequency"
00042 #define IMAGE_HEADER_CONTROL_X_OFFSET            "X Offset"
00043 #define IMAGE_HEADER_CONTROL_Y_OFFSET            "Y Offset"
00044 #define IMAGE_HEADER_CONTROL_ROTATION            "Rotation"
00045 #define IMAGE_HEADER_CONTROL_SCAN_DIRECTION      "Direction"
00046 
00047 #define IMAGE_HEADER_HEADS                        "Head Settings"
00048 #define IMAGE_HEADER_HEADS_X_CALIBRATION          "X Calibration"
00049 #define IMAGE_HEADER_HEADS_Y_CALIBRATION          "Y Calibration"
00050 #define IMAGE_HEADER_HEADS_Z_CALIBRATION          "Z Calibration"
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 typedef struct typeHeader
00072 {
00073         char **tszTitles;
00074         char **tszLabels;
00075         char **tszValues;
00076 
00077         int iNumFields;
00078 } WSxM_HEADER;
00079 
00080 
00081 
00082 void HeaderInit (WSxM_HEADER *pHeader);
00083 
00084 
00085 
00086 
00087 
00088 int HeaderRead (WSxM_HEADER *pHeader, FILE *pFile);
00089 
00090 
00091 
00092 int HeaderWrite (WSxM_HEADER *pHeader, FILE *pFile);
00093 
00094 
00095 
00096 
00097 
00098 double HeaderGetAsNumber(WSxM_HEADER *pHeader, char *szTitle, char *szLabel);
00099 int HeaderGetAsString(WSxM_HEADER *pHeader, char *szTitle, char *szLabel, char *szValue);
00100 void HeaderReadTitle (char *szLine, char *szTitle);
00101 void HeaderReadLabel (char *szLine, char *szLabel);
00102 void HeaderReadValue (char *szLine, char *szValue);
00103 
00104 
00105 
00106 void HeaderSetAsFloating(WSxM_HEADER *pHeader, char *szTitle, char *szLabel, double lfValue);
00107 void HeaderSetAsInt(WSxM_HEADER *pHeader, char *szTitle, char *szLabel, int iValue);
00108 void HeaderSetAsString(WSxM_HEADER *pHeader, char *szTitle, char *szLabel, char *szValue);
00109 
00110 
00111 
00112 void HeaderDestroy (WSxM_HEADER *pHeader);
00113 
00114 
00115 
00116 int HeaderReadLine (WSxM_HEADER *pHeader,FILE *pFile);
00117 int HeaderGetSize (WSxM_HEADER *pHeader);
00118 int HeaderAddValue (WSxM_HEADER *pHeader, char *szTitle, char *szLabel,char *szValue);
00119 
00120 void RemoveLeftAndRightWhitesFromString (char *szString);
00121 void ReplaceStringInString (char *szDest, const char *szOld, const char *szNew);