/// <summary>
        /// Adds the annotation with comment.
        /// </summary>
        public void AddNewComment()
        {
            // get comment annotation image
            VintasoftImage image = DemosResourcesManager.GetResourceAsImage(
                "DemosCommonCode.Annotation.Comments.AnnotationCommentBuilder.CommentIcon.png");

            // create comment annotation data
            EmbeddedImageAnnotationData annotationData = new EmbeddedImageAnnotationData(image);
            Resolution resolution = _annotationVisualTool.ImageViewer.Image.Resolution;

            annotationData.Size = new SizeF(
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(image.Width, UnitOfMeasure.Pixels, resolution.Horizontal),
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(image.Height, UnitOfMeasure.Pixels, resolution.Vertical));
            annotationData.Border = false;

            // create comment
            annotationData.Comment      = new AnnotationComment(Color.Yellow, Environment.UserName);
            annotationData.Comment.Type = "Comment";

            // build annotation
            _annotationVisualTool.AnnotationBuildingFinished += AnnotationVisualTool_AnnotationBuildingFinished;
            RectangleAnnotationView view = (RectangleAnnotationView)_annotationVisualTool.AddAndBuildAnnotation(annotationData);

            view.Builder = new RectangularObjectMoveBuilder(view, annotationData.Size);
        }
 /// <summary>
 /// Returns padding value converted from specified
 /// <see cref="UnitOfMeasure"> to millimeters.
 /// </summary>
 /// <param name="padding">Padding value.</param>
 /// <param name="units">Measure units of input padding value.</param>
 /// <returns> Padding value converted from specified <see cref="UnitOfMeasure"> to millimeters.</returns>
 private PaddingF ConvertPaddingToMillimeters(PaddingF padding, UnitOfMeasure units)
 {
     return(new PaddingF(
                (float)UnitOfMeasureConverter.ConvertToMillimeters(padding.Left, units),
                (float)UnitOfMeasureConverter.ConvertToMillimeters(padding.Top, units),
                (float)UnitOfMeasureConverter.ConvertToMillimeters(padding.Right, units),
                (float)UnitOfMeasureConverter.ConvertToMillimeters(padding.Bottom, units)));
 }
 /// <summary>
 /// Returns padding value converted from specified
 /// <see cref="UnitOfMeasure"> to the device independent pixels.
 /// </summary>
 /// <param name="padding">Padding value.</param>
 /// <param name="units">Measure units of input padding value.</param>
 /// <returns> Padding value converted from specified
 /// <see cref="UnitOfMeasure"> to the device independent pixels.</returns>
 private PaddingF ConvertPaddingToDips(PaddingF padding, UnitOfMeasure units)
 {
     return(new PaddingF(
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(padding.Left, units),
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(padding.Top, units),
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(padding.Right, units),
                (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(padding.Bottom, units)));
 }
        /// <summary>
        /// Handles the SelectedIndexChanged event of PageSizeComboBox object.
        /// </summary>
        private void pageSizeComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (PageLayoutSettings == null)
            {
                return;
            }

            if (pageSizeComboBox.SelectedItem.ToString() != "Undefined")
            {
                ImageSize size;

                // if custom page size selected
                if (pageSizeComboBox.SelectedItem.ToString() == "Custom")
                {
                    pageWidthNumericUpDown.Enabled  = true;
                    pageHeightNumericUpDown.Enabled = true;

                    // if page size already set
                    if (PageLayoutSettings.PageSize != null)
                    {
                        // create custom page size with current values
                        size = ImageSize.FromInches(
                            PageLayoutSettings.PageSize.WidthInInch,
                            PageLayoutSettings.PageSize.HeightInInch,
                            PageLayoutSettings.PageSize.Resolution);
                    }
                    else
                    {
                        // create custom page size with default values
                        size = ImageSize.FromMillimeters(100, 100, Resolution.ScreenResolution);
                    }
                }
                else
                {
                    // get page size from paper kind
                    size = ImageSize.FromPaperKind((PaperSizeKind)pageSizeComboBox.SelectedItem);
                    pageWidthNumericUpDown.Enabled  = false;
                    pageHeightNumericUpDown.Enabled = false;
                }

                PageLayoutSettings.PageSize = size;

                // update page width and height containers
                pageWidthNumericUpDown.Value  = (int)Math.Round(UnitOfMeasureConverter.ConvertToMillimeters(size.WidthInInch, UnitOfMeasure.Inches));
                pageHeightNumericUpDown.Value = (int)Math.Round(UnitOfMeasureConverter.ConvertToMillimeters(size.HeightInInch, UnitOfMeasure.Inches));
            }
            else
            {
                PageLayoutSettings.PageSize     = null;
                pageWidthNumericUpDown.Enabled  = false;
                pageHeightNumericUpDown.Enabled = false;
            }
        }
        /// <summary>
        /// Sets the annotation comment location.
        /// </summary>
        /// <param name="comment">The comment.</param>
        private void SetAnnotationCommentLocation(AnnotationComment comment)
        {
            VintasoftImage focusedImage = _annotationVisualTool.ImageViewer.Image;

            if (focusedImage != null)
            {
                float x = (float)UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(focusedImage.Width, UnitOfMeasure.Pixels, focusedImage.Resolution.Horizontal);
                comment.BoundingBox = new RectangleF(
                    x, comment.Annotation.Location.Y,
                    AnnotationComment.DefaultCommentSize.Width, AnnotationComment.DefaultCommentSize.Height);
            }
        }