package photato.core.resize.thumbnails;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.Path;
import photato.Routes;
import photato.core.entities.PhotatoMedia;
import photato.core.entities.PhotatoPicture;
import photato.core.resize.ResizedImageGenerator;
public class ThumbnailGenerator extends ResizedImageGenerator implements IThumbnailGenerator {
private final int thumbailHeight;
public ThumbnailGenerator(FileSystem fileSystem, Path rootFolder, String thumbnailsFolderName, String extractedPicturesFolderName, int thumbnailHeight, int thumbnailQuality) throws IOException {
super(fileSystem, rootFolder, thumbnailsFolderName, extractedPicturesFolderName, thumbnailQuality, true);
this.thumbailHeight = thumbnailHeight;
}
@Override
public final String getThumbnailUrl(Path originalFilename, long lastModifiedTimestamp) {
return Routes.thumbnailRootUrl + "/" + this.getResizedPictureFilename(originalFilename, lastModifiedTimestamp);
}
@Override
protected int getResizedPictureWidth(int originalWidth, int originalHeight) {
return originalWidth * thumbailHeight / Math.max(1, originalHeight);
}
@Override
protected int getResizedPictureHeight(int originalWidth, int originalHeight) {
return thumbailHeight;
}
@Override
public void generateThumbnail(PhotatoMedia media) throws IOException {
this.generateResizedPicture(media.fsPath, media.lastModificationTimestamp, media instanceof PhotatoPicture ? ((PhotatoPicture) media).rotationId : 1);
}
@Override
public void deleteThumbnail(Path originalFilename, long lastModifiedTimestamp) throws IOException {
this.deleteResizedPicture(originalFilename, lastModifiedTimestamp);
}
@Override
public int getThumbnailWidth(int originalWidth, int originalHeight) {
return this.getResizedPictureWidth(originalWidth, originalHeight);
}
@Override
public int getThumbnailHeight(int originalWidth, int originalHeight) {
return this.getResizedPictureHeight(originalWidth, originalHeight);
}
}