diff options
author | Jonathan Kew <jfkthame@googlemail.com> | 2006-07-26 16:19:45 +0000 |
---|---|---|
committer | Jonathan Kew <jfkthame@googlemail.com> | 2006-07-26 16:19:45 +0000 |
commit | 622bf4a7c90729be28a038c49e4c237ce9f31297 (patch) | |
tree | 77466d5c0a89c433bd1c08f4cbeaf410fda7b25c /Build/source/texk/web2c/xetexdir/pdfimage.cpp | |
parent | e88aafe4ca4779a73487925dea63e8b55dc5e251 (diff) |
added main xetex source directory
git-svn-id: svn://tug.org/texlive/trunk@1920 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/pdfimage.cpp')
-rw-r--r-- | Build/source/texk/web2c/xetexdir/pdfimage.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/xetexdir/pdfimage.cpp b/Build/source/texk/web2c/xetexdir/pdfimage.cpp new file mode 100644 index 00000000000..26d1bc79196 --- /dev/null +++ b/Build/source/texk/web2c/xetexdir/pdfimage.cpp @@ -0,0 +1,77 @@ +/****************************************************************************\ + Part of the XeTeX typesetting system + copyright (c) 2006 by SIL International + written by Jonathan Kew + + This software is distributed under the terms of the Common Public License, + version 1.0. + For details, see <http://www.opensource.org/licenses/cpl1.0.php> or the file + cpl1.0.txt included with the software. +\****************************************************************************/ + +#include "pdfimage.h" + +#include "PDFDoc.h" +#include "Catalog.h" +#include "Page.h" +#include "GString.h" + +#include "XeTeX_ext.h" + +int +pdf_get_rect(char* filename, int page_num, int pdf_box, realrect* box) +{ + GString* name = new GString(filename); + PDFDoc* doc = new PDFDoc(name); + + if (!doc) { + delete name; + return -1; + } + + /* if the doc got created, it now owns name, so we mustn't delete it! */ + + if (!doc->isOk()) { + delete doc; + return -1; + } + + int pages = doc->getNumPages(); + if (page_num > pages) + page_num = pages; + if (page_num < 0) + page_num = pages + 1 - page_num; + if (page_num < 1) + page_num = 1; + + Page* page = doc->getCatalog()->getPage(page_num); + + PDFRectangle* r; + switch (pdf_box) { + default: + case pdfbox_crop: + r = page->getCropBox(); + break; + case pdfbox_media: + r = page->getMediaBox(); + break; + case pdfbox_bleed: + r = page->getBleedBox(); + break; + case pdfbox_trim: + r = page->getTrimBox(); + break; + case pdfbox_art: + r = page->getArtBox(); + break; + } + + box->x = 72 / 72.27 * fmin(r->x1, r->x2); + box->y = 72 / 72.27 * fmin(r->y1, r->y2); + box->wd = 72 / 72.27 * fabs(r->x2 - r->x1); + box->ht = 72 / 72.27 * fabs(r->y2 - r->y1); + + delete doc; + + return 0; +} |