Esempio n. 1
0
        private Point RotateVector(Point o, double angleRadian)
        {
            Point point = new Point();

            point.set_X((o.get_X() * Math.Cos(angleRadian)) - (o.get_Y() * Math.Sin(angleRadian)));
            point.set_Y((o.get_X() * Math.Sin(angleRadian)) + (o.get_Y() * Math.Cos(angleRadian)));
            point.set_X((double)((int)point.get_X()));
            point.set_Y((double)((int)point.get_Y()));
            return(point);
        }
Esempio n. 2
0
 public Point CalcNonStraightCenter(Point pTo)
 {
     Point point = new Point();
     point.set_X(base.PointCore.get_X() + (Math.Sign((double) (pTo.get_X() - base.PointCore.get_X())) * 6));
     point.set_Y(base.PointCore.get_Y() + (Math.Sign((double) (pTo.get_Y() - base.PointCore.get_Y())) * 6));
     return point;
 }
Esempio n. 3
0
        private Point PointData2Point(PointData pd1, Rectangle rc)
        {
            Point point = new Point();

            point.set_X(this.Position2PointX(pd1.Position, rc));
            point.set_Y(this.DateTime2PointY(pd1.DateTime, rc));
            return(point);
        }
Esempio n. 4
0
        public Point CalcCenter(Point pTo)
        {
            Point point = new Point();

            point.set_X(this.PointCore.get_X() + (((int)(pTo.get_X() - this.PointCore.get_X())) >> 1));
            point.set_Y(this.PointCore.get_Y() + (((int)(pTo.get_Y() - this.PointCore.get_Y())) >> 1));
            return(point);
        }
Esempio n. 5
0
        public Point CalcNonStraightCenter(Point pTo)
        {
            Point point = new Point();

            point.set_X(base.PointCore.get_X() + (Math.Sign((double)(pTo.get_X() - base.PointCore.get_X())) * 6));
            point.set_Y(base.PointCore.get_Y() + (Math.Sign((double)(pTo.get_Y() - base.PointCore.get_Y())) * 6));
            return(point);
        }
Esempio n. 6
0
        public static bool GetOffsettedValue(PathElement peHead, double HeadOffset, int HeadElementArrivedSource, ref Point ptOut)
        {
            Point point = new Point();

            int[] sources = peHead.GetSources();
            Debug.Assert(sources.Length == 2);
            Point connectionSourcePoint = peHead.GetConnectionSourcePoint(sources[0]);
            Point point3 = peHead.GetConnectionSourcePoint(sources[1]);

            if (sources.Length != 2)
            {
                return(false);
            }
            double introduced12 = Math.Pow(connectionSourcePoint.get_X() - point3.get_X(), 2.0);
            double num          = Math.Sqrt(introduced12 + Math.Pow(connectionSourcePoint.get_Y() - point3.get_Y(), 2.0));
            double num2         = (num * HeadOffset) / ((peHead.Length == 0) ? ((double)1) : ((double)peHead.Length));
            double num3         = 1.0;
            double num4         = 0.0;

            if (!(connectionSourcePoint.get_Y() == point3.get_Y()))
            {
                num3 = Math.Abs((double)(point3.get_X() - connectionSourcePoint.get_X())) / num;
                num4 = Math.Abs((double)(point3.get_Y() - connectionSourcePoint.get_Y())) / num;
            }
            double num5 = num2 * num3;
            double num6 = num2 * num4;

            if (HeadElementArrivedSource == sources[0])
            {
                if (connectionSourcePoint.get_X() <= point3.get_X())
                {
                    connectionSourcePoint.set_X(connectionSourcePoint.get_X() + ((int)num5));
                }
                else
                {
                    connectionSourcePoint.set_X(connectionSourcePoint.get_X() - ((int)num5));
                }
                if (connectionSourcePoint.get_Y() <= point3.get_Y())
                {
                    connectionSourcePoint.set_Y(connectionSourcePoint.get_Y() + ((int)num6));
                }
                else
                {
                    connectionSourcePoint.set_Y(connectionSourcePoint.get_Y() - ((int)num6));
                }
                point = connectionSourcePoint;
            }
            else
            {
                if (point3.get_X() <= connectionSourcePoint.get_X())
                {
                    point3.set_X(point3.get_X() + ((int)num5));
                }
                else
                {
                    point3.set_X(point3.get_X() - ((int)num5));
                }
                if (point3.get_Y() <= connectionSourcePoint.get_Y())
                {
                    point3.set_Y(point3.get_Y() + ((int)num6));
                }
                else
                {
                    point3.set_Y(point3.get_Y() - ((int)num6));
                }
                point = point3;
            }
            ptOut = point;
            return(true);
        }
Esempio n. 7
0
 private void DrawCurve(TrainCurveData c, Rectangle rc, List <Line> rectangles, int startIndex)
 {
     if ((c != null) && (c.Points != null))
     {
         PointData data;
         PointData data2;
         int       num           = 0;
         int       num2          = -1;
         Line      item          = new Line();
         Color     color         = Colors.get_Black();
         double    widthRequires = 0.0;
         if (c.Points.Count > 0)
         {
             widthRequires = this.DrawCurveTitle(rc, c.Points[0], c.Points[0], c.Caption, false);
         }
         for (int i = startIndex; i < (c.Points.Count - 1); i++)
         {
             data  = c.Points[i];
             data2 = c.Points[i + 1];
             if (!c.Regular)
             {
                 TimeSpan span = (TimeSpan)(data.DateTime - data2.DateTime);
                 if (this.IsGap((double)(data.Position - data2.Position), span.TotalMinutes))
                 {
                     c.CaptionHasDrawn   = false;
                     c.CaptionStartIndex = i + 1;
                     continue;
                 }
             }
             color = SilverlightHelper.ConvertToColor(data2.Color);
             Line line2 = new Line();
             line2.set_X1(this.Position2PointX(data.Position, rc));
             line2.set_Y1(this.DateTime2PointY(data.DateTime, rc));
             line2.set_X2(this.Position2PointX(data2.Position, rc));
             line2.set_Y2(this.DateTime2PointY(data2.DateTime, rc));
             line2.set_Width(1251.0);
             line2.set_Height(this.CanvasRoot_ActualHeight);
             line2.set_StrokeThickness(2.0);
             line2.set_Stroke(new SolidColorBrush(color));
             this.CanvasRoot.get_Children().Add(line2);
             if (c.Regular && (c.Caption.Length > 0))
             {
                 if (!this.HasInsersection(rectangles, line2))
                 {
                     int num5 = data2.Position - data.Position;
                     if (num5 > num)
                     {
                         num  = num5;
                         num2 = i;
                         item = this.LineClone(line2);
                     }
                 }
             }
             else if (!c.CaptionHasDrawn)
             {
                 int  num6;
                 int  num7;
                 int  num8;
                 bool flag;
                 if (this.GetGoodPointsForTitle(c, c.CaptionStartIndex, rc, widthRequires, out num6, out num7, out num8, out flag))
                 {
                     c.CaptionHasDrawn = true;
                     this.DrawCurveTitle(rc, c.Points[num6], c.Points[num7], c.Caption, true);
                 }
                 else if (flag)
                 {
                     c.CaptionStartIndex = num8;
                 }
             }
         }
         if ((c.Regular && (c.Caption.Length > 0)) && (num2 != -1))
         {
             data  = c.Points[num2];
             data2 = c.Points[num2 + 1];
             color = SilverlightHelper.ConvertToColor(data2.Color);
             if (rectangles != null)
             {
                 rectangles.Add(item);
             }
             Point point  = new Point();
             Point point2 = new Point();
             point.set_X(this.Position2PointX(data.Position, rc));
             point.set_Y(this.DateTime2PointY(data.DateTime, rc));
             point2.set_X(this.Position2PointX(data2.Position, rc));
             point2.set_Y(this.DateTime2PointY(data2.DateTime, rc));
             double    rotationAngle = SilverlightHelper.GetRotationAngle(point, point2);
             double    num10         = point2.get_X() - point.get_X();
             TextBlock block         = new TextBlock();
             block.SetValue(Canvas.TopProperty, point.get_Y() + 5.0);
             block.SetValue(Canvas.LeftProperty, point.get_X());
             block.SetValue(FrameworkElement.WidthProperty, num10);
             block.SetValue(FrameworkElement.HeightProperty, 50.0);
             block.set_Width(num10);
             block.set_Text(c.Caption);
             block.set_FontSize(17.0);
             block.set_FontFamily(new FontFamily("Arial"));
             block.set_Foreground(new SolidColorBrush(color));
             block.set_FontStyle(FontStyles.get_Normal());
             block.set_FontWeight(FontWeights.get_Bold());
             RotateTransform transform = new RotateTransform();
             transform.set_Angle(-rotationAngle);
             block.set_RenderTransform(transform);
             block.set_TextAlignment(0);
             this.CanvasRoot.get_Children().Add(block);
         }
     }
 }
Esempio n. 8
0
 public Point CalcCenter(Point pTo)
 {
     Point point = new Point();
     point.set_X(this.PointCore.get_X() + (((int) (pTo.get_X() - this.PointCore.get_X())) >> 1));
     point.set_Y(this.PointCore.get_Y() + (((int) (pTo.get_Y() - this.PointCore.get_Y())) >> 1));
     return point;
 }
Esempio n. 9
0
 private void OpenForecastFloatPopup()
 {
     Point point = new Point(0.0, 0.0);
     if (this.forecastGrid.SelectedItem != null)
     {
         this.airDataContext.CurrentZoneForecast = this.forecastGrid.SelectedItem as BEPB.Forecast;
         this.forecastMsg.set_Visibility(0);
         string zone = this.airDataContext.CurrentZoneForecast.Zone;
         if (zone != null)
         {
             if (!(zone == "城六区"))
             {
                 if (zone == "西北部")
                 {
                     if (this.LastSelectedFive != this.NorthWest)
                     {
                         if (this.LastSelectedFive != null)
                         {
                             this.LastSelectedFive.Fill = this.LastSelectedFiveBrush;
                         }
                         this.LastSelectedFive = this.NorthWest;
                         this.LastSelectedFiveBrush = this.brFive;
                     }
                     this.NorthWest.Fill = new SolidColorBrush(Colors.get_Red());
                     point = this.map.LocationToViewportPoint(this.NorthWestText.Location);
                 }
                 else if (zone == "东北部")
                 {
                     if (this.LastSelectedFive != this.NorthEast)
                     {
                         if (this.LastSelectedFive != null)
                         {
                             this.LastSelectedFive.Fill = this.LastSelectedFiveBrush;
                         }
                         this.LastSelectedFive = this.NorthEast;
                         this.LastSelectedFiveBrush = this.brFive;
                     }
                     this.NorthEast.Fill = new SolidColorBrush(Colors.get_Red());
                     point = this.map.LocationToViewportPoint(this.NorthEastText.Location);
                 }
                 else if (zone == "东南部")
                 {
                     if (this.LastSelectedFive != this.SouthEast)
                     {
                         if (this.LastSelectedFive != null)
                         {
                             this.LastSelectedFive.Fill = this.LastSelectedFiveBrush;
                         }
                         this.LastSelectedFive = this.SouthEast;
                         this.LastSelectedFiveBrush = this.brFive;
                     }
                     this.SouthEast.Fill = new SolidColorBrush(Colors.get_Red());
                     point = this.map.LocationToViewportPoint(this.SouthEastText.Location);
                 }
                 else if (zone == "西南部")
                 {
                     if (this.LastSelectedFive != this.SouthWest)
                     {
                         if (this.LastSelectedFive != null)
                         {
                             this.LastSelectedFive.Fill = this.LastSelectedFiveBrush;
                         }
                         this.LastSelectedFive = this.SouthWest;
                         this.LastSelectedFiveBrush = this.brFive;
                     }
                     this.SouthWest.Fill = new SolidColorBrush(Colors.get_Red());
                     point = this.map.LocationToViewportPoint(this.SouthWestText.Location);
                 }
             }
             else
             {
                 if (this.LastSelectedFive != this.CityCenter)
                 {
                     if (this.LastSelectedFive != null)
                     {
                         this.LastSelectedFive.Fill = this.LastSelectedFiveBrush;
                     }
                     this.LastSelectedFive = this.CityCenter;
                     this.LastSelectedFiveBrush = this.brFive;
                 }
                 this.CityCenter.Fill = new SolidColorBrush(Colors.get_Red());
                 point = this.map.LocationToViewportPoint(this.CityCenterText.Location);
             }
         }
     }
     this.ForecastBorder.set_DataContext(this.airDataContext.CurrentZoneForecast);
     double popupWidth = 315.0;
     double popupHeight = 254.0;
     string isNight = this.airDataContext.CurrentZoneForecast.IsNight;
     if (isNight != null)
     {
         if (!(isNight == "0"))
         {
             if (isNight == "1")
             {
                 popupHeight = 462.0;
             }
         }
         else
         {
             popupHeight = 254.0;
         }
     }
     this.FloatForecastPopup.set_Width(popupWidth);
     this.FloatForecastPopup.set_Height(popupHeight);
     point.set_X(point.get_X() * this.mapScale);
     point.set_Y(point.get_Y() * this.mapScale);
     this.SetPopupOffset(point, this.airDataContext.CurrentZoneForecast.Zone, popupWidth, popupHeight, ref this.FloatForecastPopup);
     this.FloatForecastPopup.Open(point, new Rect(10.0, 10.0, this.map.get_ActualWidth() - 10.0, this.map.get_ActualHeight() - 10.0));
 }
Esempio n. 10
0
        public virtual Point GetTrainPoint(ArrayList alTrains, TrainBase t)
        {
            int index = -1;

            if (alTrains.Count > 1)
            {
                index = alTrains.IndexOf(t);
            }
            Point       trainPoint = this.GetTrainPoint();
            PathElement element    = this;
            Point       point2     = new Point();

            if (t.HeadElementArrivedSource != -1)
            {
                int[] sources = element.GetSources();
                Debug.Assert(sources.Length == 2);
                Point connectionSourcePoint = element.GetConnectionSourcePoint(sources[0]);
                Point point4 = element.GetConnectionSourcePoint(sources[1]);
                if (sources.Length != 2)
                {
                    return(trainPoint);
                }
                double introduced15 = Math.Pow(connectionSourcePoint.get_X() - point4.get_X(), 2.0);
                double num2         = Math.Sqrt(introduced15 + Math.Pow(connectionSourcePoint.get_Y() - point4.get_Y(), 2.0));
                double num3         = (num2 * t.HeadOffset) / ((element.Length == 0) ? ((double)1) : ((double)element.Length));
                double num4         = 1.0;
                double num5         = 0.0;
                if (!(connectionSourcePoint.get_Y() == point4.get_Y()))
                {
                    num4 = Math.Abs((double)(point4.get_X() - connectionSourcePoint.get_X())) / num2;
                    num5 = Math.Abs((double)(point4.get_Y() - connectionSourcePoint.get_Y())) / num2;
                }
                double num6 = num3 * num4;
                double num7 = num3 * num5;
                if (t.HeadElementArrivedSource == sources[0])
                {
                    if (connectionSourcePoint.get_X() <= point4.get_X())
                    {
                        connectionSourcePoint.set_X(connectionSourcePoint.get_X() + num6);
                    }
                    else
                    {
                        connectionSourcePoint.set_X(connectionSourcePoint.get_X() - num6);
                    }
                    if (connectionSourcePoint.get_Y() <= point4.get_Y())
                    {
                        connectionSourcePoint.set_Y(connectionSourcePoint.get_Y() + num7);
                    }
                    else
                    {
                        connectionSourcePoint.set_Y(connectionSourcePoint.get_Y() - num7);
                    }
                    point2 = connectionSourcePoint;
                }
                else
                {
                    if (point4.get_X() <= connectionSourcePoint.get_X())
                    {
                        point4.set_X(point4.get_X() + num6);
                    }
                    else
                    {
                        point4.set_X(point4.get_X() - num6);
                    }
                    if (point4.get_Y() <= connectionSourcePoint.get_Y())
                    {
                        point4.set_Y(point4.get_Y() + num7);
                    }
                    else
                    {
                        point4.set_Y(point4.get_Y() - num7);
                    }
                    point2 = point4;
                }
                trainPoint = point2;
                if (index != -1)
                {
                    if (connectionSourcePoint.get_Y() == point4.get_Y())
                    {
                        trainPoint.set_Y(trainPoint.get_Y() - 6.0);
                        trainPoint.set_Y(trainPoint.get_Y() + (13 * index));
                    }
                    else
                    {
                        trainPoint.set_X(trainPoint.get_X() - 6.0);
                        trainPoint.set_X(trainPoint.get_X() + (13 * index));
                    }
                }
            }
            return(trainPoint);
        }
Esempio n. 11
0
 private Point PointData2Point(PointData pd1, Rectangle rc)
 {
     Point point = new Point();
     point.set_X(this.Position2PointX(pd1.Position, rc));
     point.set_Y(this.DateTime2PointY(pd1.DateTime, rc));
     return point;
 }
Esempio n. 12
0
 private void DrawCurve(TrainCurveData c, Rectangle rc, List<Line> rectangles, int startIndex)
 {
     if ((c != null) && (c.Points != null))
     {
         PointData data;
         PointData data2;
         int num = 0;
         int num2 = -1;
         Line item = new Line();
         Color color = Colors.get_Black();
         double widthRequires = 0.0;
         if (c.Points.Count > 0)
         {
             widthRequires = this.DrawCurveTitle(rc, c.Points[0], c.Points[0], c.Caption, false);
         }
         for (int i = startIndex; i < (c.Points.Count - 1); i++)
         {
             data = c.Points[i];
             data2 = c.Points[i + 1];
             if (!c.Regular)
             {
                 TimeSpan span = (TimeSpan) (data.DateTime - data2.DateTime);
                 if (this.IsGap((double) (data.Position - data2.Position), span.TotalMinutes))
                 {
                     c.CaptionHasDrawn = false;
                     c.CaptionStartIndex = i + 1;
                     continue;
                 }
             }
             color = _SilverlightHelper.ConvertToColor(data2.Color);
             Line line2 = new Line();
             line2.set_X1(this.Position2PointX(data.Position, rc));
             line2.set_Y1(this.DateTime2PointY(data.DateTime, rc));
             line2.set_X2(this.Position2PointX(data2.Position, rc));
             line2.set_Y2(this.DateTime2PointY(data2.DateTime, rc));
             line2.set_Width(1251.0);
             line2.set_Height(this.CanvasRoot_ActualHeight);
             line2.set_StrokeThickness(2.0);
             line2.set_Stroke(new SolidColorBrush(color));
             this.CanvasRoot.get_Children().Add(line2);
             if (c.Regular && (c.Caption.Length > 0))
             {
                 if (!this.HasInsersection(rectangles, line2))
                 {
                     int num5 = data2.Position - data.Position;
                     if (num5 > num)
                     {
                         num = num5;
                         num2 = i;
                         item = this.LineClone(line2);
                     }
                 }
             }
             else if (!c.CaptionHasDrawn)
             {
                 int num6;
                 int num7;
                 int num8;
                 bool flag;
                 if (this.GetGoodPointsForTitle(c, c.CaptionStartIndex, rc, widthRequires, out num6, out num7, out num8, out flag))
                 {
                     c.CaptionHasDrawn = true;
                     this.DrawCurveTitle(rc, c.Points[num6], c.Points[num7], c.Caption, true);
                 }
                 else if (flag)
                 {
                     c.CaptionStartIndex = num8;
                 }
             }
         }
         if ((c.Regular && (c.Caption.Length > 0)) && (num2 != -1))
         {
             data = c.Points[num2];
             data2 = c.Points[num2 + 1];
             color = _SilverlightHelper.ConvertToColor(data2.Color);
             if (rectangles != null)
             {
                 rectangles.Add(item);
             }
             Point point = new Point();
             Point point2 = new Point();
             point.set_X(this.Position2PointX(data.Position, rc));
             point.set_Y(this.DateTime2PointY(data.DateTime, rc));
             point2.set_X(this.Position2PointX(data2.Position, rc));
             point2.set_Y(this.DateTime2PointY(data2.DateTime, rc));
             double rotationAngle = _SilverlightHelper.GetRotationAngle(point, point2);
             double num10 = point2.get_X() - point.get_X();
             TextBlock block = new TextBlock();
             block.SetValue(Canvas.TopProperty, point.get_Y() + 5.0);
             block.SetValue(Canvas.LeftProperty, point.get_X());
             block.SetValue(FrameworkElement.WidthProperty, num10);
             block.SetValue(FrameworkElement.HeightProperty, 50.0);
             block.set_Width(num10);
             block.set_Text(c.Caption);
             block.set_FontSize(17.0);
             block.set_FontFamily(new FontFamily("Arial"));
             block.set_Foreground(new SolidColorBrush(color));
             block.set_FontStyle(FontStyles.get_Normal());
             block.set_FontWeight(FontWeights.get_Bold());
             RotateTransform transform = new RotateTransform();
             transform.set_Angle(-rotationAngle);
             block.set_RenderTransform(transform);
             block.set_TextAlignment(0);
             this.CanvasRoot.get_Children().Add(block);
         }
     }
 }