@Override public long getHeight() { if (this.imageDimension != null) { return this.imageDimension.getHeight(); } else { return 0; } }
boolean scaleWidth = (requestedDimension.getWidth() > 0 && requestedDimension.getWidth() != originalDimension.getWidth()); boolean scaleHeight = (requestedDimension.getHeight() > 0 && requestedDimension.getHeight() != originalDimension.getHeight()); if (scaleWidth || scaleHeight) { long requestedWidth = requestedDimension.getWidth(); long requestedHeight = requestedDimension.getHeight(); double imageRatio = (double)originalDimension.getWidth() / (double)originalDimension.getHeight(); if (requestedWidth == 0 && requestedHeight > 0) { requestedWidth = (int)Math.round(requestedHeight * imageRatio); || (imageRatio < requestedRatio - MediaFormatHandler.RATIO_TOLERANCE) || (originalDimension.getWidth() < requestedWidth) || (originalDimension.getHeight() < requestedHeight)) { return SCALING_NOT_POSSIBLE_DIMENSION;
object.setAttribute("data", playerUrl); object.setAttribute("width", Long.toString(dimension.getWidth())); object.setAttribute("height", Long.toString(dimension.getHeight()));
/** * 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); }
/** * Build HTML5 video player element * @param media Media metadata * @return Media element */ protected Video getVideoPlayerElement(@NotNull Media media) { Dimension dimension = MediaMarkupBuilderUtil.getMediaformatDimension(media); Video video = new Video(); video.setWidth((int)dimension.getWidth()); video.setHeight((int)dimension.getHeight()); video.setControls(true); // add video sources for each video profile addSources(video, media); // add flash player as fallback video.addContent(getFlashPlayerElement(media, dimension)); return video; }
@SuppressWarnings({ "null", "unused" }) @Override public HtmlElement<?> build(@NotNull Media media) { // Create dummy image element to be displayed in Edit mode as placeholder. Dimension dimension = MediaMarkupBuilderUtil.getMediaformatDimension(media); MediaArgs mediaArgs = media.getMediaRequest().getMediaArgs(); // create dummy image String dummyImageUrl = StringUtils.defaultString(mediaArgs.getDummyImageUrl(), DUMMY_IMAGE); dummyImageUrl = urlHandler.get(dummyImageUrl) .urlMode(media.getMediaRequest().getMediaArgs().getUrlMode()) .buildExternalResourceUrl(); Image image = new Image(dummyImageUrl, dimension.getWidth(), dimension.getHeight()) .addCssClass(MediaNameConstants.CSS_DUMMYIMAGE); // set additional attributes setAdditionalAttributes(image, media); // enable drag&drop for media source - if none is specified use first one defined in config MediaSource mediaSource = media.getMediaSource(); if (mediaSource == null && !mediaHandlerConfig.getSources().isEmpty()) { Class<? extends MediaSource> mediaSourceClass = mediaHandlerConfig.getSources().iterator().next(); mediaSource = AdaptTo.notNull(adaptable, mediaSourceClass); } if (mediaSource != null) { mediaSource.enableMediaDrop(image, media.getMediaRequest()); } return image; }
/** * Builds URL to rescaled version of the binary image. * @return Media URL */ private String buildScaledMediaUrl(Dimension dimension, CropDimension cropDimension) { String resourcePath = this.resource.getPath(); // if parent resource is a nt:file resource, use this one as path for scaled image Resource parentResource = this.resource.getParent(); if (JcrBinary.isNtFile(parentResource)) { resourcePath = parentResource.getPath(); } // URL to render scaled image via {@link InlineRenditionServlet} String path = resourcePath + "." + ImageFileServlet.SELECTOR + "." + dimension.getWidth() + "." + dimension.getHeight() + (cropDimension != null ? "." + cropDimension.getCropString() : "") + (this.mediaArgs.isContentDispositionAttachment() ? "." + MediaFileServlet.SELECTOR_DOWNLOAD : "") + "." + MediaFileServlet.EXTENSION + "/" // replace extension based on the format supported by ImageFileServlet for rendering for this rendition + ImageFileServlet.getImageFileName(getFileName()); // build externalized URL UrlHandler urlHandler = AdaptTo.notNull(this.adaptable, UrlHandler.class); return urlHandler.get(path).urlMode(this.mediaArgs.getUrlMode()).buildExternalResourceUrl(this.resource); }