| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using static OTSDataType.otsdataconst;
- using static OTSDataType.LanguageID;
- namespace OTSDataType
- {
-
- //every possible display item in the sample property grid should be a member in this enum.
- public enum OTS_SAMPLE_PROP_GRID_ITEMS
- {// we prepare 10 items for every group.so the first group starts from 0,the second starts from 10,and so on.
- //the item's value is contrast to the position exactly when it's displayed in the property grid.and the caption string is read from the resource file by the value too.
- INVALID = -1,
- MIN = 0,
- GENERAL_GRP_MIN = 0,
- SAMPLE_NAME = 0,
- SAMPLE_HOLE_NAME = 1,
- SWITCH = 2,
- MEASURE_PARAM_FILE_NAME = 3,
- STD_FILE_NAME = 4,
- MEMBRANE_TYPE = 5,
- GENERAL_GRP_MAX = 5,
- IMAGE_GRP_MIN = 10,
- START_MODE = 10,
- STOP_MODE = 11,
- STOP_PARAM_PARTICLE = 12,
- STOP_PARAM_FIELD = 13,
- STOP_PARAM_TIME = 14,
- SCAN_SPEED = 15,
- IMAGE_RESOLUTION = 16,
- IMAGE_GRP_MAX = 16,
- IMAGE_PROC_MIN = 20,
- PARTICLE_AREA_MIN = 20,
- PARTICLE_AREA_MAX = 21,
- BG_GRAY_MIN = 22,
- BG_GRAY_MAX = 23,
- PARTICLE_GRAY_MIN = 24,
- PARTICLE_GRAY_MAX = 25,
- BGREMOVE_TYPE = 26,
- AUTOBGREMOVE_TYPE = 27,//Auto BGremove still has three types to choose
- IMAGE_PROC_MAX = 27,
- XRAY_MIN = 30,
- SEARCH_RESOLUTION = 30,
- LOW_COUNTS = 31,
- ANALYSIS_RESOLUTION = 32,
- SCAN_MODE = 33,
- ANALYSIS_COUNTS = 34,
- XRAY_STEP = 35,
- XRAY_QUANTIFY_MINSIZE = 36,
- XRAY_FASTTIME = 37,
- XRAY_MAX = 37,
- SEM_DATA_MIN = 40,
- MAGNIFICATION = 40,
- PIXEL_SIZE = 41,
- WORKING_DISTANCE = 42,
- TOTAL_FIELDS = 43,
- TOTAL_TO_MEASURE_AREA = 44,
- SEM_DATA_MAX = 44,
- MEASURE_STATAU_MIN = 50,
- MEASURE_STATAU = 50,
- START_TIME = 51,
- USED_TIME = 52,
- FINISH_TIME = 53,
- COMPLETED_FIELDS = 54,
- MEASURE_STATAU_MAX = 55,
- MEASURE_RESULT_MIM = 60,
- RATIO = 60,
- TOTAL_AREA = 61,
- TOTAL_PARTICLE = 62,
- TOTAL_PARTICLE_AREA = 63,
- MEASURE_RESULT_MAX = 63,
- FIELD_STOP_TYPEMIN = 400,
- FIELD_STOP_TYPE = 400,
- FIELDSTOP_AREAPERCENTAGE = 401,
- FIELDSTOP_LARGEPARTICLES = 404,
- FIELDSTOP_SMALLPARTICLES = 405,
- FIELDSTOP_LARGEPARTICLESPERCENTAGE = 406,
- FIELDSTOP_SMALLPARTICLESPERCENTAGE = 407,
- FIELD_STOP_TYPEMAX = 407,
- MAX = 407
- }
- public enum OTS_SAMPLE_PROP_GRID_ITEM_GROUPS
- {
- INVALID = -1,
- MIN = 0,
- GENERAL = 0,
- IMAGESCAN = 1,
- IMAGE_PROCESS = 2,
- XRAY = 3,
- FIELDPROCESS = 4,
- SEM = 5,
- MEASURE_STATUS = 6,
- MEASURE_RESULTS = 7,
- MAX = 7
- }
-
- public enum OTS_ITEM_TYPES
- {
- INVALID = -1,
-
- BOOLVALUE = 0,
- INT = 1,
- DOUBLEVALUE = 2,
- STRING = 3,
- COMBO = 4,
- TIME = 5,
- TIME_SPAN = 6,
- FILE_LIST = 7
-
- }
- public class COTSSample
- {
- const string NOT_APPLIED = "N/A";
- private string m_strName;
- private string m_strHoleName;
- private bool m_bParamLock;
- private bool m_bSwitch;
- private CMsrParams m_poMsrParams;
- private CDomain m_poMsrArea;
- private CSEMDataMsr m_poSEMDataMsr;
- private CMsrSampleStatus m_poMsrStatus;
- private CMsrResults m_poMsrResults;
- private MEMBRANE_TYPE m_membraneType;
- private List<COTSFieldData> m_listFieldData;
- public COTSSample()
- {
- // initialization
- Init();
- }
- void Init()
- {
- m_strName = "";
- m_strHoleName = "";
- m_bParamLock = false;
- m_bSwitch = true;
- m_poMsrParams = new CMsrParams();
- m_poMsrArea = new CDomain();
- m_poSEMDataMsr = new CSEMDataMsr();
- m_poMsrStatus = new CMsrSampleStatus();
- m_poMsrResults = new CMsrResults();
- m_membraneType = MEMBRANE_TYPE.Abrasive;
- }
- public bool SetPropboolData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, bool a_bValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
- {
- m_bSwitch = a_bValue;
- }
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
- }
- // failed, return false
- return true;
- }
- public CDomain GetMsrArea() { return null; }
- public bool SetPropdoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, double a_dValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
- {
- // value validation
- if (a_dValue < MAGNIFICATION_MIN || a_dValue > MAGNIFICATION_MAX)
- {
- return false;
- }
- m_poSEMDataMsr.SetMagnification(a_dValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
- {
- if (a_dValue < PIXELSIZE_MIN || a_dValue > PIXELSIZE_MAX)
- {
- return false;
- }
- //m_poMsrParams.GetImageScanParam().SetImagePixelSize((OTS_FIVE_TIES_OPTIONS)(int)a_dValue);
- int nScanFieldSize = CalculateScanFieldSize(a_dValue);
- m_poSEMDataMsr.SetScanFieldSize(nScanFieldSize);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
- {
- if (PARTICLE_AREA_MIN > a_dValue || a_dValue > PARTICLE_AREA_MAX)
- {
- return false;
- }
- CDoubleRange oIncArea = m_poMsrParams.GetImageProcessParam().GetIncAreaRange();
- oIncArea.SetStart(a_dValue);
- m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
- {
- if (PARTICLE_AREA_MIN > a_dValue || a_dValue > PARTICLE_AREA_MAX)
- {
- return false;
- }
- CDoubleRange oIncArea = m_poMsrParams.GetImageProcessParam().GetIncAreaRange();
- oIncArea.SetEnd(a_dValue);
- m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
- }
- break;
- // read only property, tread as default.
- case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
- case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
- default:
- {
- // something wrong, return false
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- // duplication
- void Duplicate(COTSSample a_oSource)
- {
- // initialization
- Init();
- // copy data over
- m_strName = a_oSource.m_strName;
- m_strHoleName = a_oSource.m_strHoleName;
- m_bParamLock = a_oSource.m_bParamLock;
- m_bSwitch = a_oSource.m_bSwitch;
- m_poMsrParams = new CMsrParams(a_oSource.m_poMsrParams);
- m_poMsrArea = new CDomain(a_oSource.m_poMsrArea);
- m_poSEMDataMsr = new CSEMDataMsr(a_oSource.m_poSEMDataMsr);
- m_poMsrStatus = new CMsrSampleStatus(a_oSource.m_poMsrStatus);
- m_poMsrResults = new CMsrResults(a_oSource.m_poMsrResults);
- m_membraneType = a_oSource.m_membraneType;
- }
- // calculate scan field size
- public int CalculateScanFieldSize(double a_dPixelSize)
- {
- // scan field size
- int nScanFiledSize = 0;
- // make sure SEM is valid
- if (!m_poSEMDataMsr.Equals(new CSEMDataMsr()))
- {
- // get image size
- OTS_FIVE_TIES_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImagePixelSize();
- long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
- int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
- // calculate scan field size
- nScanFiledSize = (int)((a_dPixelSize * (double)nImageSize) + 0.5);
- }
- // return scan field size
- return nScanFiledSize;
- }
- public bool GetBSESize(out int a_nWidth, out int a_nHeight)
- {
- // scan parameters
- CMsrParams pMsrParam = GetMsrParams();
- COTSImgScanPrm pImgScanParam = pMsrParam.GetImageScanParam();
- // get image size
- OTS_FIVE_TIES_OPTIONS nImageSizeId = pImgScanParam.GetImagePixelSize();
- int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
- Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
- // get scan field size
- a_nWidth = sizePixelImage.Width;
- a_nHeight = sizePixelImage.Height;
- return true;
- }
- // name
- public string GetName() { return m_strName; }
- public void SetName(string a_strName) { m_strName = a_strName; }
- // sample hole
- public string GetSampleHoleName() { return m_strHoleName; }
- public void SetSampleHoleName(string a_strHoleName) { m_strHoleName = a_strHoleName; }
- // param modify lock
- public bool GetParamLock() { return m_bParamLock; }
- public void SetParamLock(bool a_bParamLock) { m_bParamLock = a_bParamLock; }
- // switch
- public bool GetSwitch() { return m_bSwitch; }
- public void SetSwitch(bool a_bSwitch) { m_bSwitch = a_bSwitch; }
- // measurement parameter
- public CMsrParams GetMsrParams() { return m_poMsrParams; }
- public void SetMsrParams(CMsrParams a_poMsrParams)
- {
- m_poMsrParams = a_poMsrParams;
- }
- // measurement area
-
- public void SetMsrArea(CDomain a_poMsrArea)
- {
- m_poMsrArea = a_poMsrArea;
- }
- // SEM data (measurement)
- public CSEMDataMsr GetSEMDataMsr() { return m_poSEMDataMsr; }
- public void SetSEMDataMsr(CSEMDataMsr a_poSEMDataMsr)
- {
- m_poSEMDataMsr = a_poSEMDataMsr;
- }
- // measure status
- public CMsrSampleStatus GetMsrStatus() { return m_poMsrStatus; }
- public void SetMsrStatus(CMsrSampleStatus a_poMsrStatus)
- {
- m_poMsrStatus = a_poMsrStatus;
- }
- // fields
- public List<COTSFieldData> GetFieldsData() { return m_listFieldData; }
- public void SetFieldsData(List<COTSFieldData> a_listFieldData)
- {
- m_listFieldData = a_listFieldData;
- }
- // measure results
- public CMsrResults GetMsrResults() { return m_poMsrResults; }
- public void SetMsrResults(CMsrResults a_poMsrResults)
- {
- m_poMsrResults = a_poMsrResults;
- }
- // has measure results test
- public bool HasMeasureResult()
- {
- // result items is not empty
- bool bHasResult = !(m_poMsrResults.GetResultItems().Count==0);
- return bHasResult;
- }
- public MEMBRANE_TYPE GetMembraneType() { return m_membraneType; }
- public void SetMembraneType(MEMBRANE_TYPE val) { m_membraneType = val; }
-
- // int data (16)
- public bool GetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId,out int a_nValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamParticles();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamFields();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamMeasTime();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
- {
- a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetStart();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
- {
- a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetEnd();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
- {
- a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetStart();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
- {
- a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetEnd();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS:
- {
- a_nValue = m_poMsrParams.GetXRayParam().GetXRaySearchCount();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
- {
- a_nValue = m_poMsrParams.GetXRayParam().GetAnalyExpCount();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
- {
- a_nValue = (int)m_poMsrParams.GetXRayParam().GetMidAnalyAQTime();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
- {
- a_nValue = m_poSEMDataMsr.GetTotalFields();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
- {
- a_nValue = m_poMsrStatus.GetCompletedFields();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
- {
- a_nValue =(int) m_poMsrResults.GetMeasuredArea();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
- {
- a_nValue = (int)m_poMsrResults.GetTotalParticleNumber();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
- {
- a_nValue =(int) m_poMsrResults.GetTotalParticleArea();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_AREAPERCENTAGE:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetFieldAreaPercentage();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLES:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetFieldLargeParticleNum();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLESPERCENTAGE:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetFieldLargeParticlesPercentage();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLES:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetFieldSmallParticleNum();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLESPERCENTAGE:
- {
- a_nValue = m_poMsrParams.GetImageScanParam().GetFieldSmallParticlesPercentage();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
- {
- a_nValue = m_poMsrParams.GetXRayParam().GetQuantifyMinSize();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
- {
- a_nValue = m_poMsrParams.GetXRayParam().GetFastXrayTime();
- }
- break;
- default:
- {
- // something wrong, return false
- a_nValue = -1;
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- public bool SetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
- {
- // value validation
- if (STOP_PARAM_PARTICLE_MIN >= a_nValue || a_nValue > STOP_PARAM_PARTICLE_MAX)
- {
- return false;
- }
- if (m_poMsrParams.GetImageScanParam().GetStopParamParticles() != a_nValue)
- {
- m_poMsrParams.GetImageScanParam().SetStopParamParticles(a_nValue);
- m_poMsrStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
- {
- if (STOP_PARAM_FIELD_MIN >= a_nValue || a_nValue > STOP_PARAM_FIELD_MAX)
- {
- return false;
- }
- if (m_poMsrParams.GetImageScanParam().GetStopParamFields() != a_nValue)
- {
- m_poMsrParams.GetImageScanParam().SetStopParamFields(a_nValue);
- m_poMsrStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
- {
- if (STOP_PARAM_MSR_TINE_MIN >= a_nValue || a_nValue > STOP_PARAM_MSR_TINE_MAX)
- {
- return false;
- }
- if (m_poMsrParams.GetImageScanParam().GetStopParamMeasTime() != a_nValue)
- {
- m_poMsrParams.GetImageScanParam().SetStopParamMeasTime(a_nValue);
- m_poMsrStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
- {
- if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
- {
- return false;
- }
- if (m_poMsrParams == null)
- {
- return false;
- }
- COTSImgProcPrm pImageProcessParam = m_poMsrParams.GetImageProcessParam();
- if (pImageProcessParam == null)
- {
- return false;
- }
- CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
- oBGGray.SetStart(a_nValue);
- m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
- {
- if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
- {
- return false;
- }
- CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
- oBGGray.SetEnd(a_nValue);
- m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
- {
- if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
- {
- return false;
- }
- CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
- oParticleGray.SetStart(a_nValue);
- m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
- {
- if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
- {
- return false;
- }
- CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
- oParticleGray.SetEnd(a_nValue);
- m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS:
- {
- if (COUNTS_MIN > a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetXRaySearchCount(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
- {
- if (COUNTS_MIN > a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetAnalyExpCount(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
- {
- if (0 >= a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetMidAnalyAQTime(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_AREAPERCENTAGE:
- {
- m_poMsrParams.GetImageScanParam().SetFieldAreaPercentage(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLES:
- {
- m_poMsrParams.GetImageScanParam().SetFieldLargeParticleNum(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLESPERCENTAGE:
- {
- m_poMsrParams.GetImageScanParam().SetFieldLargeParticlePercentage(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLES:
- {
- if (0 >= a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetFieldSmallParticleNum(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLESPERCENTAGE:
- {
- if ((0 >= a_nValue) || (100 < a_nValue))
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetFieldSmallParticlePercentage(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
- {
- if (0 >= a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetQuantifyMinSize(a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
- {
- if (0 >= a_nValue)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetFastXrayTime(a_nValue);
- }
- break;
- // read only properties, treat same as default
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
- case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
- default:
- {
- // something wrong, return false
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- // double data (4)
- public bool GetPropdoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId,out double a_dValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
- {
- a_dValue = m_poSEMDataMsr.GetMagnification();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
- {
- a_dValue = CalculatePixelSize();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
- {
- a_dValue = m_poSEMDataMsr.GetWorkingDistance();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
- {
- a_dValue = m_poMsrResults.GetRadio();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
- {
- a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
- {
- a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
- {
- double dFieldArea = 0; // this area should be the field area
- dFieldArea = CalculateAFieldArea();
- a_dValue = (double)m_poSEMDataMsr.GetTotalFields() * dFieldArea;//
- }
- break;
- default:
- {
- // something wrong, return false
- a_dValue = -1;
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
-
- // string data (7)
- public bool GetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId,out string a_strValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
- {
- a_strValue = m_strName;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
- {
- a_strValue = m_strHoleName;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
- {
- a_strValue = NOT_APPLIED;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
- {
- a_strValue = NOT_APPLIED;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
- {
- a_strValue = NOT_APPLIED;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
- {
- a_strValue = NOT_APPLIED;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
- {
- a_strValue = NOT_APPLIED;
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
- {
- OTS_MSR_SAMPLE_STATUS nStatus = m_poMsrStatus.GetStatus();
- string strStatus = nStatus.ToString();
- //strStatus= MultiLang.GetInstance().GetstringByKey(GrpMeasureResultParam,IDS_MEASURE_STATUS_FIRST + (int)nStatus);
- a_strValue = strStatus;
- }
- break;
- default:
- {
- // something wrong, return false
- a_strValue = NOT_APPLIED;
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- public bool SetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, string a_strValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
- {
- //we think the samplename as the Identification of the sample,if we change the name then reset the status.
- //so we can remeasure the sample by change the sample name.
- if (m_strName != a_strValue)
- {
- m_strName = a_strValue;
- m_poMsrStatus = new CMsrSampleStatus();
- }
- }
- break;
- // read only property, tread as default.
- case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
- case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
- case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
- case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
- case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
- case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
- default:
- {
- // something wrong, return false
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- // combo data (7)
- public bool GetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
- {
- a_nValue = (int)m_poMsrParams.GetImageScanParam().GetStartImageMode();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
- {
- a_nValue = (int)m_poMsrParams.GetImageScanParam().GetStopMode();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
- {
- a_nValue = (int)m_poMsrParams.GetImageScanParam().GetScanImageSpeed();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
- {
- a_nValue = (int)m_poMsrParams.GetImageScanParam().GetImagePixelSize();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
- {
- a_nValue = (int)m_poMsrParams.GetXRayParam().GetSearchSpeed();
- }
- break;
- /*case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
- {
- a_nValue = (int)m_poMsrParams.GetXRayParam().GetAnalySpeed();
- }
- break;*/
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
- {
- a_nValue = (int)m_poMsrParams.GetXRayParam().GetScanMode();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.MEMBRANE_TYPE:
- {
- a_nValue = (int)this.GetMembraneType();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELD_STOP_TYPE:
- {
- a_nValue = (int)m_poMsrParams.GetImageScanParam().GetFieldStopMode();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
- {
- a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetBGRemoveType();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
- {
- a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetAutoBGRemoveType();
- }
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- public bool SetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
- {
- if (OTS_GET_IMAGE_MODE.MIN > (OTS_GET_IMAGE_MODE)a_nValue || (OTS_GET_IMAGE_MODE)a_nValue > OTS_GET_IMAGE_MODE.MAX)
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetStartImageMode((OTS_GET_IMAGE_MODE)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
- {
- if (OTS_MEASURE_STOP_MODE.MIN > (OTS_MEASURE_STOP_MODE)a_nValue || (OTS_MEASURE_STOP_MODE)a_nValue > OTS_MEASURE_STOP_MODE.MAX)
- {
- return false;
- }
- if (m_poMsrParams.GetImageScanParam().GetStopMode() != (OTS_MEASURE_STOP_MODE)a_nValue)
- {
- m_poMsrParams.GetImageScanParam().SetStopMode((OTS_MEASURE_STOP_MODE)a_nValue);
- m_poMsrStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
- {
- if (OTS_THREE_TIES_OPTIONS.MIN > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.MAX)
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetScanImageSpeed((OTS_THREE_TIES_OPTIONS)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
- {
- if (OTS_FIVE_TIES_OPTIONS.MIN > (OTS_FIVE_TIES_OPTIONS)a_nValue || (OTS_FIVE_TIES_OPTIONS)a_nValue > OTS_FIVE_TIES_OPTIONS.MAX)
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetImagePixelSize((OTS_FIVE_TIES_OPTIONS)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
- {
- if (OTS_THREE_TIES_OPTIONS.MIN > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.MAX)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetSearchSpeed((OTS_THREE_TIES_OPTIONS)a_nValue);
- }
- break;
- /*case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
- {
- if (OTS_THREE_TIES_OPTIONS.MIN > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.MAX)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetAnalySpeed((OTS_THREE_TIES_OPTIONS)a_nValue);
- }
- break;*/
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
- {
- if (OTS_X_RAY_SCAN_MODE.MIN > (OTS_X_RAY_SCAN_MODE)a_nValue || (OTS_X_RAY_SCAN_MODE)a_nValue > OTS_X_RAY_SCAN_MODE.MAX)
- {
- return false;
- }
- m_poMsrParams.GetXRayParam().SetScanMode((OTS_X_RAY_SCAN_MODE)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.MEMBRANE_TYPE:
- {
- if (MEMBRANE_TYPE.MIN > (MEMBRANE_TYPE)a_nValue || (MEMBRANE_TYPE)a_nValue > MEMBRANE_TYPE.MAX)
- {
- return false;
- }
- this.SetMembraneType((MEMBRANE_TYPE)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FIELD_STOP_TYPE:
- {
- if (OTS_MEASURE_FIELD_STOP_MODE.MIN > (OTS_MEASURE_FIELD_STOP_MODE)a_nValue || (OTS_MEASURE_FIELD_STOP_MODE)a_nValue > OTS_MEASURE_FIELD_STOP_MODE.MAX)
- {
- return false;
- }
- m_poMsrParams.GetImageScanParam().SetFieldStopMode((OTS_MEASURE_FIELD_STOP_MODE)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
- {
- if (OTS_BGREMOVE_TYPE.MIN > (OTS_BGREMOVE_TYPE)a_nValue || (OTS_BGREMOVE_TYPE)a_nValue > OTS_BGREMOVE_TYPE.MAX)
- {
- return false;
- }
- //m_poMsrParams.GetImageProcessParam().SetBGRemoveType((OTS_BGREMOVE_TYPE)a_nValue);
- m_poMsrParams.GetImageProcessParam().SetBGRemoveType((OTS_BGREMOVE_TYPE)a_nValue);
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
- {
- if (OTS_AUTOBGREMOVE_TYPE.MIN > (OTS_AUTOBGREMOVE_TYPE)a_nValue || (OTS_AUTOBGREMOVE_TYPE)a_nValue > OTS_AUTOBGREMOVE_TYPE.MAX)
- {
- return false;
- }
- //m_poMsrParams.GetImageProcessParam().SetAutoBGRemoveType((OTS_AUTOBGREMOVE_TYPE)a_nValue);
- m_poMsrParams.GetImageProcessParam().SetAutoBGRemoveType((OTS_AUTOBGREMOVE_TYPE)a_nValue);
- }
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- public bool GetPropComboStrings(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, List<string> a_listComboStrings)
- {
- // clear the strings list
- a_listComboStrings.Clear();
- // set the strings list
- string strItem;
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
- {
- for (int i = (int)OTS_GET_IMAGE_MODE.MIN; i <= (int)OTS_GET_IMAGE_MODE.MAX; ++i)
- {
- strItem = MultiLang.GetInstance().GetStringByKey(GrpNormalParam, IDS_IMAGE_MODE_FIRST + i);
- a_listComboStrings.Add(strItem);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
- {
- for (int i = (int)OTS_MEASURE_STOP_MODE.MIN; i <= (int)OTS_MEASURE_STOP_MODE.MAX; ++i)
- {
- strItem = MultiLang.GetInstance().GetStringByKey(GrpNormalParam, IDS_MEASURE_STOP_MODE_FIRST + i);
- a_listComboStrings.Add(strItem);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
- case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
- //case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
- {
- for (int i = (int)OTS_THREE_TIES_OPTIONS.MIN; i <= (int)OTS_THREE_TIES_OPTIONS.MAX; ++i)
- {
- strItem = MultiLang.GetInstance().GetStringByKey(GrpNormalParam, IDS_THREE_TIES_OPTIONS_FIRST + i);
- a_listComboStrings.Add(strItem);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
- {
- for (int i = (int)OTS_FIVE_TIES_OPTIONS.MIN; i <= (int)OTS_FIVE_TIES_OPTIONS.MAX; ++i)
- {
- strItem = RESOLUTION_STRINGS[RESOLUTION_ID_FIRST_TIE + i];
- a_listComboStrings.Add(strItem);
- }
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
- {
- for (int i = (int)OTS_X_RAY_SCAN_MODE.MIN; i <= (int)OTS_X_RAY_SCAN_MODE.MAX; ++i)
- {
- strItem = MultiLang.GetInstance().GetStringByKey(GrpNormalParam, IDS_X_RAY_SCAN_MODE_FIRST + i);
- a_listComboStrings.Add(strItem);
- }
- }
- break;
- /*case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
- {
- for (int i = (int)STEEL_TECHNOLOGY.MIN; i <= (int)STEEL_TECHNOLOGY.MAX; ++i)
- {
- strItem = MultiLang.GetInstance().GetstringByKey(IDS_STEEL_TECHNOLOGY + i);
- a_listComboStrings.push_back(strItem);
- }
- }
- break;*/
- default:
- {
- // something wrong, return false
- return false;
- }
- //break;
- }
- // ok, return true
- return true;
- }
- // time data
- public bool GetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, DateTime a_oValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
- {
- a_oValue = m_poMsrStatus.GetStartTime();
- }
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
- {
- a_oValue = m_poMsrStatus.GetEndTime();
- }
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- public bool SetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, DateTime a_oValue)
- {
- switch (a_nId)
- {
- // read only property, tread as default.
- case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
- break;
- case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- // time span data (1)
- public bool GetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, TimeSpan a_oValue)
- {
- switch (a_nId)
- {
- case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
- {
- a_oValue = m_poMsrStatus.GetUsedTime();
- }
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- public bool SetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, TimeSpan a_oValue)
- {
- switch (a_nId)
- {
- // read only property, tread as default.
- case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
- break;
- default:
- {
- // something wrong, return false
- return false;
- }
-
- }
- // ok, return true
- return true;
- }
- public double CalculatePixelSize()
- {
- // pixel size
- double dPixelSize = 0.0;
- // make sure SEM is valid
- if (m_poSEMDataMsr !=new CSEMDataMsr())
- {
- // get scan field size
- int nScanFieldSize = m_poSEMDataMsr.GetScanFieldSize();
- // get image size
- OTS_FIVE_TIES_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImagePixelSize();
- long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
- int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
- // calculate pixel size
- dPixelSize = (double)nScanFieldSize / (double)nImageSize;
- }
- // return pixel size
- return dPixelSize;
- }
- // calculate field area
- public double CalculateAFieldArea()
- {
- // pixel size
- double dAFieldArea = 0.0;
- // make sure SEM is valid
- if (m_poSEMDataMsr != new CSEMDataMsr())
- {
- // get image size
- OTS_FIVE_TIES_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImagePixelSize();
- long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
- int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
- // pixel size (micros)
- double dPixelSize = 0;
- dPixelSize = CalculatePixelSize();
- // calculate pixel size
- dAFieldArea = (double)nImageSize * (double)nImageSize * 0.75 * dPixelSize * dPixelSize * 0.000001;// mm^2
- }
- // return pixel size
- return dAFieldArea;
- }
- public bool GetBSESize(int a_nWidth, int a_nHeight)
- {
- // scan parameters
- CMsrParams pMsrParam = GetMsrParams();
-
-
- COTSImgScanPrm pImgScanParam = pMsrParam.GetImageScanParam();
- // get image size
- OTS_FIVE_TIES_OPTIONS nImageSizeId = pImgScanParam.GetImagePixelSize();
- int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
- Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
- // get scan field size
- a_nWidth = sizePixelImage.Width;
- a_nHeight = sizePixelImage.Height;
- return true;
- }
-
- }
- }
|