private KmlProperties GetPropertiesFromControls()
        {
            var controlProperties = new KmlProperties
                                {
                                  MapType = (includeMap.Checked ? KmlExportMapType.Map : KmlExportMapType.None)
                                };
              if (includeRoute.Checked && routeLineStyle.SelectedIndex == 0) controlProperties.MapType = KmlExportMapType.MapAndRoute;

              if (!includeRoute.Checked)
              {
            controlProperties.RouteType = KmlExportRouteType.None;
              }
              else
              {
            switch (routeLineStyle.SelectedIndex)
            {
              case 1:
            controlProperties.RouteType = KmlExportRouteType.Monochrome;
            break;
              case 2:
            controlProperties.RouteType = KmlExportRouteType.ColorCoded;
            break;
              default:
            controlProperties.RouteType = KmlExportRouteType.None;
            break;
            }
              }
              controlProperties.RouteAdaptionStyle = includeMap.Checked && adaptRouteToMapImage.Checked
                                               ? KmlRouteAdaptationStyle.AdaptToSessionMapImage
                                               : KmlRouteAdaptationStyle.NoAdaption;

              if (!includeReplay.Checked)
              {
            controlProperties.ReplayType = KmlExportReplayType.None;
              }
              else
              {
            switch (replayMarkerStyle.SelectedIndex)
            {
              case 0:
            controlProperties.ReplayType = KmlExportReplayType.Monochrome;
            break;
              case 1:
            controlProperties.ReplayType = KmlExportReplayType.ColorCoded;
            break;
              default:
            controlProperties.ReplayType = KmlExportReplayType.None;
            break;
            }
            double timeInterval = 1;
            double.TryParse(replayTimeInterval.Text, out timeInterval);
            timeInterval = Math.Max(0.1, Math.Min(3600, timeInterval));
            controlProperties.ReplayTimeInterval = new TimeSpan((long)(timeInterval * TimeSpan.TicksPerSecond));

            var tails = new List<KmlReplayTail>();
            if (replayTailVisible.Checked)
            {
              var tail = new KmlReplayTail() { StartVisible = new TimeSpan(0) };
              double tailDurationSeconds = 0;
              if (double.TryParse(replayTailDuration.Text, out tailDurationSeconds))
              {
            tailDurationSeconds = Math.Max(0.1, Math.Min(3600, tailDurationSeconds));
            tail.EndVisible = new TimeSpan((long)(tailDurationSeconds * TimeSpan.TicksPerSecond));
              }
              else
              {
            tail.EndVisible = null; // infinite
              }
              tails.Add(tail);
            }
            controlProperties.ReplayTails = tails;
              }

              return controlProperties;
        }
Example #2
0
 public object Clone()
 {
     var clone = new KmlReplayTail()
       {
     StartVisible = StartVisible,
     EndVisible = EndVisible
       };
       if (RouteLineStyle != null) clone.RouteLineStyle = RouteLineStyle.Clone() as KmlLineStyle;
       return clone;
 }
        private KmlMultipleFileExporterProperties GetPropertiesFromControls()
        {
            var p = new KmlMultipleFileExporterProperties();

              // include routes
              p.IncludeRoutes = includeRoutes.Checked;

              // include replay
              p.IncludeReplay = includeReplay.Checked;

              // mass start
              p.MassStart = massStart.Checked;

              // tails
              var tails = new List<KmlReplayTail>();
              if (replayTailsVisible.Checked)
              {
            var tail = new KmlReplayTail() { StartVisible = new TimeSpan(0) };
            double tailDurationSeconds = 0;
            if (double.TryParse(replayTailDuration.Text, out tailDurationSeconds))
            {
              tailDurationSeconds = Math.Max(0.1, Math.Min(3600, tailDurationSeconds));
              tail.EndVisible = new TimeSpan((long)(tailDurationSeconds * TimeSpan.TicksPerSecond));
            }
            else
            {
              tail.EndVisible = null;
            }
            tails.Add(tail);
              }
              p.ReplayTails = tails;

              // replay time interval
              double timeInterval;
              if (double.TryParse(replayTimeInterval.Text, out timeInterval))
              {
            timeInterval = Math.Max(0.1, Math.Min(3600, timeInterval));
            p.ReplayTimeInterval = new TimeSpan((long)(timeInterval * TimeSpan.TicksPerSecond));
              }
              else
              {
            p.ReplayTimeInterval = originalMultipleFileProperties.ReplayTimeInterval;
              }

              // restart after each lap
              p.ReplayRestartAfterEachLap = replayRestartAfterEachLap.Checked;

              // opacity
              var opacity = (originalMultipleFileProperties.Colors.Count > 0 ? (double)originalMultipleFileProperties.Colors[0].A / 255 : 1.0);
              for (var i = 0; i < originalMultipleFileProperties.Colors.Count; i++)
              {
            p.Colors[i] = Color.FromArgb((int)(255 * opacity), p.Colors[i]);
              }

              // route line width
              p.RouteLineWidth = originalMultipleFileProperties.RouteLineWidth;

              return p;
        }
Example #4
0
        private void CreateReplayTails(Session session, KmlExportDocument parentDocument, KmlReplayTail templateTail, XmlWriter writer, IFormatProvider formatProvider)
        {
            LogUtil.LogDebug("start");
              var sessionSettings = parentDocument.ImageExporter.Properties.SessionSettings ?? session.Settings;
              KmlLineStyle routeLineStyle = null;
              if (KmlProperties.ReplayType == KmlExportReplayType.Monochrome)
              {
            routeLineStyle = templateTail.RouteLineStyle ?? GetRouteLineStyleForSession(session);
              }

              var route = GetRouteForSession(session, parentDocument);
              foreach (var segment in route.Segments)
              {
            var waypoints = route.GetEquallySpacedWaypoints(segment.FirstWaypoint.Time, segment.LastWaypoint.Time,
                                                                KmlProperties.ReplayTimeInterval);
            for (var i = 1; i < waypoints.Count; i++)
            {
              var lastWaypoint = waypoints[i - 1];
              var waypoint = waypoints[i];
              // create tail
              DateTime? lineAppearTime = null;
              DateTime? lineDisappearTime = null;
              if (templateTail.StartVisible.HasValue)
              {
            lineAppearTime = waypoint.Time.Add(templateTail.StartVisible.Value);
            if (lineAppearTime < segment.FirstWaypoint.Time.Add(templateTail.StartVisible.Value)) lineAppearTime = segment.FirstWaypoint.Time;
            if (lineAppearTime > segment.LastWaypoint.Time.Add(templateTail.StartVisible.Value)) lineAppearTime = segment.LastWaypoint.Time;
              }
              if (templateTail.EndVisible.HasValue)
              {
            // subtract a millisecond from the time to ensure tail disappears correctly
            lineDisappearTime = waypoint.Time.Add(templateTail.EndVisible.Value).Subtract(new TimeSpan(TimeSpan.TicksPerMillisecond));
            if (lineDisappearTime < segment.FirstWaypoint.Time.Add(templateTail.EndVisible.Value)) lineDisappearTime = segment.FirstWaypoint.Time;
            if (lineDisappearTime > segment.LastWaypoint.Time.Add(templateTail.EndVisible.Value)) lineDisappearTime = segment.LastWaypoint.Time;
              }

              if (KmlProperties.ReplayType == KmlExportReplayType.ColorCoded)
              {
            routeLineStyle = GetLineStyleFromWaypoint(waypoint, parentDocument.ImageExporter, sessionSettings);
              }
              CreateLineStringPlacemark(new[] { lastWaypoint, waypoint }, routeLineStyle,
                                    lineAppearTime, lineDisappearTime, writer, formatProvider);
            }
              }
              LogUtil.LogDebug("end");
        }