diff options
author | Michele Calgaro <[email protected]> | 2020-12-13 19:22:19 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2020-12-13 21:14:47 +0900 |
commit | c57343e948aa9f3346ad866ad88d4b1330d098b8 (patch) | |
tree | 143dc455ce45167d0ae2809678967eeeb1e62ac6 /tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp | |
parent | d56dba4d2f900eb73d5ee00586c1b2d84b132b3f (diff) | |
download | tdegraphics-c57343e948aa9f3346ad866ad88d4b1330d098b8.tar.gz tdegraphics-c57343e948aa9f3346ad866ad88d4b1330d098b8.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <[email protected]>
(cherry picked from commit 14d0fbe96c6abdb9da80e99953aec672f999948c)
Diffstat (limited to 'tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp')
-rw-r--r-- | tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp b/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp new file mode 100644 index 00000000..059bf1c0 --- /dev/null +++ b/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp @@ -0,0 +1,152 @@ +/* poppler-private.h: qt interface to poppler + * Copyright (C) 2005, Net Integration Technologies, Inc. + * Copyright (C) 2005-2008, Albert Astals Cid <[email protected]> + * Copyright (C) 2006, Kristian Høgsberg <[email protected]> + * Copyright (C) 2006, Wilfried Huss <[email protected]> + * Copyright (C) 2007, Pino Toscano <[email protected]> + * + * 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 unicodeToTQString(CONST_064 Unicode* u, int len) +{ + TQString ret; + ret.setLength(len); + TQChar* qch = (TQChar*) ret.unicode(); + for (;len;--len) + *qch++ = (TQChar) *u++; + return ret; +} + +TQString UnicodeParsedString(CONST_064 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 += unicodeToTQString( &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.at(i).unicode(); + GooString *ret = new GooString(cstring, len); + gfree(cstring); + return ret; +} + + +void DocumentData::addTocChildren( TQDomDocument * docSyn, TQDomNode * parent, OUTLINE_ITEMS_TYPE * items ) +{ + int numItems = OUTLINE_ITEMS_LENGTH(items); + for ( int i = 0; i < numItems; ++i ) + { + // iterate over every object in 'items' + OutlineItem * outlineItem = +#ifdef HAVE_POPPLER_076 + (*items)[i]; +#else + (OutlineItem *)items->get( i ); +#endif + + // 1. create element using outlineItem's title as tagName + TQString name; + CONST_064 Unicode * uniChar = outlineItem->getTitle(); + int titleLength = outlineItem->getTitleLength(); + name = unicodeToTQString(uniChar, titleLength); + if ( name.isEmpty() ) + continue; + + TQDomElement item = docSyn->createElement( name ); + parent->appendChild( item ); + + // 2. find the page the link refers to + CONST_064 ::LinkAction * a = outlineItem->getAction(); + if ( a && ( a->getKind() == actionGoTo || a->getKind() == actionGoToR ) ) + { + // page number is contained/referenced in a LinkGoTo + CONST_064 LinkGoTo * g = static_cast< CONST_064 LinkGoTo * >( a ); + CONST_064 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 + CONST_064 GooString *s = g->getNamedDest(); + TQChar *charArray = new TQChar[s->getLength()]; + for (int i = 0; i < s->getLength(); ++i) charArray[i] = TQChar(s->GOO_GET_CSTR()[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 ) + { + CONST_064 LinkGoToR * g2 = static_cast< CONST_064 LinkGoToR * >( a ); + item.setAttribute( "ExternalFileName", g2->getFileName()->GOO_GET_CSTR() ); + } + } + + // 3. recursively descend over children + outlineItem->open(); + OUTLINE_ITEMS_TYPE * children = outlineItem->getKids(); + if ( children ) + addTocChildren( docSyn, &item, children ); + } +} + +} |