WorkbookToLongerImageDimension() public method

public WorkbookToLongerImageDimension ( System.Single valueWorkbook ) : System.Single
valueWorkbook System.Single
return System.Single
Ejemplo n.º 1
0
        ReadImageUri
        (
            ExcelTableReader.ExcelTableRow oRow,
            IVertex oVertex,
            VertexRadiusConverter oVertexRadiusConverter,
            Nullable <Single> oVertexImageSize
        )
        {
            Debug.Assert(oRow != null);
            Debug.Assert(oVertex != null);
            Debug.Assert(oVertexRadiusConverter != null);
            AssertValid();

            String sImageUri;

            if (!oRow.TryGetNonEmptyStringFromCell(
                    VertexTableColumnNames.ImageUri, out sImageUri))
            {
                return(false);
            }

            if (sImageUri.ToLower().StartsWith("www."))
            {
                // The Uri class thinks that "www.somewhere.com" is a relative
                // path.  Fix that.

                sImageUri = "http://" + sImageUri;
            }

            Uri oUri;

            // Is the URI either an URL or a full file path?

            if (!Uri.TryCreate(sImageUri, UriKind.Absolute, out oUri))
            {
                // No.  It appears to be a relative path.

                Range oCell = oRow.GetRangeForCell(
                    VertexTableColumnNames.ImageUri);

                String sWorkbookPath =
                    ((Workbook)(oCell.Worksheet.Parent)).Path;

                if (!String.IsNullOrEmpty(sWorkbookPath))
                {
                    sImageUri = Path.Combine(sWorkbookPath, sImageUri);
                }
                else
                {
                    OnWorkbookFormatError(String.Format(

                                              "The image file path specified in cell {0} is a relative"
                                              + " path.  Relative paths must be relative to the saved"
                                              + " workbook file, but the workbook hasn't been saved yet."
                                              + "  Either save the workbook or change the image file to"
                                              + " an absolute path, such as \"C:\\MyImages\\Image.jpg\"."
                                              ,
                                              ExcelUtil.GetRangeAddress(oCell)
                                              ),

                                          oCell
                                          );
                }
            }

            // Note that sImageUri may or may not be a valid URI string.  If it is
            // not, GetImageSynchronousIgnoreDpi() will return an error image.

            BitmapSource oImage =
                (new WpfImageUtil()).GetImageSynchronousIgnoreDpi(sImageUri);

            if (oVertexImageSize.HasValue)
            {
                // Resize the image.

                Double dLongerDimension =
                    oVertexRadiusConverter.WorkbookToLongerImageDimension(
                        oVertexImageSize.Value);

                Debug.Assert(dLongerDimension >= 1);

                oImage = (new WpfImageUtil()).ResizeImage(oImage,
                                                          (Int32)dLongerDimension);
            }

            oVertex.SetValue(ReservedMetadataKeys.PerVertexImage, oImage);

            return(true);
        }
    ReadImageUri
    (
        ExcelTableReader.ExcelTableRow oRow,
        IVertex oVertex,
        VertexRadiusConverter oVertexRadiusConverter,
        Nullable<Single> oVertexImageSize
    )
    {
        Debug.Assert(oRow != null);
        Debug.Assert(oVertex != null);
        Debug.Assert(oVertexRadiusConverter != null);
        AssertValid();

        String sImageUri;

        if ( !oRow.TryGetNonEmptyStringFromCell(
            VertexTableColumnNames.ImageUri, out sImageUri) )
        {
            return (false);
        }

        if ( sImageUri.ToLower().StartsWith("www.") )
        {
            // The Uri class thinks that "www.somewhere.com" is a relative
            // path.  Fix that.

            sImageUri= "http://" + sImageUri;
        }

        Uri oUri;

        // Is the URI either an URL or a full file path?

        if ( !Uri.TryCreate(sImageUri, UriKind.Absolute, out oUri) )
        {
            // No.  It appears to be a relative path.

            Range oCell = oRow.GetRangeForCell(
                VertexTableColumnNames.ImageUri);

            String sWorkbookPath =
                ( (Workbook)(oCell.Worksheet.Parent) ).Path;

            if ( !String.IsNullOrEmpty(sWorkbookPath) )
            {
                sImageUri = Path.Combine(sWorkbookPath, sImageUri);
            }
            else
            {
                OnWorkbookFormatError( String.Format(

                    "The image file path specified in cell {0} is a relative"
                    + " path.  Relative paths must be relative to the saved"
                    + " workbook file, but the workbook hasn't been saved yet."
                    + "  Either save the workbook or change the image file to"
                    + " an absolute path, such as \"C:\\MyImages\\Image.jpg\"."
                    ,
                    ExcelUtil.GetRangeAddress(oCell)
                    ),

                    oCell
                    );
            }
        }

        // Note that sImageUri may or may not be a valid URI string.  If it is
        // not, GetImageSynchronousIgnoreDpi() will return an error image.

        ImageSource oImage =
            ( new WpfImageUtil() ).GetImageSynchronousIgnoreDpi(sImageUri);

        if (oVertexImageSize.HasValue)
        {
            // Resize the image.

            Double dLongerDimension =
                oVertexRadiusConverter.WorkbookToLongerImageDimension(
                    oVertexImageSize.Value);

            Debug.Assert(dLongerDimension >= 1);

            oImage = ( new WpfImageUtil() ).ResizeImage(oImage,
                (Int32)dLongerDimension);
        }

        oVertex.SetValue(ReservedMetadataKeys.PerVertexImage, oImage);

        return (true);
    }