summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/xbb.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/xbb.c')
-rw-r--r--Build/source/texk/dvipdfm-x/xbb.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/Build/source/texk/dvipdfm-x/xbb.c b/Build/source/texk/dvipdfm-x/xbb.c
index 25841155b7e..98fec810056 100644
--- a/Build/source/texk/dvipdfm-x/xbb.c
+++ b/Build/source/texk/dvipdfm-x/xbb.c
@@ -33,7 +33,9 @@
#include "pdfdoc.h"
#include "pdfparse.h"
+#include "bmpimage.h"
#include "jpegimage.h"
+#include "jp2image.h"
#include "pngimage.h"
#include "dvipdfmx.h"
@@ -85,7 +87,8 @@ static void do_time(FILE *file)
}
const char *extensions[] = {
- ".ai", ".AI", ".jpeg", ".JPEG", ".jpg", ".JPG", ".pdf", ".PDF", ".png", ".PNG"
+ ".ai", ".AI", ".bmp", ".BMP", ".jpeg", ".JPEG", ".jpg", ".JPG",
+ ".jp2", ".JP2", ".jpf", ".JPF", ".pdf", ".PDF", ".png", ".PNG"
};
static int xbb_to_file = 1;
@@ -169,6 +172,20 @@ static void write_xbb(char *fname,
}
}
+static void do_bmp (FILE *fp, char *filename)
+{
+ long width, height;
+ double xdensity, ydensity;
+
+ if (bmp_get_bbox(fp, &width, &height, &xdensity, &ydensity) < 0) {
+ WARN("%s does not look like a BMP file...\n", filename);
+ return;
+ }
+
+ write_xbb(filename, 0, 0, xdensity*width, ydensity*height, -1, -1);
+ return;
+}
+
static void do_jpeg (FILE *fp, char *filename)
{
long width, height;
@@ -183,6 +200,20 @@ static void do_jpeg (FILE *fp, char *filename)
return;
}
+static void do_jp2 (FILE *fp, char *filename)
+{
+ long width, height;
+ double xdensity, ydensity;
+
+ if (jp2_get_bbox(fp, &width, &height, &xdensity, &ydensity) < 0) {
+ WARN("%s does not look like a JP2/JPX file...\n", filename);
+ return;
+ }
+
+ write_xbb(filename, 0, 0, xdensity*width, ydensity*height, -1, -1);
+ return;
+}
+
#ifdef HAVE_LIBPNG
static void do_png (FILE *fp, char *filename)
{
@@ -299,10 +330,18 @@ int extractbb (int argc, char *argv[])
WARN("Can't find file (%s), or it is forbidden to read ...skipping\n", argv[0]);
goto cont;
}
+ if (check_for_bmp(infile)) {
+ do_bmp(infile, kpse_file_name);
+ goto cont;
+ }
if (check_for_jpeg(infile)) {
do_jpeg(infile, kpse_file_name);
goto cont;
}
+ if (check_for_jp2(infile)) {
+ do_jp2(infile, kpse_file_name);
+ goto cont;
+ }
if (check_for_pdf(infile)) {
do_pdf(infile, kpse_file_name);
goto cont;