/// <summary>
 /// Gets the polygon points.
 /// </summary>
 /// <returns>a warper for helping handling polygon points or <c>null</c> if this is not a shape that have polygon points.</returns>
 virtual public OoPolygonPointsObserver GetPolygonPointsObserver()
 {
     if (_ppObs == null && PolygonHelper.IsFreeform(Shape))
     {
         _ppObs = new OoPolygonPointsObserver(this);
     }
     return(_ppObs);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PolygonPointSelectedEventArgs"/> class.
 /// </summary>
 /// <param name="ppobs">polygon points observer.</param>
 /// <param name="point">current selected point.</param>
 public PolygonPointSelectedEventArgs(OoPolygonPointsObserver ppobs, tud.mci.tangram.util.PolyPointDescriptor point)
 {
     PolygonPoints = ppobs;
     Point = point;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PolygonPointSelectedEventArgs"/> class with empty Members. 
 /// Should only be used to reset the listeners.
 /// </summary>
 public PolygonPointSelectedEventArgs()
 {
     PolygonPoints = null;
     Point = new util.PolyPointDescriptor();
 }
 private void fire_PolygonPointSelected(OoPolygonPointsObserver ppobs, util.PolyPointDescriptor point)
 {
     if (PolygonPointSelected != null)
     {
         Task t = new Task(new Action(() => { try { PolygonPointSelected.Invoke(this, new PolygonPointSelectedEventArgs(ppobs, point)); } catch { } }));
         t.Start();
     }
 }
        /// <summary>
        /// Gets a compressed textual description for Braille text output for a polygon point.
        /// </summary>
        /// <param name="pointsObs">The points observer.</param>
        /// <returns>a string suitable for short Braille output.</returns>
        public static string GetPointText(OoPolygonPointsObserver pointsObs)
        {
            if (pointsObs != null)
            {
                int index;
                var point = pointsObs.Current(out index);
                if (!point.Equals(default(PolyPointDescriptor)))
                {

                    index += 1;
                    string nodeType = LL.GetTrans("tangram.oomanipulation.element_speaker.label." + point.Flag.ToString());


                    String text = LL.GetTrans("tangram.oomanipulation.element_speaker.text.point",
                        nodeType,
                        index,
                        pointsObs.Count,
                         (((float)point.X / 1000f)).ToString("0.##cm"),
                         (((float)point.Y / 1000f)).ToString("0.##cm")
                        );

                    //point.Flag.ToString() + " (" + index + "/" + pointsObs.Count + ") - x:" + point.X + " y:" + point.Y;

                    return text;
                }
            }
            return String.Empty;
        }
        /// <summary>
        /// Gets an audio description for auditory output for a polygon point.
        /// </summary>
        /// <param name="pointsObs">The points observer.</param>
        /// <returns>a string suitable for auditory output.</returns>
        public static string GetPointAudio(OoPolygonPointsObserver pointsObs)
        {
            if (pointsObs != null)
            {
                int index;
                var point = pointsObs.Current(out index);
                if (!point.Equals(default(PolyPointDescriptor)))
                {

                    index += 1;
                    string nodeType = LL.GetTrans("tangram.oomanipulation.element_speaker.label." + point.Flag.ToString());

                    String audio = LL.GetTrans("tangram.oomanipulation.element_speaker.audio.point",
                        nodeType,
                        index,
                        pointsObs.Count
                        );

                    return audio;
                }
            }
            return String.Empty;
        }
        /// <summary>
        /// Returns the polygon point to audio and textual output receivers.
        /// </summary>
        /// <param name="pointsObs">The points obs.</param>
        public void SpeakPolygonPoint(OoPolygonPointsObserver pointsObs)
        {
            if (pointsObs != null)
            {
                String audio = GetPointAudio(pointsObs);
                String text = GetPointText(pointsObs);

                sentAudioFeedback(audio);
                sentTextFeedback(text);
            }
        }
 /// <summary>
 /// Gets the polygon points.
 /// </summary>
 /// <returns>a warper for helping handling polygon points or <c>null</c> if this is not a shape that have polygon points.</returns>
 public OoPolygonPointsObserver GetPolygonPointsObserver()
 {
     if (_ppObs == null && PolygonHelper.IsFreeform(Shape))
     {
         _ppObs = new OoPolygonPointsObserver(this);
     }
     return _ppObs;
 }