1 //========================================================================
5 // This file is licensed under the GPLv2 or later
7 // Copyright 2010 Hib Eris <hib@hiberis.nl>
8 // Copyright 2010 Albert Astals Cid <aacid@kde.org>
10 //========================================================================
14 #include "PDFDocFactory.h"
16 #include "goo/GooList.h"
17 #include "goo/GooString.h"
19 #include "LocalPDFDocBuilder.h"
20 #include "StdinPDFDocBuilder.h"
22 #include "CurlPDFDocBuilder.h"
24 #include "ErrorCodes.h"
26 //------------------------------------------------------------------------
28 //------------------------------------------------------------------------
30 PDFDocFactory::PDFDocFactory(GooList
*pdfDocBuilders
)
33 builders
= pdfDocBuilders
;
35 builders
= new GooList();
38 builders
->insert(0, new CurlPDFDocBuilder());
40 builders
->insert(0, new StdinPDFDocBuilder());
41 builders
->insert(0, new LocalPDFDocBuilder());
44 PDFDocFactory::~PDFDocFactory()
47 deleteGooList(builders
, PDFDocBuilder
);
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
);