| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | using OTSCLRINTERFACE;using OTSDataType;using OTSModelSharp.DTLBase;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace OTSModelSharp{    public class CXRayDataDB : CSQLiteDB    {        List<CPosXrayClr> m_listPosXray;         const long GENERALXRAYCHANNELS = 2000;             public CXRayDataDB(IDBStoreBase _fileName, IDBTableBase _table) : base(_fileName, _table)        {            m_listPosXray = new List<CPosXrayClr>();        }             public  List< CPosXrayClr> GetXrayList( bool a_bForce/* = FALSE*/)	    {		if (a_bForce)		{			m_listPosXray.Clear();		}		if (m_listPosXray.Count == 0)		{			ReadAllXrayList();        }		return m_listPosXray;	    }       public bool ReadAllXrayList()        {            var t = GetTableInfo();            var query = GetTableQueryForDataTable(t.GetTableName());                       ReadXrayListFromAQuery(query,ref m_listPosXray);            return true;        }       public  bool ReadXrayListFromAQuery(DataTable a_query,ref List<CPosXrayClr> a_XrayList)        {                       Dictionary<List<int>, CPosXrayClr> mapXrayInfo = new Dictionary<List<int>, CPosXrayClr>();            foreach (DataRow row in a_query.Rows)            {                int nCol = (int)CXRayDataTable.ColumnID.N_FIELD_ID - (int)CXRayDataTable.ColumnID.MIN;                int curFldId = Convert.ToInt32(row[nCol]);                nCol = (int)CXRayDataTable.ColumnID.N_INDEX - (int)CXRayDataTable.ColumnID.MIN;                int xrayId = Convert.ToInt32(row[nCol]);                List<int> fldvec = new List<int>();                fldvec.Add(curFldId);                fldvec.Add(xrayId);                nCol = (int)CXRayDataTable.ColumnID.N_XRAY_DATA - (int)CXRayDataTable.ColumnID.MIN;                byte[] xraydata = (byte[])row[nCol];                uint[] uintData = new uint[GENERALXRAYCHANNELS];                for (int j = 0; j < GENERALXRAYCHANNELS; j++)                {                    int m = j * 4;                    uint d = xraydata[m + 3];                    d = d << 8;                    d = d | xraydata[m + 2];                    d = d << 8;                    d = d | xraydata[m + 1];                    d = d << 8;                    d = d | xraydata[m];                    uintData[j] = d;                }                if (!mapXrayInfo.ContainsKey(fldvec))                {                    CPosXrayClr xray = new CPosXrayClr();                    xray.SetXrayData(uintData);                    mapXrayInfo.Add(fldvec, xray);                }                else                {                    CPosXrayClr xray = mapXrayInfo[fldvec];                    xray.SetXrayData(uintData);                }            }            foreach (var keyvalue in mapXrayInfo)            {                a_XrayList.Add(keyvalue.Value);            }            return true;        }             public bool GetAllMapedXrayData(ref Dictionary<List<int>, CPosXrayClr> mapXrayInfo)        {            var t = GetTableInfo();            var query = GetTableQueryForDataTable(t.GetTableName());            foreach (DataRow row in query.Rows)            {                int nCol = (int)CXRayDataTable.ColumnID.N_FIELD_ID - (int)CXRayDataTable.ColumnID.MIN;                int curFldId = Convert.ToInt32(row[nCol]);                nCol = (int)CXRayDataTable.ColumnID.N_INDEX - (int)CXRayDataTable.ColumnID.MIN;                int xrayId = Convert.ToInt32(row[nCol]);                List<int> fldvec = new List<int>();                fldvec.Add(curFldId);                fldvec.Add(xrayId);                nCol = (int)CXRayDataTable.ColumnID.N_XRAY_DATA - (int)CXRayDataTable.ColumnID.MIN;                byte[] xraydata = (byte[])row[nCol];                uint[] uintData = new uint[GENERALXRAYCHANNELS];                for (int j = 0; j < GENERALXRAYCHANNELS; j++)                {                    int m = j * 4;                    uint d = xraydata[m + 3];                    d = d << 8;                    d = d | xraydata[m + 2];                    d = d << 8;                    d = d | xraydata[m + 1];                    d = d << 8;                    d = d | xraydata[m];                    uintData[j] = d;                }                if (!mapXrayInfo.ContainsKey(fldvec))                {                    CPosXrayClr xray = new CPosXrayClr();                    xray.SetXrayData(uintData);                    mapXrayInfo.Add(fldvec, xray);                }                else                {                    CPosXrayClr xray = mapXrayInfo[fldvec];                    xray.SetXrayData(uintData);                }            }            return true;        }    }}
 |