Example #1
0
        private void createRecord(Storage.Database db, IWaypointData data)
        {
            using (MemoryStream ms = new MemoryStream(DataBuffer))
            using (BinaryWriter bw = new BinaryWriter(ms))
            {
                ms.Position = 0;

                ms.Position = 150;
                bw.Write(Utils.Conversion.DateTimeToLong(data.DataFromDate)); //150
                bw.Write((bool)(data.Lat != null)); //158
                bw.Write(data.Lat == null ? (double)0.0 : (double)data.Lat); //159
                bw.Write((bool)(data.Lon != null)); //167
                bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168
                bw.Write(Utils.Conversion.DateTimeToLong(data.Time)); //176
                bw.Write(data.WPType.ID); //184
                //spare
                ms.Position = 200;
                bw.Write(data.GeocacheCode);
                ms.Position = 240;
                bw.Write(data.Code ?? "");
                ms.Position = 280;
                bw.Write(GetSafeString(280, 500, data.Description) ?? "");
                ms.Position = 500;
                bw.Write(GetSafeString(500, 600, data.Name) ?? "");
                ms.Position = 600;
                bw.Write(data.Url ?? "");
                ms.Position = 700;
                bw.Write(data.UrlName ?? "");
                ms.Position = 800;
                bw.Write(data.Comment ?? "");

                RecordInfo = db.RequestWaypointRecord(data.ID, data.GeocacheCode, DataBuffer, ms.Position, 100);
            }
        }
Example #2
0
        //new record to be stored
        public Waypoint(Storage.Database db, IWaypointData data)
            : base(null)
        {
            _id = data.ID;
            using (MemoryStream ms = new MemoryStream(_buffer))
            using (BinaryWriter bw = new BinaryWriter(ms))
            {
                ms.Position = 0;
                //todo: add string length checks!!!

                ms.Position = 150;
                bw.Write(data.DataFromDate.ToFileTime()); //150
                bw.Write((bool)(data.Lat!=null)); //158
                bw.Write(data.Lat==null ? (double)0.0: (double)data.Lat); //159
                bw.Write((bool)(data.Lon != null)); //167
                bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168
                bw.Write(data.Time.ToFileTime()); //176
                bw.Write(data.WPType.ID); //188
                //spare
                ms.Position = 200;
                bw.Write(data.GeocacheCode);
                ms.Position = 240;
                bw.Write(data.Code);
                ms.Position = 280;
                bw.Write(data.Description);
                ms.Position = 500;
                bw.Write(data.Name);
                ms.Position = 600;
                bw.Write(data.Url);
                ms.Position = 700;
                bw.Write(data.UrlName);
                ms.Position = 800;
                bw.Write(data.Comment);

                RecordInfo = db.RequestWaypointRecord(data.ID, _buffer, ms.Position, 100);
            }
            db.WaypointCollection.Add(this);
        }