package de.digitalcollections.iiif.presentation.model.impl.v2; import de.digitalcollections.iiif.presentation.model.api.v2.Canvas; import de.digitalcollections.iiif.presentation.model.api.v2.Image; import de.digitalcollections.iiif.presentation.model.api.v2.Metadata; import de.digitalcollections.iiif.presentation.model.api.v2.PropertyValue; import de.digitalcollections.iiif.presentation.model.api.v2.Thumbnail; import de.digitalcollections.iiif.presentation.model.api.v2.references.IiifReference; import java.net.URI; import java.util.List; public class CanvasImpl extends AbstractIiifResourceImpl implements Canvas { private PropertyValue description; // optional private int height; // required private List<Image> images; private PropertyValue label; // required private List<Metadata> metadata; // optional private List<IiifReference> otherContent; // optional private Thumbnail thumbnail; // recommended private String viewingHint; // optional private int width; // required public CanvasImpl() { this.height = 0; this.label = null; this.width = 0; } public CanvasImpl(URI id, PropertyValue label, int height, int width) { assert id != null; assert label != null; assert height > -1; assert width > -1; this.id = id; this.height = height; this.label = label; this.width = width; type = "sc:Canvas"; } public CanvasImpl(String id, PropertyValue label, int height, int width) { this(URI.create(id), label, height, width); } /** * @param id A canvas must have an id, and it must be an http(s) URI. The canvas’s JSON representation should be * published at that URI. * @param label A canvas must have a label, and it should be the page or view label such as “p. 1”, “front”, or “north * view”. * @param height The height of a canvas or image resource. For images, this is in pixels. No particular units are * required for canvases, as the dimensions provide an aspect ratio for the resources to be located within rather than * measuring any physical property of the object. A canvas must have a height, which does not have a unit type. It * merely conveys, along with width, an aspect ratio. * @param width The width of a canvas or image resource. For images, this is in pixels. No particular units are * required for canvases. A canvas must have a height, which does not have a unit type. It merely conveys, along with * width, an aspect ratio. * @param thumbnail A canvas may have a thumbnail and should have a thumbnail if there are multiple images or * resources that make up the representation. */ public CanvasImpl(URI id, PropertyValue label, int height, int width, Thumbnail thumbnail) { this(id, label, height, width); this.thumbnail = thumbnail; } public CanvasImpl(String id, PropertyValue label, int height, int width, Thumbnail thumbnail) { this(URI.create(id), label, height, width, thumbnail); } @Override public PropertyValue getDescription() { return description; } @Override public void setDescription(PropertyValue description) { this.description = description; } @Override public int getHeight() { return height; } @Override public void setHeight(int height) { this.height = height; } @Override public List<Image> getImages() { return images; } @Override public void setImages(List<Image> images) { this.images = images; } @Override public PropertyValue getLabel() { return label; } @Override public void setLabel(PropertyValue label) { this.label = label; } @Override public List<Metadata> getMetadata() { return metadata; } @Override public void setMetadata(List<Metadata> metadata) { this.metadata = metadata; } @Override public Thumbnail getThumbnail() { return thumbnail; } @Override public void setThumbnail(Thumbnail thumbnail) { this.thumbnail = thumbnail; } @Override public String getViewingHint() { return viewingHint; } @Override public void setViewingHint(String viewingHint) { this.viewingHint = viewingHint; } @Override public int getWidth() { return width; } @Override public void setWidth(int width) { this.width = width; } @Override public List<IiifReference> getOtherContent() { return this.otherContent; } @Override public void setOtherContent(List<IiifReference> iiifReferences) { this.otherContent = iiifReferences; } }