Example #1
0
		private static PlanElement FromRectangleSimple(ElementBaseRectangle elem, bool mouseOver)
		{
			var rect = elem.GetRectangle();
			var pt = new PointCollection {
				rect.TopLeft,
				rect.TopRight,
				rect.BottomRight,
				rect.BottomLeft
			};

			var showHint = true;

			if (HasProperty(elem, "ShowTooltip"))
			{
				showHint = (bool)GetProperty(elem, "ShowTooltip");
			}

			Guid zoneUID = Guid.Empty;
			if (HasProperty(elem, "ZoneUID"))
			{
				zoneUID = (Guid)GetProperty(elem, "ZoneUID");
			}

			var backgroundImage = GetBackgroundContent(elem.BackgroundImageSource, elem.ImageType, elem.Width, elem.Height);
			var shape = new PlanElement
			{
				Path = InternalConverter.PointsToPath(pt.ToWindowsPointCollection(), PathKind.ClosedLine),
				Border = InternalConverter.ConvertColor(elem.BorderColor.ToWindowsColor()),
				BorderMouseOver = InternalConverter.ConvertColor(Colors.Orange),
				Name = elem.PresentationName,
				Id = zoneUID == Guid.Empty ? "pe" + elem.UID : "pe" + zoneUID,
				Image = backgroundImage,
				X = elem.Left,
				Y = elem.Top,
				Hint = showHint ? GetElementHint(elem) : null,
				GkObject = GetGkObject(elem),
				BorderThickness = elem.BorderThickness,
				Type = ShapeTypes.Path.ToString(),
				HasOverlay = mouseOver,
				Width = elem.Width,
				Height = elem.Height
			};
			var asZone = elem as IElementZone;
			if (asZone == null)
				return shape;
			var zone = GKManager.Zones.FirstOrDefault(z => z.UID == asZone.ZoneUID);
			if (zone != null)
			{
				var background = GetGKZoneStateColor(zone.State.StateClass);
				shape.Fill = InternalConverter.ConvertColor(background);
				return shape;
			}
			var zoneSkd = GKManager.SKDZones.FirstOrDefault(z => z.UID == asZone.ZoneUID);
			if (zoneSkd != null)
			{
				var background = GetGKSKDZoneStateColor(zoneSkd.State.StateClass);
				shape.Fill = InternalConverter.ConvertColor(background);
				return shape;
			}
			var zoneSec = GKManager.GuardZones.FirstOrDefault(z => z.UID == asZone.ZoneUID);
			if (zoneSec != null)
			{
				var background = GetGKGuardZoneStateColor(zoneSec.State.StateClass);
				shape.Fill = InternalConverter.ConvertColor(background);
			}
			return shape;
		}