diff options
Diffstat (limited to 'kfile-plugins/pdf/poppler-qt')
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/Makefile.am | 42 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-document.cc | 334 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-fontinfo.cc | 83 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-link-qt3.h | 188 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-link.cc | 267 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-page-transition-private.h | 33 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-page-transition.cc | 95 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-page-transition.h | 146 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-page.cc | 362 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-private.cc | 147 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-private.h | 97 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/poppler-qt.h | 310 | ||||
-rw-r--r-- | kfile-plugins/pdf/poppler-qt/test-poppler-qt.cpp | 122 |
13 files changed, 0 insertions, 2226 deletions
diff --git a/kfile-plugins/pdf/poppler-qt/Makefile.am b/kfile-plugins/pdf/poppler-qt/Makefile.am deleted file mode 100644 index f23d0307..00000000 --- a/kfile-plugins/pdf/poppler-qt/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -INCLUDES = \ - -I$(top_srcdir) \ - -I/usr/include/poppler \ - $(cairo_includes) \ - $(QT_INCLUDES) \ - $(FREETYPE_CFLAGS) \ - $(FONTCONFIG_CFLAGS) - - -poppler_includedir = $(includedir)/poppler/qt3 -poppler_include_HEADERS = \ - poppler-qt.h \ - poppler-page-transition.h \ - poppler-link-qt3.h - -lib_LTLIBRARIES = libpoppler-qt.la -libpoppler_qt_la_SOURCES = \ - poppler-document.cc \ - poppler-fontinfo.cc \ - poppler-link.cc \ - poppler-page.cc \ - poppler-page-transition.cc \ - poppler-page-transition-private.h \ - poppler-private.cc \ - poppler-private.h - -libpoppler_qt_la_LIBADD = \ - -lpoppler \ - $(QT_LIBS) \ - $(FREETYPE_LIBS) \ - $(FONTCONFIG_LIBS) - -# libpoppler_qt_la_LDFLAGS = -version-info 2:0:0 @create_shared_lib@ - -test_poppler_qt_SOURCES = \ - test-poppler-qt.cpp - -test_poppler_qt_LDADD = \ - $(top_builddir)/poppler/libpoppler.la \ - libpoppler-qt.la \ - $(QT_LIBS) \ - $(FREETYPE_LIBS) diff --git a/kfile-plugins/pdf/poppler-qt/poppler-document.cc b/kfile-plugins/pdf/poppler-qt/poppler-document.cc deleted file mode 100644 index 40e45469..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-document.cc +++ /dev/null @@ -1,334 +0,0 @@ -/* poppler-document.cc: qt interface to poppler - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005-2009, Albert Astals Cid <aacid@kde.org> - * Copyright (C) 2006, Stefan Kebekus <stefan.kebekus@math.uni-koeln.de> - * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss@gmx.at> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include <poppler-qt.h> -#include <tqfile.h> -#include <GlobalParams.h> -#include <Outline.h> -#include <PDFDoc.h> -#include <PSOutputDev.h> -#include <Catalog.h> -#include <ErrorCodes.h> -#include <SplashOutputDev.h> -#include <splash/SplashBitmap.h> -#include <DateInfo.h> -#include "poppler-private.h" - -#undef bool - -namespace Poppler { - -Document *Document::load(const TQString &filePath) -{ - if (!globalParams) { - globalParams = new GlobalParams(); - } - - DocumentData *doc = new DocumentData(new GooString(TQFile::encodeName(filePath)), NULL); - Document *pdoc; - if (doc->doc.isOk() || doc->doc.getErrorCode() == errEncrypted) { - pdoc = new Document(doc); - if (doc->doc.getErrorCode() == errEncrypted) - pdoc->data->locked = true; - else - pdoc->data->locked = false; - pdoc->data->m_fontInfoScanner = new FontInfoScanner(&(doc->doc)); - return pdoc; - } - else - return NULL; -} - -Document::Document(DocumentData *dataA) -{ - data = dataA; -} - -Document::~Document() -{ - delete data; -} - -bool Document::isLocked() const -{ - return data->locked; -} - -bool Document::unlock(const TQCString &password) -{ - if (data->locked) { - /* racier then it needs to be */ - GooString *filename = new GooString(data->doc.getFileName()); - GooString *pwd = new GooString(password.data()); - DocumentData *doc2 = new DocumentData(filename, pwd); - delete pwd; - if (!doc2->doc.isOk()) { - delete doc2; - } else { - delete data; - data = doc2; - data->locked = false; - data->m_fontInfoScanner = new FontInfoScanner(&(data->doc)); - } - } - return data->locked; -} - -Document::PageMode Document::getPageMode(void) const -{ - switch (data->doc.getCatalog()->getPageMode()) { - case Catalog::pageModeNone: - return UseNone; - case Catalog::pageModeOutlines: - return UseOutlines; - case Catalog::pageModeThumbs: - return UseThumbs; - case Catalog::pageModeFullScreen: - return FullScreen; - case Catalog::pageModeOC: - return UseOC; - default: - return UseNone; - } -} - -int Document::getNumPages() const -{ - return data->doc.getNumPages(); -} - -TQValueList<FontInfo> Document::fonts() const -{ - TQValueList<FontInfo> ourList; - scanForFonts(getNumPages(), &ourList); - return ourList; -} - -bool Document::scanForFonts( int numPages, TQValueList<FontInfo> *fontList ) const -{ - GooList *items = data->m_fontInfoScanner->scan( numPages ); - - if ( NULL == items ) - return false; - - for ( int i = 0; i < items->getLength(); ++i ) { - TQString fontName; - if (((::FontInfo*)items->get(i))->getName()) - fontName = ((::FontInfo*)items->get(i))->getName()->getCString(); - - FontInfo font(fontName, - ((::FontInfo*)items->get(i))->getEmbedded(), - ((::FontInfo*)items->get(i))->getSubset(), - (Poppler::FontInfo::Type)((::FontInfo*)items->get(i))->getType()); - fontList->append(font); - } - deleteGooList(items, ::FontInfo); - return true; -} - -/* borrowed from kpdf */ -TQString Document::getInfo( const TQString & type ) const -{ - // [Albert] Code adapted from pdfinfo.cc on xpdf - Object info; - if ( data->locked ) - return NULL; - - data->doc.getDocInfo( &info ); - if ( !info.isDict() ) - return NULL; - - TQString result; - Object obj; - GooString *s1; - GBool isUnicode; - Unicode u; - int i; - Dict *infoDict = info.getDict(); - - if ( infoDict->lookup( (char*)type.latin1(), &obj )->isString() ) - { - s1 = obj.getString(); - if ( ( s1->getChar(0) & 0xff ) == 0xfe && ( s1->getChar(1) & 0xff ) == 0xff ) - { - isUnicode = gTrue; - i = 2; - } - else - { - isUnicode = gFalse; - i = 0; - } - while ( i < obj.getString()->getLength() ) - { - if ( isUnicode ) - { - u = ( ( s1->getChar(i) & 0xff ) << 8 ) | ( s1->getChar(i+1) & 0xff ); - i += 2; - } - else - { - u = s1->getChar(i) & 0xff; - ++i; - } - result += tqunicodeToTQString( &u, 1 ); - } - obj.free(); - info.free(); - return result; - } - obj.free(); - info.free(); - return NULL; -} - -/* borrowed from kpdf */ -TQDateTime Document::getDate( const TQString & type ) const -{ - // [Albert] Code adapted from pdfinfo.cc on xpdf - if ( data->locked ) - return TQDateTime(); - - Object info; - data->doc.getDocInfo( &info ); - if ( !info.isDict() ) { - info.free(); - return TQDateTime(); - } - - Object obj; - int year, mon, day, hour, min, sec, tz_hour, tz_minute; - char tz; - Dict *infoDict = info.getDict(); - TQString result; - - if ( infoDict->lookup( (char*)type.latin1(), &obj )->isString() ) - { - TQString s = UnicodeParsedString(obj.getString()); - // TODO do something with the timezone information - if ( parseDateString( s.latin1(), &year, &mon, &day, &hour, &min, &sec, &tz, &tz_hour, &tz_minute ) ) - { - TQDate d( year, mon, day ); //CHECK: it was mon-1, Jan->0 (??) - TQTime t( hour, min, sec ); - if ( d.isValid() && t.isValid() ) { - obj.free(); - info.free(); - return TQDateTime( d, t ); - } - } - } - obj.free(); - info.free(); - return TQDateTime(); -} - -bool Document::isEncrypted() const -{ - return data->doc.isEncrypted(); -} - -bool Document::isLinearized() const -{ - return data->doc.isLinearized(); -} - -bool Document::okToPrint() const -{ - return data->doc.okToPrint(); -} - -bool Document::okToChange() const -{ - return data->doc.okToChange(); -} - -bool Document::okToCopy() const -{ - return data->doc.okToCopy(); -} - -bool Document::okToAddNotes() const -{ - return data->doc.okToAddNotes(); -} - -double Document::getPDFVersion() const -{ - return data->doc.getPDFMajorVersion () + data->doc.getPDFMinorVersion() / 10.0; -} - -void Document::getPdfVersion(int *major, int *minor) const -{ - if (major) - *major = data->doc.getPDFMajorVersion(); - if (minor) - *minor = data->doc.getPDFMinorVersion(); -} - -TQDomDocument *Document::toc() const -{ - Outline * outline = data->doc.getOutline(); - if ( !outline ) - return NULL; - - GooList * items = outline->getItems(); - if ( !items || items->getLength() < 1 ) - return NULL; - - TQDomDocument *toc = new TQDomDocument(); - if ( items->getLength() > 0 ) - data->addTocChildren( toc, toc, items ); - - return toc; -} - -LinkDestination *Document::linkDestination( const TQString &name ) -{ - GooString * namedDest = TQStringToGooString( name ); - LinkDestinationData ldd(NULL, namedDest, data); - LinkDestination *ld = new LinkDestination(ldd); - delete namedDest; - return ld; -} - -bool Document::print(const TQString &fileName, TQValueList<int> pageList, double hDPI, double vDPI, int rotate) -{ - return print(fileName, pageList, hDPI, vDPI, rotate, -1, -1); -} - -bool Document::print(const TQString &file, TQValueList<int> pageList, double hDPI, double vDPI, int rotate, int paperWidth, int paperHeight) -{ - PSOutputDev *psOut = new PSOutputDev(file.latin1(), data->doc.getXRef(), data->doc.getCatalog(), NULL, 1, data->doc.getNumPages(), psModePS, paperWidth, paperHeight); - - if (psOut->isOk()) { - TQValueList<int>::iterator it; - for (it = pageList.begin(); it != pageList.end(); ++it ) - data->doc.displayPage(psOut, *it, hDPI, vDPI, rotate, gFalse, gTrue, gTrue); - - delete psOut; - return true; - } else { - delete psOut; - return false; - } -} - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-fontinfo.cc b/kfile-plugins/pdf/poppler-qt/poppler-fontinfo.cc deleted file mode 100644 index c0e777a7..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-fontinfo.cc +++ /dev/null @@ -1,83 +0,0 @@ -/* poppler-qt.h: qt interface to poppler - * Copyright (C) 2005, Albert Astals Cid <aacid@kde.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "poppler-qt.h" - -namespace Poppler { - -class FontInfoData -{ - public: - TQString fontName; - bool isEmbedded; - bool isSubset; - FontInfo::Type type; -}; - -FontInfo::FontInfo( const TQString &fontName, const bool isEmbedded, const bool isSubset, Type type ) -{ - data = new FontInfoData(); - data->fontName = fontName; - data->isEmbedded = isEmbedded; - data->isSubset = isSubset; - data->type = type; -} - -FontInfo::FontInfo( const FontInfo &fi ) -{ - data = new FontInfoData(); - data->fontName = fi.data->fontName; - data->isEmbedded = fi.data->isEmbedded; - data->isSubset = fi.data->isSubset; - data->type = fi.data->type; -} - -FontInfo::FontInfo() -{ - data = new FontInfoData(); - data->isEmbedded = false; - data->isSubset = false; - data->type = unknown; -} - -FontInfo::~FontInfo() -{ - delete data; -} - -const TQString &FontInfo::name() const -{ - return data->fontName; -} - -bool FontInfo::isEmbedded() const -{ - return data->isEmbedded; -} - -bool FontInfo::isSubset() const -{ - return data->isSubset; -} - -FontInfo::Type FontInfo::type() const -{ - return data->type; -} - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-link-qt3.h b/kfile-plugins/pdf/poppler-qt/poppler-link-qt3.h deleted file mode 100644 index fc22d8ed..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-link-qt3.h +++ /dev/null @@ -1,188 +0,0 @@ -/* poppler-link.h: qt interface to poppler - * Copyright (C) 2006, Albert Astals Cid <aacid@kde.org> - * Adapting code from - * Copyright (C) 2004 by Enrico Ros <eros.kde@email.it> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef _POPPLER_LINK_H_ -#define _POPPLER_LINK_H_ - -#include <tqstring.h> -#include <tqrect.h> - -namespace Poppler { - -class LinkDestinationData; - -class LinkDestination -{ - public: - enum Kind - { - destXYZ = 1, - destFit = 2, - destFitH = 3, - destFitV = 4, - destFitR = 5, - destFitB = 6, - destFitBH = 7, - destFitBV = 8 - }; - - LinkDestination(const LinkDestinationData &data); - LinkDestination(const TQString &description); - - // Accessors. - Kind kind() const; - int pageNumber() const; - double left() const; - double bottom() const; - double right() const; - double top() const; - double zoom() const; - bool isChangeLeft() const; - bool isChangeTop() const; - bool isChangeZoom() const; - - TQString toString() const; - - private: - Kind m_kind; // destination type - int m_pageNum; // page number - double m_left, m_bottom; // position - double m_right, m_top; - double m_zoom; // zoom factor - bool m_changeLeft, m_changeTop; // for destXYZ links, which position - bool m_changeZoom; // components to change -}; - -/** - * @short Encapsulates data that describes a link. - * - * This is the base class for links. It makes mandatory for inherited - * widgets to reimplement the 'linkType' method and return the type of - * the link described by the reimplemented class. - */ -class Link -{ - public: - Link( const TQRect &linkArea ); - - // get link type (inherited classes mustreturn an unique identifier) - enum LinkType { None, Goto, Execute, Browse, Action, Movie }; - virtual LinkType linkType() const; - - // virtual destructor - virtual ~Link(); - - TQRect linkArea() const; - - private: - TQRect m_linkArea; -}; - - -/** Goto: a viewport and maybe a reference to an external filename **/ -class LinkGoto : public Link -{ - public: - LinkGoto( const TQRect &linkArea, TQString extFileName, const LinkDestination & destination ); - - // query for goto parameters - bool isExternal() const; - const TQString & fileName() const; - const LinkDestination & destination() const; - LinkType linkType() const; - - private: - TQString m_extFileName; - LinkDestination m_destination; -}; - -/** Execute: filename and parameters to execute **/ -class LinkExecute : public Link -{ - public: - // query for filename / parameters - const TQString & fileName() const; - const TQString & parameters() const; - - // create a Link_Execute - LinkExecute( const TQRect &linkArea, const TQString & file, const TQString & params ); - LinkType linkType() const; - - private: - TQString m_fileName; - TQString m_parameters; -}; - -/** Browse: an URL to open, ranging from 'http://' to 'mailto:' etc.. **/ -class LinkBrowse : public Link -{ - public: - // query for URL - const TQString & url() const; - - // create a Link_Browse - LinkBrowse( const TQRect &linkArea, const TQString &url ); - LinkType linkType() const; - - private: - TQString m_url; -}; - -/** Action: contains an action to perform on document / viewer **/ -class LinkAction : public Link -{ - public: - // define types of actions - enum ActionType { PageFirst = 1, - PagePrev = 2, - PageNext = 3, - PageLast = 4, - HistoryBack = 5, - HistoryForward = 6, - Quit = 7, - Presentation = 8, - EndPresentation = 9, - Find = 10, - GoToPage = 11, - Close = 12 }; - - // query for action type - ActionType actionType() const; - - // create a Link_Action - LinkAction( const TQRect &linkArea, ActionType actionType ); - LinkType linkType() const; - - private: - ActionType m_type; -}; - -/** Movie: Not yet defined -> think renaming to 'Media' link **/ -class LinkMovie : public Link -// TODO this (Movie link) -{ - public: - LinkMovie( const TQRect &linkArea ); - LinkType linkType() const; -}; - -} - -#endif diff --git a/kfile-plugins/pdf/poppler-qt/poppler-link.cc b/kfile-plugins/pdf/poppler-qt/poppler-link.cc deleted file mode 100644 index 72db1fff..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-link.cc +++ /dev/null @@ -1,267 +0,0 @@ -/* poppler-link.cc: qt interface to poppler - * Copyright (C) 2006, 2008 Albert Astals Cid - * Adapting code from - * Copyright (C) 2004 by Enrico Ros <eros.kde@email.it> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include <poppler-qt.h> -#include <poppler-private.h> - -#include <tqstringlist.h> - -#include <Link.h> - -namespace Poppler { - - LinkDestination::LinkDestination(const LinkDestinationData &data) - { - bool deleteDest = false; - LinkDest *ld = data.ld; - - if ( data.namedDest && !ld ) - { - deleteDest = true; - ld = data.doc->doc.findDest( data.namedDest ); - } - - if (!ld) return; - - if (ld->getKind() == ::destXYZ) m_kind = destXYZ; - else if (ld->getKind() == ::destFit) m_kind = destFit; - else if (ld->getKind() == ::destFitH) m_kind = destFitH; - else if (ld->getKind() == ::destFitV) m_kind = destFitV; - else if (ld->getKind() == ::destFitR) m_kind = destFitR; - else if (ld->getKind() == ::destFitB) m_kind = destFitB; - else if (ld->getKind() == ::destFitBH) m_kind = destFitBH; - else if (ld->getKind() == ::destFitBV) m_kind = destFitBV; - - if ( !ld->isPageRef() ) m_pageNum = ld->getPageNum(); - else - { - Ref ref = ld->getPageRef(); - m_pageNum = data.doc->doc.findPage( ref.num, ref.gen ); - } - double left = ld->getLeft(); - double bottom = ld->getBottom(); - double right = ld->getRight(); - double top = ld->getTop(); - m_zoom = ld->getZoom(); - m_changeLeft = ld->getChangeLeft(); - m_changeTop = ld->getChangeTop(); - m_changeZoom = ld->getChangeZoom(); - - int leftAux = 0, topAux = 0, rightAux = 0, bottomAux = 0; - -#if defined(HAVE_SPLASH) - SplashOutputDev *sod = data.doc->getOutputDev(); - sod->cvtUserToDev( left, top, &leftAux, &topAux ); - sod->cvtUserToDev( right, bottom, &rightAux, &bottomAux ); -#endif - - m_left = leftAux; - m_top = topAux; - m_right = rightAux; - m_bottom = bottomAux; - - if (deleteDest) delete ld; - } - - LinkDestination::LinkDestination(const TQString &description) - { - TQStringList tokens = TQStringList::split(';', description); - m_kind = static_cast<Kind>(tokens[0].toInt()); - m_pageNum = tokens[1].toInt(); - m_left = tokens[2].toDouble(); - m_bottom = tokens[3].toDouble(); - m_right = tokens[4].toDouble(); - m_top = tokens[5].toDouble(); - m_zoom = tokens[6].toDouble(); - m_changeLeft = static_cast<bool>(tokens[7].toInt()); - m_changeTop = static_cast<bool>(tokens[8].toInt()); - m_changeZoom = static_cast<bool>(tokens[9].toInt()); - } - - LinkDestination::Kind LinkDestination::kind() const - { - return m_kind; - } - - int LinkDestination::pageNumber() const - { - return m_pageNum; - } - - double LinkDestination::left() const - { - return m_left; - } - - double LinkDestination::bottom() const - { - return m_bottom; - } - - double LinkDestination::right() const - { - return m_right; - } - - double LinkDestination::top() const - { - return m_top; - } - - double LinkDestination::zoom() const - { - return m_zoom; - } - - bool LinkDestination::isChangeLeft() const - { - return m_changeLeft; - } - - bool LinkDestination::isChangeTop() const - { - return m_changeTop; - } - - bool LinkDestination::isChangeZoom() const - { - return m_changeZoom; - } - - TQString LinkDestination::toString() const - { - TQString s = TQString::number( (TQ_INT8)m_kind ); - s += ";" + TQString::number( m_pageNum ); - s += ";" + TQString::number( m_left ); - s += ";" + TQString::number( m_bottom ); - s += ";" + TQString::number( m_right ); - s += ";" + TQString::number( m_top ); - s += ";" + TQString::number( m_zoom ); - s += ";" + TQString::number( (TQ_INT8)m_changeLeft ); - s += ";" + TQString::number( (TQ_INT8)m_changeTop ); - s += ";" + TQString::number( (TQ_INT8)m_changeZoom ); - return s; - } - - - // Link - Link::~Link() - { - } - - Link::Link(const TQRect &linkArea) : m_linkArea(linkArea) - { - } - - Link::LinkType Link::linkType() const - { - return None; - } - - TQRect Link::linkArea() const - { - return m_linkArea; - } - - // LinkGoto - LinkGoto::LinkGoto( const TQRect &linkArea, TQString extFileName, const LinkDestination & destination ) : Link(linkArea), m_extFileName(extFileName), m_destination(destination) - { - } - - bool LinkGoto::isExternal() const - { - return !m_extFileName.isEmpty(); - } - - const TQString &LinkGoto::fileName() const - { - return m_extFileName; - } - - const LinkDestination &LinkGoto::destination() const - { - return m_destination; - } - - Link::LinkType LinkGoto::linkType() const - { - return Goto; - } - - // LinkExecute - LinkExecute::LinkExecute( const TQRect &linkArea, const TQString & file, const TQString & params ) : Link(linkArea), m_fileName(file), m_parameters(params) - { - } - - const TQString & LinkExecute::fileName() const - { - return m_fileName; - } - const TQString & LinkExecute::parameters() const - { - return m_parameters; - } - - Link::LinkType LinkExecute::linkType() const - { - return Execute; - } - - // LinkBrowse - LinkBrowse::LinkBrowse( const TQRect &linkArea, const TQString &url ) : Link(linkArea), m_url(url) - { - } - - const TQString & LinkBrowse::url() const - { - return m_url; - } - - Link::LinkType LinkBrowse::linkType() const - { - return Browse; - } - - // LinkAction - LinkAction::LinkAction( const TQRect &linkArea, ActionType actionType ) : Link(linkArea), m_type(actionType) - { - } - - LinkAction::ActionType LinkAction::actionType() const - { - return m_type; - } - - Link::LinkType LinkAction::linkType() const - { - return Action; - } - - // LinkMovie - LinkMovie::LinkMovie( const TQRect &linkArea ) : Link(linkArea) - { - } - - Link::LinkType LinkMovie::linkType() const - { - return Movie; - } - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-page-transition-private.h b/kfile-plugins/pdf/poppler-qt/poppler-page-transition-private.h deleted file mode 100644 index 8bc70825..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-page-transition-private.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2005, Albert Astals Cid - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef POPPLER_PAGE_TRANSITION_PRIVATE_H -#define POPPLER_PAGE_TRANSITION_PRIVATE_H - -class Object; - -namespace Poppler { - -class PageTransitionParams { - public: - Object *dictObj; -}; - -} - -#endif // POPPLER_PAGE_TRANSITION_PRIVATE_H diff --git a/kfile-plugins/pdf/poppler-qt/poppler-page-transition.cc b/kfile-plugins/pdf/poppler-qt/poppler-page-transition.cc deleted file mode 100644 index 9998f738..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-page-transition.cc +++ /dev/null @@ -1,95 +0,0 @@ -/* PageTransition.cc - * Copyright (C) 2005, Net Integration Technologies, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "PageTransition.h" -#include "poppler-page-transition.h" -#include "poppler-page-transition-private.h" - -namespace Poppler { - -class PageTransitionData -{ - public: - PageTransitionData(Object *trans) - { - pt = new ::PageTransition(trans); - } - - PageTransitionData(const PageTransitionData &ptd) - { - pt = new ::PageTransition(*ptd.pt); - } - - ~PageTransitionData() - { - delete pt; - } - - ::PageTransition *pt; -}; - -PageTransition::PageTransition(const PageTransitionParams ¶ms) -{ - data = new PageTransitionData(params.dictObj); -} - -PageTransition::PageTransition(const PageTransition &pt) -{ - data = new PageTransitionData(*pt.data); -} - -PageTransition::~PageTransition() -{ - delete data; -} - -PageTransition::Type PageTransition::type() const -{ - return (Poppler::PageTransition::Type)data->pt->getType(); -} - -int PageTransition::duration() const -{ - return data->pt->getDuration(); -} - -PageTransition::Alignment PageTransition::tqalignment() const -{ - return (Poppler::PageTransition::Alignment)data->pt->getAlignment(); -} - -PageTransition::Direction PageTransition::direction() const -{ - return (Poppler::PageTransition::Direction)data->pt->getDirection(); -} - -int PageTransition::angle() const -{ - return data->pt->getAngle(); -} - -double PageTransition::scale() const -{ - return data->pt->getScale(); -} -bool PageTransition::isRectangular() const -{ - return data->pt->isRectangular(); -} - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-page-transition.h b/kfile-plugins/pdf/poppler-qt/poppler-page-transition.h deleted file mode 100644 index f33a014c..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-page-transition.h +++ /dev/null @@ -1,146 +0,0 @@ -/* PageTransition.h - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005, Brad Hards <bradh@frogmouth.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef __PAGETRANSITION_X_H__ -#define __PAGETRANSITION_X_H__ - -namespace Poppler { - -class PageTransitionParams; -class PageTransitionData; - -/** - \brief Describes how a PDF file viewer shall perform the transition - from one page to another - - In PDF files there is a way to specify if the viewer shall use - certain effects to perform the transition from one page to - another. This feature can be used, e.g., in a PDF-based beamer - presentation. - - This utility class represents the transition effect, and can be - used to extract the information from a PDF object. -*/ - - -class PageTransition { - public: - - /** \brief transition effect that shall be used - */ - // if changed remember to keep in sync with PageTransition.h enum - enum Type { - Replace = 0, - Split, - Blinds, - Box, - Wipe, - Dissolve, - Glitter, - Fly, - Push, - Cover, - Uncover, - Fade - }; - - /** \brief tqalignment of the transition effect that shall be used - */ - // if changed remember to keep in sync with PageTransition.h enum - enum Alignment { - Horizontal = 0, - Vertical - }; - - /** \brief direction of the transition effect that shall be used - */ - // if changed remember to keep in sync with PageTransition.h enum - enum Direction { - Inward = 0, - Outward - }; - - /** \brief Construct a new PageTransition object from a page dictionary. - - Users of the library will rarely need to construct a - PageTransition object themselves. Instead, the method - Poppler::Page::transition() can be used to find out if a certain - transition effect is specified. - - @warning In case or error, this method will print an error message to stderr, - and construct a default object. - - @param params an object whose dictionary will be read and - parsed. This must be a valid object, whose dictionaries are - accessed by the constructor. The object is only accessed by this - constructor, and may be deleted after the constructor returns. - */ - PageTransition(const PageTransitionParams ¶ms); - - /** \brief copy constructor */ - PageTransition(const PageTransition &pt); - - /** - Destructor - */ - ~PageTransition(); - - /** - \brief Get type of the transition. - */ - Type type() const; - - /** - \brief Get duration of the transition in seconds. - */ - int duration() const; - - /** - \brief Get dimension in which the transition effect occurs. - */ - Alignment tqalignment() const; - - /** - \brief Get direction of motion of the transition effect. - */ - Direction direction() const; - - /** - \brief Get direction in which the transition effect moves. - */ - int angle() const; - - /** - \brief Get starting or ending scale. - */ - double scale() const; - - /** - \brief Returns true if the area to be flown is rectangular and - opaque. - */ - bool isRectangular() const; - - private: - PageTransitionData *data; -}; - -} - -#endif diff --git a/kfile-plugins/pdf/poppler-qt/poppler-page.cc b/kfile-plugins/pdf/poppler-qt/poppler-page.cc deleted file mode 100644 index b6be9bd1..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-page.cc +++ /dev/null @@ -1,362 +0,0 @@ -/* poppler-page.cc: qt interface to poppler - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005-2006, Albert Astals Cid <aacid@kde.org> - * Copyright (C) 2005, Tobias Koening <tokoe@kde.org> - * Copyright (C) 2005, Stefan Kebekus <stefan.kebekus@math.uni-koeln.de> - * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss@gmx.at> - * Copyright (C) 2006, Jerry Epplin <jepplin@globalvelocity.com> - * Copyright (C) 2007, 2010, Pino Toscano <pino@kde.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include <poppler-qt.h> -#include <tqfile.h> -#include <tqimage.h> -#include <config.h> -#include <GlobalParams.h> -#include <PDFDoc.h> -#include <Catalog.h> -#include <ErrorCodes.h> -#include <TextOutputDev.h> -#include <Link.h> -#if defined(HAVE_SPLASH) -#include <SplashOutputDev.h> -#include <splash/SplashBitmap.h> -#endif - -#include "poppler-private.h" -#include "poppler-page-transition-private.h" - -namespace Poppler { - -class PageData { - public: - const Document *doc; - int index; - PageTransition *transition; -}; - -Page::Page(const Document *doc, int index) { - data = new PageData(); - data->index = index; - data->doc = doc; - data->transition = 0; -} - -Page::~Page() -{ - delete data->transition; - delete data; -} - -void Page::renderToPixmap(TQPixmap **q, int x, int y, int w, int h, bool doLinks) const -{ - renderToPixmap(q, x, y, w, h, 72.0, 72.0, doLinks); -} - -void Page::renderToPixmap(TQPixmap **q, int x, int y, int w, int h, double xres, double yres, bool doLinks) const -{ - TQImage img = renderToImage(xres, yres, doLinks); - *q = new TQPixmap( img ); -} - -TQImage Page::renderToImage(double xres, double yres, bool doLinks) const -{ -#if defined(HAVE_SPLASH) - SplashOutputDev *output_dev; - SplashBitmap *bitmap; - SplashColorPtr color_ptr; - output_dev = data->doc->data->getOutputDev(); - - data->doc->data->doc.displayPageSlice(output_dev, data->index + 1, xres, yres, - 0, false, true, false, -1, -1, -1, -1); - bitmap = output_dev->getBitmap (); - color_ptr = bitmap->getDataPtr (); - int bw = output_dev->getBitmap()->getWidth(); - int bh = output_dev->getBitmap()->getHeight(); - SplashColorPtr dataPtr = output_dev->getBitmap()->getDataPtr(); - - if (TQImage::BigEndian == TQImage::systemByteOrder()) - { - uchar c; - int count = bw * bh * 4; - for (int k = 0; k < count; k += 4) - { - c = dataPtr[k]; - dataPtr[k] = dataPtr[k+3]; - dataPtr[k+3] = c; - - c = dataPtr[k+1]; - dataPtr[k+1] = dataPtr[k+2]; - dataPtr[k+2] = c; - } - } - - // construct a qimage SHARING the raw bitmap data in memory - TQImage img( dataPtr, bw, bh, 32, 0, 0, TQImage::IgnoreEndian ); - img = img.copy(); - // unload underlying xpdf bitmap - output_dev->startPage( 0, NULL ); - - return img; -#else - (void)xres; - (void)xres; - (void)doLinks; - - return TQImage(); -#endif -} - -TQString Page::getText(const Rectangle &r) const -{ - TextOutputDev *output_dev; - GooString *s; - PDFRectangle *rect; - TQString result; - ::Page *p; - - output_dev = new TextOutputDev(0, gFalse, gFalse, gFalse); - data->doc->data->doc.displayPageSlice(output_dev, data->index + 1, 72, 72, - 0, false, false, false, -1, -1, -1, -1); - p = data->doc->data->doc.getCatalog()->getPage(data->index + 1); - if (r.isNull()) - { - rect = p->getCropBox(); - s = output_dev->getText(rect->x1, rect->y1, rect->x2, rect->y2); - } - else - { - double height, y1, y2; - height = p->getCropHeight(); - y1 = height - r.m_y2; - y2 = height - r.m_y1; - s = output_dev->getText(r.m_x1, y1, r.m_x2, y2); - } - - result = TQString::fromUtf8(s->getCString()); - - delete output_dev; - delete s; - return result; -} - -TQValueList<TextBox*> Page::textList() const -{ - TextOutputDev *output_dev; - - TQValueList<TextBox*> output_list; - - output_dev = new TextOutputDev(0, gFalse, gFalse, gFalse); - - data->doc->data->doc.displayPageSlice(output_dev, data->index + 1, 72, 72, - 0, false, false, false, -1, -1, -1, -1); - - TextWordList *word_list = output_dev->makeWordList(); - - if (!word_list) { - delete output_dev; - return output_list; - } - - for (int i = 0; i < word_list->getLength(); i++) { - TextWord *word = word_list->get(i); - GooString *word_str = word->getText(); - TQString string = TQString::fromUtf8(word_str->getCString()); - delete word_str; - double xMin, yMin, xMax, yMax; - word->getBBox(&xMin, &yMin, &xMax, &yMax); - - TextBox* text_box = new TextBox(string, Rectangle(xMin, yMin, xMax, yMax)); - - output_list.append(text_box); - } - - delete word_list; - delete output_dev; - - return output_list; -} - -PageTransition *Page::getTransition() const -{ - if (!data->transition) - { - Object o; - PageTransitionParams params; - params.dictObj = data->doc->data->doc.getCatalog()->getPage(data->index + 1)->getTrans(&o); - data->transition = new PageTransition(params); - o.free(); - } - return data->transition; -} - -TQSize Page::pageSize() const -{ - ::Page *p; - - p = data->doc->data->doc.getCatalog()->getPage(data->index + 1); - if ( ( Page::Landscape == orientation() ) || (Page::Seascape == orientation() ) ) { - return TQSize( (int)p->getCropHeight(), (int)p->getCropWidth() ); - } else { - return TQSize( (int)p->getCropWidth(), (int)p->getCropHeight() ); - } -} - -Page::Orientation Page::orientation() const -{ - ::Page *p = data->doc->data->doc.getCatalog()->getPage(data->index + 1); - - int rotation = p->getRotate(); - switch (rotation) { - case 90: - return Page::Landscape; - break; - case 180: - return Page::UpsideDown; - break; - case 270: - return Page::Seascape; - break; - default: - return Page::Portrait; - } -} - -TQValueList<Link*> Page::links() const -{ - TQValueList<Link*> popplerLinks; - -#if defined(HAVE_SPLASH) - Links *xpdfLinks = data->doc->data->doc.getLinks(data->index + 1); - for (int i = 0; i < xpdfLinks->getNumLinks(); ++i) - { - ::Link *xpdfLink = xpdfLinks->getLink(i); - - double left, top, right, bottom; - int leftAux, topAux, rightAux, bottomAux; - xpdfLink->getRect( &left, &top, &right, &bottom ); - TQRect linkArea; - - data->doc->data->m_outputDev->cvtUserToDev( left, top, &leftAux, &topAux ); - data->doc->data->m_outputDev->cvtUserToDev( right, bottom, &rightAux, &bottomAux ); - linkArea.setLeft(leftAux); - linkArea.setTop(topAux); - linkArea.setRight(rightAux); - linkArea.setBottom(bottomAux); - - if (!xpdfLink->isOk()) continue; - - Link *popplerLink = NULL; - ::LinkAction *a = xpdfLink->getAction(); - if ( a ) - { - switch ( a->getKind() ) - { - case actionGoTo: - { - LinkGoTo * g = (LinkGoTo *) a; - // create link: no ext file, namedDest, object pointer - popplerLink = new LinkGoto( linkArea, TQString(), LinkDestination( LinkDestinationData(g->getDest(), g->getNamedDest(), data->doc->data ) ) ); - } - break; - - case actionGoToR: - { - LinkGoToR * g = (LinkGoToR *) a; - // copy link file - const TQString fileName = UnicodeParsedString( g->getFileName() ); - // ceate link: fileName, namedDest, object pointer - popplerLink = new LinkGoto( linkArea, fileName, LinkDestination( LinkDestinationData(g->getDest(), g->getNamedDest(), data->doc->data ) ) ); - } - break; - - case actionLaunch: - { - LinkLaunch * e = (LinkLaunch *)a; - GooString * p = e->getParams(); - popplerLink = new LinkExecute( linkArea, e->getFileName()->getCString(), p ? p->getCString() : 0 ); - } - break; - - case actionNamed: - { - const char * name = ((LinkNamed *)a)->getName()->getCString(); - if ( !strcmp( name, "NextPage" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::PageNext ); - else if ( !strcmp( name, "PrevPage" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::PagePrev ); - else if ( !strcmp( name, "FirstPage" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::PageFirst ); - else if ( !strcmp( name, "LastPage" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::PageLast ); - else if ( !strcmp( name, "GoBack" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::HistoryBack ); - else if ( !strcmp( name, "GoForward" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::HistoryForward ); - else if ( !strcmp( name, "Quit" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::Quit ); - else if ( !strcmp( name, "GoToPage" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::GoToPage ); - else if ( !strcmp( name, "Find" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::Find ); - else if ( !strcmp( name, "FullScreen" ) ) - popplerLink = new LinkAction( linkArea, LinkAction::Presentation ); - else if ( !strcmp( name, "Close" ) ) - { - // acroread closes the document always, doesnt care whether - // its presentation mode or not - // popplerLink = new LinkAction( linkArea, LinkAction::EndPresentation ); - popplerLink = new LinkAction( linkArea, LinkAction::Close ); - } - else - { - // TODO - } - } - break; - - case actionURI: - { - popplerLink = new LinkBrowse( linkArea, ((LinkURI *)a)->getURI()->getCString() ); - } - break; - - case actionMovie: - case actionSound: - case actionRendition: - case actionJavaScript: - case actionOCGState: - break; - - case actionUnknown: - break; - } - } - - if (popplerLink) - { - popplerLinks.append(popplerLink); - } - } - - delete xpdfLinks; -#endif - - return popplerLinks; -} - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-private.cc b/kfile-plugins/pdf/poppler-qt/poppler-private.cc deleted file mode 100644 index 6d209c2b..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-private.cc +++ /dev/null @@ -1,147 +0,0 @@ -/* poppler-private.h: qt interface to poppler - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005-2008, Albert Astals Cid <aacid@kde.org> - * Copyright (C) 2006, Kristian Høgsberg <krh@bitplanet.net> - * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss@gmx.at> - * Copyright (C) 2007, Pino Toscano <pino@kde.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "poppler-private.h" -#include "poppler-link-qt3.h" - -#include <tqstring.h> - -#include <Outline.h> -#include <Link.h> - -namespace Poppler { - -/* borrowed from kpdf */ -TQString tqunicodeToTQString(Unicode* u, int len) -{ - TQString ret; - ret.setLength(len); - TQChar* qch = (TQChar*) ret.tqunicode(); - for (;len;--len) - *qch++ = (TQChar) *u++; - return ret; -} - -TQString UnicodeParsedString(GooString *s1) -{ - GBool isUnicode; - int i; - Unicode u; - TQString result; - if ( ( s1->getChar(0) & 0xff ) == 0xfe && ( s1->getChar(1) & 0xff ) == 0xff ) - { - isUnicode = gTrue; - i = 2; - } - else - { - isUnicode = gFalse; - i = 0; - } - while ( i < s1->getLength() ) - { - if ( isUnicode ) - { - u = ( ( s1->getChar(i) & 0xff ) << 8 ) | ( s1->getChar(i+1) & 0xff ); - i += 2; - } - else - { - u = s1->getChar(i) & 0xff; - ++i; - } - result += tqunicodeToTQString( &u, 1 ); - } - return result; -} - -GooString *TQStringToGooString(const TQString &s) -{ - int len = s.length(); - char *cstring = (char *)gmallocn(s.length(), sizeof(char)); - for (int i = 0; i < len; ++i) - cstring[i] = s.tqat(i).tqunicode(); - GooString *ret = new GooString(cstring, len); - gfree(cstring); - return ret; -} - - -void DocumentData::addTocChildren( TQDomDocument * docSyn, TQDomNode * tqparent, GooList * items ) -{ - int numItems = items->getLength(); - for ( int i = 0; i < numItems; ++i ) - { - // iterate over every object in 'items' - OutlineItem * outlineItem = (OutlineItem *)items->get( i ); - - // 1. create element using outlineItem's title as tagName - TQString name; - Unicode * uniChar = outlineItem->getTitle(); - int titleLength = outlineItem->getTitleLength(); - name = tqunicodeToTQString(uniChar, titleLength); - if ( name.isEmpty() ) - continue; - - TQDomElement item = docSyn->createElement( name ); - tqparent->appendChild( item ); - - // 2. find the page the link refers to - ::LinkAction * a = outlineItem->getAction(); - if ( a && ( a->getKind() == actionGoTo || a->getKind() == actionGoToR ) ) - { - // page number is contained/referenced in a LinkGoTo - LinkGoTo * g = static_cast< LinkGoTo * >( a ); - LinkDest * destination = g->getDest(); - if ( !destination && g->getNamedDest() ) - { - // no 'destination' but an internal 'named reference'. we could - // get the destination for the page now, but it's VERY time consuming, - // so better storing the reference and provide the viewport on demand - GooString *s = g->getNamedDest(); - TQChar *charArray = new TQChar[s->getLength()]; - for (int i = 0; i < s->getLength(); ++i) charArray[i] = TQChar(s->getCString()[i]); - TQString aux(charArray, s->getLength()); - item.setAttribute( "DestinationName", aux ); - delete[] charArray; - } - else if ( destination && destination->isOk() ) - { - LinkDestinationData ldd(destination, NULL, this); - item.setAttribute( "Destination", LinkDestination(ldd).toString() ); - } - if ( a->getKind() == actionGoToR ) - { - LinkGoToR * g2 = static_cast< LinkGoToR * >( a ); - item.setAttribute( "ExternalFileName", g2->getFileName()->getCString() ); - } - } - - // 3. recursively descend over tqchildren - outlineItem->open(); - GooList * tqchildren = outlineItem->getKids(); - if ( tqchildren ) - addTocChildren( docSyn, &item, tqchildren ); - } -} - -} diff --git a/kfile-plugins/pdf/poppler-qt/poppler-private.h b/kfile-plugins/pdf/poppler-qt/poppler-private.h deleted file mode 100644 index b1b79084..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-private.h +++ /dev/null @@ -1,97 +0,0 @@ -/* poppler-private.h: qt interface to poppler - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005-2008, Albert Astals Cid <aacid@kde.org> - * Copyright (C) 2006, Kristian Høgsberg <krh@bitplanet.net> - * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss@gmx.at> - * Copyright (C) 2007, Pino Toscano <pino@kde.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef POPPLER_PRIVATE_H -#define POPPLER_PRIVATE_H - -#include <tqdom.h> - -#include <config.h> -#include <Object.h> -#include <PDFDoc.h> -#include <FontInfo.h> -#if defined(HAVE_SPLASH) -#include <SplashOutputDev.h> -#else -class SplashOutputDev; -#endif - -namespace Poppler { - -class DocumentData; - -TQString tqunicodeToTQString(Unicode* u, int len); - -TQString UnicodeParsedString(GooString *s1); - -GooString *TQStringToGooString(const TQString &s); - -class LinkDestinationData { - public: - LinkDestinationData( LinkDest *l, GooString *nd, Poppler::DocumentData *pdfdoc ) : ld(l), namedDest(nd), doc(pdfdoc) - { - } - - LinkDest *ld; - GooString *namedDest; - Poppler::DocumentData *doc; -}; - -class DocumentData { - public: - DocumentData(GooString *filePath, GooString *password) : doc(filePath,password), m_fontInfoScanner(0), m_outputDev(0) {} - - ~DocumentData() - { -#if defined(HAVE_SPLASH) - delete m_outputDev; -#endif - delete m_fontInfoScanner; - } - - SplashOutputDev *getOutputDev() - { -#if defined(HAVE_SPLASH) - if (!m_outputDev) - { - SplashColor white; - white[0] = 255; - white[1] = 255; - white[2] = 255; - m_outputDev = new SplashOutputDev(splashModeXBGR8, 4, gFalse, white); - m_outputDev->startDoc(doc.getXRef()); - } -#endif - return m_outputDev; - } - - void addTocChildren( TQDomDocument * docSyn, TQDomNode * tqparent, GooList * items ); - - class PDFDoc doc; - bool locked; - FontInfoScanner *m_fontInfoScanner; - SplashOutputDev *m_outputDev; -}; - -} - -#endif // POPPLER_PRIVATE_H diff --git a/kfile-plugins/pdf/poppler-qt/poppler-qt.h b/kfile-plugins/pdf/poppler-qt/poppler-qt.h deleted file mode 100644 index 9150ee3b..00000000 --- a/kfile-plugins/pdf/poppler-qt/poppler-qt.h +++ /dev/null @@ -1,310 +0,0 @@ -/* poppler-qt.h: qt interface to poppler - * Copyright (C) 2005, Net Integration Technologies, Inc. - * Copyright (C) 2005, Tobias Koening <tokoe@kde.org> - * Copyright (C) 2005-2007, Albert Astals Cid <aacid@kde.org> - * Copyright (C) 2005-2006, Stefan Kebekus <stefan.kebekus@math.uni-koeln.de> - * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss@gmx.at> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef __POPPLER_TQT_H__ -#define __POPPLER_TQT_H__ - -#include "poppler-link-qt3.h" -#include "poppler-page-transition.h" - -#include <tqcstring.h> -#include <tqdatetime.h> -#include <tqdom.h> -#include <tqpixmap.h> - -namespace Poppler { - -class Document; -class Page; - -/* A rectangle on a page, with coordinates in PDF points. */ -class Rectangle -{ - public: - Rectangle(double x1 = 0, double y1 = 0, double x2 = 0, double y2 = 0) : - m_x1(x1), m_y1(y1), m_x2(x2), m_y2(y2) {} - bool isNull() const { return m_x1 == 0 && m_y1 == 0 && m_x2 == 0 && m_y2 == 0; } - - double m_x1; - double m_y1; - double m_x2; - double m_y2; -}; - -class TextBox -{ - public: - TextBox(const TQString& text, const Rectangle &bBox) : - m_text(text), m_bBox(bBox) {}; - - TQString getText() const { return m_text; }; - Rectangle getBoundingBox() const { return m_bBox; }; - - private: - TQString m_text; - Rectangle m_bBox; -}; - - -/** - Container class for information about a font within a PDF document -*/ -class FontInfoData; -class FontInfo { -public: - enum Type { - unknown, - Type1, - Type1C, - Type1COT, - Type3, - TrueType, - TrueTypeOT, - CIDType0, - CIDType0C, - CIDType0COT, - CIDTrueType, - CIDTrueTypeOT - }; - - /** - Create a new font information container - */ - FontInfo( const TQString &fontName, const bool isEmbedded, - const bool isSubset, Type type ); - - FontInfo(); - - FontInfo( const FontInfo &fi ); - - ~FontInfo(); - - /** - The name of the font. Can be TQString() if the font has no name - */ - const TQString &name() const; - - /** - Whether the font is embedded in the file, or not - - \return true if the font is embedded - */ - bool isEmbedded() const; - - /** - Whether the font provided is only a subset of the full - font or not. This only has meaning if the font is embedded. - - \return true if the font is only a subset - */ - bool isSubset() const; - - /** - The type of font encoding - */ - Type type() const; - - const TQString &typeName() const; - -private: - FontInfoData *data; -}; - -class PageData; -class Page { - friend class Document; - public: - ~Page(); - void renderToPixmap(TQPixmap **q, int x, int y, int w, int h, double xres, double yres, bool doLinks = false) const; - - /** - This is a convenience function that is equivalent to - renderToPixmap() with xres and yres set to 72.0. We keep it - only for binary compatibility - - \sa renderToImage() - */ - void renderToPixmap(TQPixmap **q, int x, int y, int w, int h, bool doLinks = false) const; - - /** - \brief Render the page to a TQImage using the Splash renderer - - This method can be used to render the page to a TQImage. It - uses the "Splash" rendering engine. - - \param xres horizontal resolution of the graphics device, - in dots per inch (defaults to 72 dpi) - - \param yres vertical resolution of the graphics device, in - dots per inch (defaults to 72 dpi) - - \returns a TQImage of the page. - - \sa renderToPixmap() - */ - TQImage renderToImage(double xres = 72.0, double yres = 72.0, bool doLinks = false) const; - - /** - * Returns the size of the page in points - **/ - TQSize pageSize() const; - - /** - * Returns the text that is inside the Rectangle r - * If r is a null Rectangle all text of the page is given - **/ - TQString getText(const Rectangle &r) const; - - TQValueList<TextBox*> textList() const; - - /** - * Returns the transition of this page - **/ - PageTransition *getTransition() const; - - enum Orientation { - Landscape, - Portrait, - Seascape, - UpsideDown - }; - - /** - * The orientation of the page - **/ - Orientation orientation() const; - - /** - Gets the links of the page once it has been rendered if doLinks was true - */ - TQValueList<Link*> links() const; - - private: - Page(const Document *doc, int index); - PageData *data; -}; - -class DocumentData; - -class Document { - friend class Page; - -public: - enum PageMode { - UseNone, - UseOutlines, - UseThumbs, - FullScreen, - UseOC - }; - - static Document *load(const TQString & filePath); - - Page *getPage(int index) const{ return new Page(this, index); } - - int getNumPages() const; - - PageMode getPageMode() const; - - bool unlock(const TQCString &password); - - bool isLocked() const; - - TQDateTime getDate( const TQString & data ) const; - TQString getInfo( const TQString & data ) const; - bool isEncrypted() const; - bool isLinearized() const; - bool okToPrint() const; - bool okToChange() const; - bool okToCopy() const; - bool okToAddNotes() const; - double getPDFVersion() const; - /** - The version of the PDF specification that the document - conforms to - - \param major an optional pointer to a variable where store the - "major" number of the version - \param minor an optional pointer to a variable where store the - "minor" number of the version - - \since 0.12 - */ - void getPdfVersion(int *major, int *minor) const; - - bool print(const TQString &fileName, TQValueList<int> pageList, double hDPI, double vDPI, int rotate); - - // If you are using TQPrinter you can get paper size doing - // TQPrinter dummy(TQPrinter::PrinterResolution); - // dummy.setFullPage(true); - // dummy.setPageSize(thePageSizeYouWant); - // TQPaintDeviceMetrics metrics(&dummy); - // int width = metrics.width(); - // int height = metrics.height(); - bool print(const TQString &fileName, TQValueList<int> pageList, double hDPI, double vDPI, int rotate, int paperWidth, int paperHeight); - - /** - The fonts within the PDF document. - - \note this can take a very long time to run with a large - document. You may wish to use the call below if you have more - than say 20 pages - */ - TQValueList<FontInfo> fonts() const; - - /** - \overload - - \param numPages the number of pages to scan - \param fontList pointer to the list where the font information - should be placed - - \return false if the end of the document has been reached - */ - bool scanForFonts( int numPages, TQValueList<FontInfo> *fontList ) const; - - /** - Gets the TOC of the Document, it is application responsabiliy to delete - it when no longer needed - - * In the tree the tag name is the 'screen' name of the entry. A tag can have - * attributes. Here follows the list of tag attributes with meaning: - * - Destination: A string description of the referred destination - * - DestinationName: A 'named reference' to the viewport that must be converted - * using linkDestination( *destination_name* ) - * - ExternalFileName: A link to a external filename - - \returns NULL if the Document does not have TOC - */ - TQDomDocument *toc() const; - - LinkDestination *linkDestination( const TQString &name ); - - ~Document(); - -private: - DocumentData *data; - Document(DocumentData *dataA); -}; - -} -#endif diff --git a/kfile-plugins/pdf/poppler-qt/test-poppler-qt.cpp b/kfile-plugins/pdf/poppler-qt/test-poppler-qt.cpp deleted file mode 100644 index d616290d..00000000 --- a/kfile-plugins/pdf/poppler-qt/test-poppler-qt.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include <tqapplication.h> -#include <tqpainter.h> -#include <tqpixmap.h> -#include <tqwidget.h> -#include <tqlabel.h> -#include <tqmessagebox.h> -#include <tqfile.h> -#include <ctype.h> -#include <poppler-qt.h> -#include <stdlib.h> - -class PDFDisplay : public TQWidget // picture display widget -{ -public: - PDFDisplay( Poppler::Document *d ); - ~PDFDisplay(); -protected: - void paintEvent( TQPaintEvent * ); - void keyPressEvent( TQKeyEvent * ); -private: - void display(); - - int currentPage; - TQPixmap *pixmap; - Poppler::Document *doc; -}; - -PDFDisplay::PDFDisplay( Poppler::Document *d ) -{ - doc = d; - pixmap = 0; - currentPage = 0; - display(); -} - -PDFDisplay::~PDFDisplay() -{ - delete doc; - delete pixmap; -} - -void PDFDisplay::paintEvent( TQPaintEvent *e ) -{ - TQPainter paint( this ); // paint widget - if (pixmap) - paint.drawPixmap(0, 0, *pixmap); -} - -void PDFDisplay::keyPressEvent( TQKeyEvent *e ) -{ - if (e->key() == TQt::Key_Down) - { - if (currentPage + 1 < doc->getNumPages()) - { - currentPage++; - display(); - } - } - else if (e->key() == TQt::Key_Up) - { - if (currentPage > 0) - { - currentPage--; - display(); - } - } -} - -void PDFDisplay::display() -{ - if (doc) { - Poppler::Page *page = doc->getPage(currentPage); - if (page) { - delete pixmap; - page->renderToPixmap(&pixmap, -1, -1, -1, -1); - delete page; - update(); - } - } else { - printf("doc not loaded\n"); - } -} - -int main( int argc, char **argv ) -{ - TQApplication a( argc, argv ); // TQApplication required! - - if ( argc < 2 || (argc == 3 && strcmp(argv[2], "-extract") != 0) || argc > 3) - { - // use argument as file name - printf("usage: test-poppler-qt filename [-extract]\n"); - exit(1); - } - - Poppler::Document *doc = Poppler::Document::load(argv[1]); - if (!doc) - { - printf("doc not loaded\n"); - exit(1); - } - - if (argc == 2) - { - PDFDisplay test( doc ); // create picture display - a.setMainWidget( &test); // set main widget - test.setCaption("Poppler-TQt Test"); - test.show(); // show it - - return a.exec(); // start event loop - } - else - { - Poppler::Page *page = doc->getPage(0); - - TQLabel *l = new TQLabel(page->getText(Poppler::Rectangle()), 0); - l->show(); - a.setMainWidget(l); // set main widget - delete page; - delete doc; - return a.exec(); - } -} |