public TextElemet(OoShapeObserver shape)
 {
     Shape = shape;
     if (shape != null)
     {
         Text = shape.Text;
         ScreenPosition = shape.GetRelativeScreenBoundsByDom();
         ObjectBoundingBox = BrailleTextView.MakeZoomBoundingBox(ScreenPosition, WindowManager.GetPrintZoomLevel());
         Matrix = BrailleTextView.BrailleRenderer.RenderMatrix(ObjectBoundingBox.Width, Text);
         Position = new Point(ObjectBoundingBox.X, ObjectBoundingBox.Y);
         Center = new Point(ObjectBoundingBox.X + (ObjectBoundingBox.Width / 2), ObjectBoundingBox.Y + (ObjectBoundingBox.Height / 2));
     }
     else
     {
         Center = Position = new Point();
         Matrix = new bool[0, 0];
         ObjectBoundingBox = ScreenPosition = new Rectangle();
         Text = String.Empty;
     }
 }
        /// <summary>
        /// Determines whether [is elements bounding box visible in view] [the specified visible area].
        /// </summary>
        /// <param name="visibleArea">The visible area.</param>
        /// <param name="shape">The shape.</param>
        /// <returns>
        /// 	<c>true</c> if [is elements bounding box visible in view] [the specified visible area]; otherwise, <c>false</c>.
        /// </returns>
        public static bool IsElementsBoundingBoxVisibleInView(Rectangle visibleArea, OoShapeObserver shape, double zoomFactor = 1)
        {
            if (visibleArea != null && !visibleArea.IsEmpty && shape != null)
            {
                Rectangle screenPos = shape.GetRelativeScreenBoundsByDom();
                Rectangle relativeScreenPos = MakeZoomBoundingBox(screenPos, zoomFactor);
                return DoBoundingBoxesCollide(visibleArea, relativeScreenPos);
            }

            return false;
        }