/** * Get minimum dimensions for media format. If only with or height is defined the missing dimensions * is calculated from the ratio. If no ratio defined either only width or height dimension is returned. * If neither width or height are defined null is returned. * @return Min. dimensions or null */ public Dimension getMinDimension() { long effWithMin = getEffectiveMinWidth(); long effHeightMin = getEffectiveMinHeight(); double effRatio = getRatio(); if (effWithMin == 0 && effHeightMin > 0 && effRatio > 0) { effWithMin = Math.round(effHeightMin * effRatio); } if (effWithMin > 0 && effHeightMin == 0 && effRatio > 0) { effHeightMin = Math.round(effWithMin / effRatio); } if (effWithMin > 0 || effHeightMin > 0) { return new Dimension(effWithMin, effHeightMin); } else { return null; } }
/** * Requested dimensions either from media format or fixed dimensions from media args. * @return Requested dimensions */ private Dimension getRequestedDimension() { // check for fixed dimensions from media args if (mediaArgs.getFixedWidth() > 0 || mediaArgs.getFixedHeight() > 0) { return new Dimension(mediaArgs.getFixedWidth(), mediaArgs.getFixedHeight()); } // check for dimensions from mediaformat (evaluate only first media format) MediaFormat[] mediaFormats = mediaArgs.getMediaFormats(); if (mediaFormats != null && mediaFormats.length > 0) { Dimension dimension = mediaFormats[0].getMinDimension(); if (dimension != null) { return dimension; } } // fallback to 0/0 - no specific dimension requested return new Dimension(0, 0); }
/** * Gets the dimension of the uploaded image (if the binary is an image file at all). * @return Dimension */ private Dimension getImageDimension() { Dimension dimension = null; // check for cropping dimension if (this.media.getCropDimension() != null) { dimension = this.media.getCropDimension(); } else { // if binary is image try to calculcate dimensions by loading it into a layer Layer layer = this.resource.adaptTo(Layer.class); if (layer != null) { dimension = new Dimension(layer.getWidth(), layer.getHeight()); } } return dimension; }
/** * Get dimension from first media format defined in media args. Fall back to dummy min. dimension if none specified. * @param media Media metadata * @return Dimension */ public static @NotNull Dimension getMediaformatDimension(@NotNull Media media) { // Create dummy image element to be displayed in Edit mode as placeholder. MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); MediaFormat[] mediaFormats = mediaArgs.getMediaFormats(); // detect width/height - either from media args, or from first media format long width = mediaArgs.getFixedWidth(); long height = mediaArgs.getFixedHeight(); if ((width == 0 || height == 0) && mediaFormats != null && mediaFormats.length > 0) { MediaFormat firstMediaFormat = mediaArgs.getMediaFormats()[0]; Dimension dimension = firstMediaFormat.getMinDimension(); if (dimension != null) { width = dimension.getWidth(); height = dimension.getHeight(); } } // fallback to min width/height if (width == 0) { width = MediaMarkupBuilder.DUMMY_MIN_DIMENSION; } if (height == 0) { height = MediaMarkupBuilder.DUMMY_MIN_DIMENSION; } return new Dimension(width, height); }
return new Dimension(requestedWidth, requestedHeight);