beta-0.89.2
[luatex.git] / source / libs / poppler / poppler-src / poppler / PDFDocFactory.cc
blob1ec464772370d656b1a52e8921611d309c67f310
1 //========================================================================
2 //
3 // PDFDocFactory.cc
4 //
5 // This file is licensed under the GPLv2 or later
6 //
7 // Copyright 2010 Hib Eris <hib@hiberis.nl>
8 // Copyright 2010 Albert Astals Cid <aacid@kde.org>
9 //
10 //========================================================================
12 #include <config.h>
14 #include "PDFDocFactory.h"
16 #include "goo/GooList.h"
17 #include "goo/GooString.h"
18 #include "PDFDoc.h"
19 #include "LocalPDFDocBuilder.h"
20 #include "StdinPDFDocBuilder.h"
21 #if ENABLE_LIBCURL
22 #include "CurlPDFDocBuilder.h"
23 #endif
24 #include "ErrorCodes.h"
26 //------------------------------------------------------------------------
27 // PDFDocFactory
28 //------------------------------------------------------------------------
30 PDFDocFactory::PDFDocFactory(GooList *pdfDocBuilders)
32 if (pdfDocBuilders) {
33 builders = pdfDocBuilders;
34 } else {
35 builders = new GooList();
37 #if ENABLE_LIBCURL
38 builders->insert(0, new CurlPDFDocBuilder());
39 #endif
40 builders->insert(0, new StdinPDFDocBuilder());
41 builders->insert(0, new LocalPDFDocBuilder());
44 PDFDocFactory::~PDFDocFactory()
46 if (builders) {
47 deleteGooList(builders, PDFDocBuilder);
51 PDFDoc *
52 PDFDocFactory::createPDFDoc(const GooString &uri, GooString *ownerPassword,
53 GooString *userPassword, void *guiDataA)
55 for (int i = builders->getLength() - 1; i >= 0 ; i--) {
56 PDFDocBuilder *builder = (PDFDocBuilder *) builders->get(i);
57 if (builder->supports(uri)) {
58 return builder->buildPDFDoc(uri, ownerPassword, userPassword, guiDataA);
62 error(errInternal, -1, "Cannot handle URI '{0:t}'.", &uri);
63 GooString *fileName = uri.copy();
64 return PDFDoc::ErrorPDFDoc(errOpenFile, fileName);
67 void PDFDocFactory::registerPDFDocBuilder(PDFDocBuilder *pdfDocBuilder)
69 builders->append(pdfDocBuilder);