/// <summary> /// liefert den Offset für einen Objekttyp oder einen negativen Wert /// </summary> /// <param name="contenttype"></param> /// <returns></returns> public int GetOffset4ObjectType(GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent contenttype) { for (int i = 0; i < OffsetContent.Length; i++) { if (OffsetContent[i] == contenttype) { return(OffsetTab[i]); } } return(-1); }
/// <summary> /// liefert den Datenblock in RGN bzgl. des SubdivContentBlock in RGN für das Objekt /// </summary> /// <param name="contenttype"></param> /// <param name="idx"></param> /// <returns></returns> public GarminCore.DataBlock GetDataBlock4Object(GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent contenttype, int idx) { GarminCore.DataBlock block = new GarminCore.DataBlock(); block.Offset = SubdivfInfo.Data.Offset; block.Offset += (uint)GetOffset4ObjectType(contenttype); switch (contenttype) { case GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent.poi: for (int i = 0; i < idx; i++) { block.Offset += SubdivData.PointList1[i].DataLength; } block.Length = SubdivData.PointList1[idx].DataLength; break; case GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent.idxpoi: for (int i = 0; i < idx; i++) { block.Offset += SubdivData.PointList2[i].DataLength; } block.Length = SubdivData.PointList2[idx].DataLength; break; case GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent.line: for (int i = 0; i < idx; i++) { block.Offset += SubdivData.LineList[i].DataLength; } block.Length = SubdivData.LineList[idx].DataLength; break; case GarminCore.Files.StdFile_TRE.SubdivInfoBasic.SubdivContent.area: for (int i = 0; i < idx; i++) { block.Offset += SubdivData.AreaList[i].DataLength; } block.Length = SubdivData.AreaList[idx].DataLength; break; } return(block); }