Browse Source

use common PictureType

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902911 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_5_2_3
PJ Fanning 1 year ago
parent
commit
072aec8ad2

+ 1
- 1
poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java View File

@@ -255,7 +255,7 @@ public final class XSLFPictureData extends POIXMLDocumentPart implements Picture
case EPS: return XSLFRelation.IMAGE_EPS;
case BMP: return XSLFRelation.IMAGE_BMP;
case WPG: return XSLFRelation.IMAGE_WPG;
case WDP: return XSLFRelation.IMAGE_WDP;
case WDP: return XSLFRelation.HDPHOTO_WDP;
case TIFF: return XSLFRelation.IMAGE_TIFF;
case SVG: return XSLFRelation.IMAGE_SVG;
default: return null;

+ 13
- 11
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java View File

@@ -16,60 +16,62 @@
==================================================================== */
package org.apache.poi.xwpf.usermodel;

import org.apache.poi.common.usermodel.PictureType;

public interface Document {
/**
* Extended windows meta file
*/
public static final int PICTURE_TYPE_EMF = 2;
public static final int PICTURE_TYPE_EMF = PictureType.EMF.ooxmlId;

/**
* Windows Meta File
*/
public static final int PICTURE_TYPE_WMF = 3;
public static final int PICTURE_TYPE_WMF = PictureType.WMF.ooxmlId;

/**
* Mac PICT format
*/
public static final int PICTURE_TYPE_PICT = 4;
public static final int PICTURE_TYPE_PICT = PictureType.PICT.ooxmlId;

/**
* JPEG format
*/
public static final int PICTURE_TYPE_JPEG = 5;
public static final int PICTURE_TYPE_JPEG = PictureType.JPEG.ooxmlId;

/**
* PNG format
*/
public static final int PICTURE_TYPE_PNG = 6;
public static final int PICTURE_TYPE_PNG = PictureType.PNG.ooxmlId;

/**
* Device independent bitmap
*/
public static final int PICTURE_TYPE_DIB = 7;
public static final int PICTURE_TYPE_DIB = PictureType.DIB.ooxmlId;

/**
* GIF image format
*/
public static final int PICTURE_TYPE_GIF = 8;
public static final int PICTURE_TYPE_GIF = PictureType.GIF.ooxmlId;

/**
* Tag Image File (.tiff)
*/
public static final int PICTURE_TYPE_TIFF = 9;
public static final int PICTURE_TYPE_TIFF = PictureType.TIFF.ooxmlId;

/**
* Encapsulated Postscript (.eps)
*/
public static final int PICTURE_TYPE_EPS = 10;
public static final int PICTURE_TYPE_EPS = PictureType.EPS.ooxmlId;


/**
* Windows Bitmap (.bmp)
*/
public static final int PICTURE_TYPE_BMP = 11;
public static final int PICTURE_TYPE_BMP = PictureType.BMP.ooxmlId;

/**
* WordPerfect graphics (.wpg)
*/
public static final int PICTURE_TYPE_WPG = 12;
public static final int PICTURE_TYPE_WPG = PictureType.WPG.ooxmlId;
}

+ 0
- 102
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/PictureType.java View File

@@ -1,102 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.xwpf.usermodel;

import java.util.HashMap;
import java.util.Map;

/**
* @since POI 5.2.3
*/
public enum PictureType {
/**
* Extended windows meta file
*/
EMF(Document.PICTURE_TYPE_EMF),
/**
* Windows Meta File
*/
WMF(Document.PICTURE_TYPE_WMF),
/**
* Mac PICT format
*/
PICT(Document.PICTURE_TYPE_PICT),
/**
* JPEG format
*/
JPEG(Document.PICTURE_TYPE_JPEG),
/**
* JPEG format
*/
PNG(Document.PICTURE_TYPE_PNG),
/**
* Device independent bitmap
*/
DIB(Document.PICTURE_TYPE_DIB),
/**
* GIF image format
*/
GIF(Document.PICTURE_TYPE_GIF),
/**
* Tag Image File (.tiff)
*/
TIFF(Document.PICTURE_TYPE_TIFF),
/**
* Encapsulated Postscript (.eps)
*/
EPS(Document.PICTURE_TYPE_EPS),
/**
* Windows Bitmap (.bmp)
*/
BMP(Document.PICTURE_TYPE_BMP),
/**
* WordPerfect graphics (.wpg)
*/
WPG(Document.PICTURE_TYPE_WPG);

/**
* Map relating the old API constant values to their corresponding
* enumeration value
*/
private static final Map<Integer, PictureType> PICTURE_TYPE_BY_ID;

static {
PICTURE_TYPE_BY_ID = new HashMap<>();

for (PictureType pictureType : values()) {
PICTURE_TYPE_BY_ID.put(pictureType.id, pictureType);
}
}

private int id;

PictureType(int id) {
this.id = id;
}

public int getId() {
return id;
}

/**
* @param id for PictureType
* @return PictureType, null if id does not match any PictureTypes
*/
public static PictureType findById(int id) {
return PICTURE_TYPE_BY_ID.get(id);
}
}

+ 6
- 5
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComments.java View File

@@ -17,6 +17,7 @@

package org.apache.poi.xwpf.usermodel;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ooxml.POIXMLRelation;
@@ -100,7 +101,7 @@ public class XWPFComments extends POIXMLDocumentPart {
* Adds a picture to the comments.
*
* @param is The stream to read image from
* @param format The format of the picture.
* @param format The format of the picture, see {@link Document}
* @return the index to this picture (0 based), the added picture can be
* obtained from {@link #getAllPictures()} .
* @throws InvalidFormatException If the format of the picture is not known.
@@ -132,13 +133,13 @@ public class XWPFComments extends POIXMLDocumentPart {
* Adds a picture to the comments.
*
* @param pictureData The picture data
* @param format The format of the picture.
* @param format The format of the picture, see {@link Document}
* @return the index to this picture (0 based), the added picture can be
* obtained from {@link #getAllPictures()} .
* @throws InvalidFormatException If the format of the picture is not known.
*/
public String addPictureData(byte[] pictureData, int format) throws InvalidFormatException {
return addPictureData(pictureData, PictureType.findById(format));
return addPictureData(pictureData, PictureType.findByOoxmlId(format));
}

/**
@@ -153,10 +154,10 @@ public class XWPFComments extends POIXMLDocumentPart {
*/
public String addPictureData(byte[] pictureData, PictureType pictureType) throws InvalidFormatException {
if (pictureType == null) {
throw new InvalidFormatException("pictureType parameter is invalid");
throw new InvalidFormatException("pictureType is not supported");
}
XWPFPictureData xwpfPicData = document.findPackagePictureData(pictureData);
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.getId()];
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.ooxmlId];

if (xwpfPicData == null) {
/* Part doesn't exist, create a new one */

+ 8
- 7
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java View File

@@ -39,6 +39,7 @@ import javax.xml.namespace.QName;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ooxml.POIXMLException;
@@ -1486,7 +1487,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
* @see #addPictureData(byte[], PictureType)
*/
public String addPictureData(byte[] pictureData, int format) throws InvalidFormatException {
return addPictureData(pictureData, PictureType.findById(format));
return addPictureData(pictureData, PictureType.findByOoxmlId(format));
}

/**
@@ -1501,10 +1502,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
*/
public String addPictureData(byte[] pictureData, PictureType pictureType) throws InvalidFormatException {
if (pictureType == null) {
throw new InvalidFormatException("pictureType parameter is invalid");
throw new InvalidFormatException("pictureType is not supported");
}
XWPFPictureData xwpfPicData = findPackagePictureData(pictureData);
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.getId()];
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.ooxmlId];

if (xwpfPicData == null) {
/* Part doesn't exist, create a new one */
@@ -1584,7 +1585,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
* @see #getNextPicNameNumber(PictureType)
*/
public int getNextPicNameNumber(int format) throws InvalidFormatException {
return getNextPicNameNumber(PictureType.findById(format));
return getNextPicNameNumber(PictureType.findByOoxmlId(format));
}

/**
@@ -1597,14 +1598,14 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
*/
public int getNextPicNameNumber(PictureType pictureType) throws InvalidFormatException {
if (pictureType == null) {
throw new InvalidFormatException("pictureType parameter is invalid");
throw new InvalidFormatException("pictureType is not supported");
}
int img = getAllPackagePictures().size() + 1;
String proposal = XWPFPictureData.RELATIONS[pictureType.getId()].getFileName(img);
String proposal = XWPFPictureData.RELATIONS[pictureType.ooxmlId].getFileName(img);
PackagePartName createPartName = PackagingURIHelper.createPartName(proposal);
while (this.getPackage().getPart(createPartName) != null) {
img++;
proposal = XWPFPictureData.RELATIONS[pictureType.getId()].getFileName(img);
proposal = XWPFPictureData.RELATIONS[pictureType.ooxmlId].getFileName(img);
createPartName = PackagingURIHelper.createPartName(proposal);
}
return img;

+ 4
- 3
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java View File

@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ooxml.POIXMLRelation;
@@ -236,7 +237,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo
* @see #addPictureData(byte[], PictureType)
*/
public String addPictureData(byte[] pictureData, int format) throws InvalidFormatException {
return addPictureData(pictureData, PictureType.findById(format));
return addPictureData(pictureData, PictureType.findByOoxmlId(format));
}

/**
@@ -250,10 +251,10 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo
*/
public String addPictureData(byte[] pictureData, PictureType pictureType) throws InvalidFormatException {
if (pictureType == null) {
throw new InvalidFormatException("pictureType parameter is invalid");
throw new InvalidFormatException("pictureType is not supported");
}
XWPFPictureData xwpfPicData = document.findPackagePictureData(pictureData);
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.getId()];
POIXMLRelation relDesc = XWPFPictureData.RELATIONS[pictureType.ooxmlId];

if (xwpfPicData == null) {
/* Part doesn't exist, create a new one */

+ 15
- 13
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java View File

@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ooxml.POIXMLRelation;
@@ -57,18 +58,19 @@ public class XWPFPictureData extends POIXMLDocumentPart {
protected static final POIXMLRelation[] RELATIONS;

static {
RELATIONS = new POIXMLRelation[13];
RELATIONS[Document.PICTURE_TYPE_EMF] = XWPFRelation.IMAGE_EMF;
RELATIONS[Document.PICTURE_TYPE_WMF] = XWPFRelation.IMAGE_WMF;
RELATIONS[Document.PICTURE_TYPE_PICT] = XWPFRelation.IMAGE_PICT;
RELATIONS[Document.PICTURE_TYPE_JPEG] = XWPFRelation.IMAGE_JPEG;
RELATIONS[Document.PICTURE_TYPE_PNG] = XWPFRelation.IMAGE_PNG;
RELATIONS[Document.PICTURE_TYPE_DIB] = XWPFRelation.IMAGE_DIB;
RELATIONS[Document.PICTURE_TYPE_GIF] = XWPFRelation.IMAGE_GIF;
RELATIONS[Document.PICTURE_TYPE_TIFF] = XWPFRelation.IMAGE_TIFF;
RELATIONS[Document.PICTURE_TYPE_EPS] = XWPFRelation.IMAGE_EPS;
RELATIONS[Document.PICTURE_TYPE_BMP] = XWPFRelation.IMAGE_BMP;
RELATIONS[Document.PICTURE_TYPE_WPG] = XWPFRelation.IMAGE_WPG;
RELATIONS = new POIXMLRelation[14];
RELATIONS[PictureType.EMF.ooxmlId] = XWPFRelation.IMAGE_EMF;
RELATIONS[PictureType.WMF.ooxmlId] = XWPFRelation.IMAGE_WMF;
RELATIONS[PictureType.PICT.ooxmlId] = XWPFRelation.IMAGE_PICT;
RELATIONS[PictureType.JPEG.ooxmlId] = XWPFRelation.IMAGE_JPEG;
RELATIONS[PictureType.PNG.ooxmlId] = XWPFRelation.IMAGE_PNG;
RELATIONS[PictureType.DIB.ooxmlId] = XWPFRelation.IMAGE_DIB;
RELATIONS[PictureType.GIF.ooxmlId] = XWPFRelation.IMAGE_GIF;
RELATIONS[PictureType.TIFF.ooxmlId] = XWPFRelation.IMAGE_TIFF;
RELATIONS[PictureType.EPS.ooxmlId] = XWPFRelation.IMAGE_EPS;
RELATIONS[PictureType.BMP.ooxmlId] = XWPFRelation.IMAGE_BMP;
RELATIONS[PictureType.WPG.ooxmlId] = XWPFRelation.IMAGE_WPG;
RELATIONS[PictureType.WDP.ooxmlId] = XWPFRelation.HDPHOTO_WDP;
}

private Long checksum;
@@ -170,7 +172,7 @@ public class XWPFPictureData extends POIXMLDocumentPart {
* @since POI 5.2.3
*/
public PictureType getPictureTypeEnum() {
return PictureType.findById(getPictureType());
return PictureType.findByOoxmlId(getPictureType());
}

public Long getChecksum() {

+ 19
- 12
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java View File

@@ -20,12 +20,13 @@ package org.apache.poi.xwpf.usermodel;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.ooxml.POIXMLRelation;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import static org.apache.poi.openxml4j.opc.PackageRelationshipTypes.HDPHOTO_PART;
import static org.apache.poi.openxml4j.opc.PackageRelationshipTypes.IMAGE_PART;

public final class XWPFRelation extends POIXMLRelation {
@@ -158,71 +159,77 @@ public final class XWPFRelation extends POIXMLRelation {
* Supported image formats
*/
public static final XWPFRelation IMAGE_EMF = new XWPFRelation(
PictureData.PictureType.EMF.contentType,
PictureType.EMF.contentType,
IMAGE_PART,
"/word/media/image#.emf",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_WMF = new XWPFRelation(
PictureData.PictureType.WMF.contentType,
PictureType.WMF.contentType,
IMAGE_PART,
"/word/media/image#.wmf",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_PICT = new XWPFRelation(
PictureData.PictureType.PICT.contentType,
PictureType.PICT.contentType,
IMAGE_PART,
"/word/media/image#.pict",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_JPEG = new XWPFRelation(
PictureData.PictureType.JPEG.contentType,
PictureType.JPEG.contentType,
IMAGE_PART,
"/word/media/image#.jpeg",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_PNG = new XWPFRelation(
PictureData.PictureType.PNG.contentType,
PictureType.PNG.contentType,
IMAGE_PART,
"/word/media/image#.png",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_DIB = new XWPFRelation(
PictureData.PictureType.DIB.contentType,
PictureType.DIB.contentType,
IMAGE_PART,
"/word/media/image#.dib",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_GIF = new XWPFRelation(
PictureData.PictureType.GIF.contentType,
PictureType.GIF.contentType,
IMAGE_PART,
"/word/media/image#.gif",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_TIFF = new XWPFRelation(
PictureData.PictureType.TIFF.contentType,
PictureType.TIFF.contentType,
IMAGE_PART,
"/word/media/image#.tiff",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_EPS = new XWPFRelation(
PictureData.PictureType.EPS.contentType,
PictureType.EPS.contentType,
IMAGE_PART,
"/word/media/image#.eps",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_BMP = new XWPFRelation(
PictureData.PictureType.BMP.contentType,
PictureType.BMP.contentType,
IMAGE_PART,
"/word/media/image#.bmp",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGE_WPG = new XWPFRelation(
PictureData.PictureType.WPG.contentType,
PictureType.WPG.contentType,
IMAGE_PART,
"/word/media/image#.wpg",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation HDPHOTO_WDP = new XWPFRelation(
PictureType.WDP.contentType,
HDPHOTO_PART,
"/ppt/media/hdphoto#.wdp",
XWPFPictureData::new, XWPFPictureData::new
);
public static final XWPFRelation IMAGES = new XWPFRelation(
null,
IMAGE_PART,

+ 3
- 2
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java View File

@@ -30,6 +30,7 @@ import java.util.List;

import javax.xml.namespace.QName;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ooxml.util.DocumentHelper;
import org.apache.poi.ooxml.util.POIXMLUnits;
@@ -1072,7 +1073,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public XWPFPicture addPicture(InputStream pictureData, int pictureType, String filename, int width, int height)
throws InvalidFormatException, IOException {
return addPicture(pictureData, PictureType.findById(pictureType), filename, width, height);
return addPicture(pictureData, PictureType.findByOoxmlId(pictureType), filename, width, height);
}

/**
@@ -1090,7 +1091,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
public XWPFPicture addPicture(InputStream pictureData, PictureType pictureType, String filename, int width, int height)
throws InvalidFormatException, IOException {
if (pictureType == null) {
throw new InvalidFormatException("pictureType parameter is invalid");
throw new InvalidFormatException("pictureType is not supported");
}
String relationId;
XWPFPictureData picData;

+ 3
- 0
poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSignatureLine.java View File

@@ -22,6 +22,7 @@ import javax.xml.namespace.QName;

import com.microsoft.schemas.office.office.CTSignatureLine;
import com.microsoft.schemas.vml.CTImageData;
import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.ooxml.util.XPathHelper;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.poifs.crypt.dsig.SignatureLine;
@@ -83,6 +84,8 @@ public class XWPFSignatureLine extends SignatureLine {
return PictureType.WMF;
case WPG:
return PictureType.WPG;
case WDP:
return PictureType.WDP;
default:
throw new InvalidFormatException("Unsupported picture format "+type);
}

+ 1
- 0
poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java View File

@@ -31,6 +31,7 @@ import java.io.IOException;
import java.math.BigInteger;
import java.util.List;

import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.LocaleUtil;
import org.apache.poi.util.Units;

+ 48
- 19
poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java View File

@@ -19,53 +19,70 @@ package org.apache.poi.common.usermodel;

import org.apache.poi.poifs.filesystem.FileMagic;

import java.util.HashMap;

/**
* General enum class to define a picture format/type
*
* @since POI 5.0
*/
public enum PictureType {

/** Extended windows meta file */
EMF("image/x-emf",".emf"),
EMF("image/x-emf", ".emf", 2),
/** Windows Meta File */
WMF("image/x-wmf",".wmf"),
WMF("image/x-wmf", ".wmf", 3),
/** Mac PICT format */
PICT("image/x-pict",".pict"),
PICT("image/x-pict", ".pict", 4),
/** JPEG format */
JPEG("image/jpeg",".jpg"),
JPEG("image/jpeg", ".jpg", 5),
/** PNG format */
PNG("image/png",".png"),
PNG("image/png", ".png", 6),
/** Device independent bitmap */
DIB("image/dib",".dib"),
DIB("image/dib", ".dib", 7),
/** GIF image format */
GIF("image/gif",".gif"),
GIF("image/gif", ".gif", 8),
/** Tag Image File (.tiff) */
TIFF("image/tiff",".tif"),
TIFF("image/tiff", ".tif", 9),
/** Encapsulated Postscript (.eps) */
EPS("image/x-eps",".eps"),
EPS("image/x-eps", ".eps", 10),
/** Windows Bitmap (.bmp) */
BMP("image/x-ms-bmp",".bmp"),
BMP("image/x-ms-bmp", ".bmp", 11),
/** WordPerfect graphics (.wpg) */
WPG("image/x-wpg",".wpg"),
WPG("image/x-wpg", ".wpg", 12),
/** Microsoft Windows Media Photo image (.wdp) */
WDP("image/vnd.ms-photo",".wdp"),
WDP("image/vnd.ms-photo", ".wdp", 13),
/** Scalable vector graphics (.svg) - supported by Office 2016 and higher */
SVG("image/svg+xml", ".svg"),
SVG("image/svg+xml", ".svg", -1),
/** Unknown picture type - specific to escher bse record */
UNKNOWN("", ".dat"),
UNKNOWN("", ".dat", -1),
/** Picture type error - specific to escher bse record */
ERROR("", ".dat"),
ERROR("", ".dat", -1),
/** JPEG in the YCCK or CMYK color space. */
CMYKJPEG("image/jpeg", ".jpg"),
CMYKJPEG("image/jpeg", ".jpg", -1),
/** client defined blip type - native-id 32 to 255 */
CLIENT("", ".dat")
CLIENT("", ".dat", -1)
;

public final String contentType,extension;
private static final HashMap<Integer, PictureType> PICTURE_TYPE_BY_OOXML_ID;

static {
PICTURE_TYPE_BY_OOXML_ID = new HashMap<>();

for (PictureType pictureType : values()) {
if (pictureType.ooxmlId >= -1) {
PICTURE_TYPE_BY_OOXML_ID.put(pictureType.ooxmlId, pictureType);
}
}
}

PictureType(String contentType,String extension) {
public final String contentType, extension;
public final int ooxmlId;

PictureType(String contentType, String extension, int ooxmlId) {
this.contentType = contentType;
this.extension = extension;
this.ooxmlId = ooxmlId;
}

public String getContentType() {
@@ -76,6 +93,10 @@ public enum PictureType {
return extension;
}

public int getOoxmlId() {
return ooxmlId;
}

public static PictureType valueOf(FileMagic fm) {
switch (fm) {
case BMP:
@@ -100,4 +121,12 @@ public enum PictureType {
return PictureType.UNKNOWN;
}
}

/**
* @param ooxmlId for PictureType
* @return PictureType, null if ooxmlId does not match any PictureTypes
*/
public static PictureType findByOoxmlId(int ooxmlId) {
return PICTURE_TYPE_BY_OOXML_ID.get(ooxmlId);
}
}

Loading…
Cancel
Save