00001 00002 00003 00004 00005 00006 #include "stdafx.h" 00007 #include "transfuncfile.h" 00008 #include <stdio.h> 00009 00012 INDEXLIST CTransfuncFile::LoadTransferFunc(const char *filename, bool &success) { 00013 success = false; 00014 FILE *file; 00015 if ((file = fopen(filename, "rb")) == NULL) { 00016 success = false; 00017 return NULL; 00018 } 00019 00020 00021 fread(&m_sTransHeader, sizeof(m_sTransHeader), 1, file); 00022 00023 INDEXLIST temp; 00024 INDICES tempInd; 00025 00026 for (int i = 0; i < m_sTransHeader.m_bNumber; i++) { 00027 fread(&m_sTransData, sizeof(m_sTransData), 1, file); 00028 tempInd.m_sdBegin = m_sTransData.m_dBegin; 00029 tempInd.m_sdEnd = m_sTransData.m_dEnd; 00030 tempInd.m_ucAlpha = m_sTransData.m_pcAlpha; 00031 tempInd.m_scColor = m_sTransData.m_pColor; 00032 temp.push_back(tempInd); 00033 } 00034 00035 fclose(file); 00036 00037 success = true; 00038 return temp; 00039 } 00040 00045 INDEXLIST *CTransfuncFile::LoadPresets(int &numPresets) { 00046 string filename = "transferfunctions/preset_.tff"; 00047 00048 INDEXLIST *templist = new INDEXLIST[10]; 00049 INDEXLIST temp; 00050 00051 bool success; 00052 00053 numPresets = 0; 00054 for (int i = 0; i < 10; i++) { 00055 filename[24] = i + '0'; 00056 temp = LoadTransferFunc(filename.c_str(), success); 00057 if (success) 00058 templist[numPresets++] = temp; 00059 } 00060 return templist; 00061 } 00062 00063 00066 void CTransfuncFile::SaveTransferFunc(INDEXLIST &indexList, string filename) { 00067 m_sTransHeader.m_pcName; 00068 m_sTransHeader.m_bNumber = indexList.size(); 00069 FILE *file; 00070 00071 if ((file = fopen(filename.c_str(), "wb")) == NULL) 00072 return; 00073 00074 INDICES tempInd; 00075 00076 fwrite(&m_sTransHeader, sizeof(m_sTransHeader), 1, file); 00077 for (int i = 0; i < indexList.size(); i++) { 00078 tempInd = indexList[i]; 00079 m_sTransData.m_dBegin = tempInd.m_sdBegin; 00080 m_sTransData.m_dEnd = tempInd.m_sdEnd; 00081 m_sTransData.m_pcAlpha = tempInd.m_ucAlpha; 00082 m_sTransData.m_pColor = tempInd.m_scColor; 00083 fwrite(&m_sTransData, sizeof(m_sTransData), 1, file); 00084 } 00085 00086 fclose(file); 00087 }