Merge branch 'master' of github.com:Sankore/Sankore-3.1

preferencesAboutTextFull
Ivan Ilin 13 years ago
commit 61e26430eb
  1. 2
      src/customWidgets/UBActionableWidget.h
  2. 22
      src/customWidgets/UBWidgetList.cpp
  3. 2
      src/pdf-merger/ASCIIHexDecode.cpp
  4. 4
      src/pdf-merger/AbstractBoxElementHandler.h
  5. 4
      src/pdf-merger/AnnotsHandler.cpp
  6. 4
      src/pdf-merger/Filter.cpp
  7. 8
      src/pdf-merger/FilterPredictor.cpp
  8. 2
      src/pdf-merger/FlateDecode.cpp
  9. 2
      src/pdf-merger/LZWDecode.cpp
  10. 2
      src/pdf-merger/MediaBoxElementHandler.h
  11. 12
      src/pdf-merger/Object.cpp
  12. 28
      src/pdf-merger/Page.cpp
  13. 4
      src/pdf-merger/PageElementHandler.cpp
  14. 4
      src/pdf-merger/PageElementHandler.h
  15. 93
      src/pdf-merger/Parser.cpp
  16. 6
      src/pdf-merger/Rectangle.cpp

@ -24,7 +24,6 @@ public:
void removeAction(eAction act); void removeAction(eAction act);
void removeAllActions(); void removeAllActions();
void setActionsVisible(bool bVisible); void setActionsVisible(bool bVisible);
bool shouldClose(QPoint p);
signals: signals:
void close(QWidget* w); void close(QWidget* w);
@ -32,7 +31,6 @@ signals:
protected: protected:
void setActionsParent(QWidget* parent); void setActionsParent(QWidget* parent);
void unsetActionsParent(); void unsetActionsParent();
void paintEvent(QPaintEvent* ev);
QVector<eAction> mActions; QVector<eAction> mActions;
QPushButton mCloseButtons; QPushButton mCloseButtons;

@ -143,28 +143,15 @@ void UBWidgetList::mousePressEvent(QMouseEvent *ev)
if(mCanRemove){ if(mCanRemove){
QWidget* pWAt = widgetAt(ev->pos()); QWidget* pWAt = widgetAt(ev->pos());
if(NULL != mpCurrentWidget){ if(NULL != mpCurrentWidget){
if(pWAt == mpCurrentWidget){ if(pWAt != mpCurrentWidget){
// qDebug() << ev->x() << "," << ev->y();
// qDebug() << "mpCurrentWidget->pos() = " << mpCurrentWidget->pos().x() << "," << mpCurrentWidget->pos().y();
// qDebug() << "viewport position: " << visibleRegion().boundingRect().x() << "," << visibleRegion().boundingRect().y();
// QPoint p;
// p.setX(ev->x() - mpCurrentWidget->pos().x());
// p.setY(ev->y() - mpCurrentWidget->pos().y());
// if(mpCurrentWidget->shouldClose(p)){
// emit closeWidget(mpCurrentWidget);
// return;
// }
}else{
mpCurrentWidget->setActionsVisible(false); mpCurrentWidget->setActionsVisible(false);
update();
} }
} }
mpCurrentWidget = dynamic_cast<UBActionableWidget*>(pWAt); mpCurrentWidget = dynamic_cast<UBActionableWidget*>(pWAt);
if(NULL != mpCurrentWidget){ if(NULL != mpCurrentWidget){
mpCurrentWidget->setActionsVisible(true); mpCurrentWidget->setActionsVisible(true);
update();
} }
} }
update(); update();
@ -240,6 +227,3 @@ bool UBWidgetList::empty()
{ {
return mWidgetInfo.empty(); return mWidgetInfo.empty();
} }
// TODO : - add onHover 'delete' button

@ -57,7 +57,7 @@ bool ASCIIHexDecode::decode(std::string & encoded)
for(int i = 0;i<len;i++) for(int i = 0;i<len;i++)
{ {
unsigned char ch = encoded[i]; unsigned char ch = encoded[i];
if( WHITESPACES.find(ch) != -1 ) if((int) WHITESPACES.find(ch) != -1 )
{ {
continue; continue;
} }

@ -42,7 +42,7 @@ namespace merge_lib
{ {
unsigned int startOfParent = content.find("/Parent"); unsigned int startOfParent = content.find("/Parent");
unsigned int endOfParent = content.find(" R", startOfParent); unsigned int endOfParent = content.find(" R", startOfParent);
if(startOfParent == -1) if((int)startOfParent == -1)
break; break;
std::vector <Object *> parents = parent->getChildrenByBounds(startOfParent, endOfParent); std::vector <Object *> parents = parent->getChildrenByBounds(startOfParent, endOfParent);
if(parents.size() != 1) if(parents.size() != 1)
@ -50,7 +50,7 @@ namespace merge_lib
parent = parents[0]; parent = parents[0];
std::string parentContent = parent->getObjectContent(); std::string parentContent = parent->getObjectContent();
unsigned int startOfMediaBox = parentContent.find(_handlerName); unsigned int startOfMediaBox = parentContent.find(_handlerName);
if(startOfMediaBox == -1) if((int)startOfMediaBox == -1)
{ {
content = parentContent; content = parentContent;
continue; continue;

@ -36,8 +36,8 @@ void AnnotsHandler::_processObjectContent(unsigned int startOfPageElement)
{ {
Object * child = _annotations[0]; Object * child = _annotations[0];
std::string childContent = child->getObjectContent(); std::string childContent = child->getObjectContent();
if( Parser::findToken(childContent,"/Rect") == -1 && if((int) Parser::findToken(childContent,"/Rect") == -1 &&
Parser::findToken(childContent,"/Subtype") == -1 ) (int)Parser::findToken(childContent,"/Subtype") == -1 )
{ {
// this was not Annotation but reference to array // this was not Annotation but reference to array
// of annotations // of annotations

@ -63,12 +63,12 @@ std::vector <Decoder * > Filter::_getDecoders()
while(1) while(1)
{ {
startOfDecoder = streamHeader.find("/", startOfDecoder); startOfDecoder = streamHeader.find("/", startOfDecoder);
if(startOfDecoder == -1) if((int)startOfDecoder == -1)
break; break;
else else
++startOfDecoder; ++startOfDecoder;
unsigned int endOfDecoder = streamHeader.find_first_of(whitespacesAndDelimeters, startOfDecoder); unsigned int endOfDecoder = streamHeader.find_first_of(whitespacesAndDelimeters, startOfDecoder);
if(endOfDecoder == -1) if((int)endOfDecoder == -1)
break; break;
std::map<std::string, Decoder *>::iterator foundDecoder = std::map<std::string, Decoder *>::iterator foundDecoder =
_allDecoders.find(streamHeader.substr(startOfDecoder, endOfDecoder - startOfDecoder)); _allDecoders.find(streamHeader.substr(startOfDecoder, endOfDecoder - startOfDecoder));

@ -59,14 +59,14 @@ FilterPredictor::~FilterPredictor()
std::string FilterPredictor::getDictionaryContentStr(std::string & in, size_t &pos ) std::string FilterPredictor::getDictionaryContentStr(std::string & in, size_t &pos )
{ {
size_t beg = in.find(DICT_START_TOKEN,pos); size_t beg = in.find(DICT_START_TOKEN,pos);
if( beg == -1 ) if((int) beg == -1 )
{ {
return ""; return "";
} }
beg += DICT_START_TOKEN.size(); beg += DICT_START_TOKEN.size();
size_t end = in.find(DICT_END_TOKEN,beg); size_t end = in.find(DICT_END_TOKEN,beg);
if( end == -1 ) if((int) end == -1 )
{ {
return ""; return "";
} }
@ -92,7 +92,7 @@ void FilterPredictor::obtainDecodeParams(Object *objectWithStream, std::string &
for(; it != params.end();it++) for(; it != params.end();it++)
{ {
size_t pos = dictStr.find((*it).first); size_t pos = dictStr.find((*it).first);
if( pos != -1 ) if((int) pos != -1 )
{ {
pos += (*it).first.size(); pos += (*it).first.size();
@ -123,7 +123,7 @@ void FilterPredictor::initialize(Object *objectWithStream)
objectWithStream->getHeader(content); objectWithStream->getHeader(content);
// we need to parse the header of file to obtain the decoder parameter // we need to parse the header of file to obtain the decoder parameter
size_t position = content.find(DECODE_PARAM_TOKEN); size_t position = content.find(DECODE_PARAM_TOKEN);
if( position != -1) if((int) position != -1)
{ {
position += DECODE_PARAM_TOKEN.size(); position += DECODE_PARAM_TOKEN.size();
std::string dictStr = getDictionaryContentStr(content,position); std::string dictStr = getDictionaryContentStr(content,position);

@ -47,7 +47,7 @@ void FlateDecode::initialize(Object * objectWithStream)
std::string head; std::string head;
objectWithStream->getHeader(head); objectWithStream->getHeader(head);
if( head.find(FilterPredictor::DECODE_PARAM_TOKEN) != -1 ) if((int) head.find(FilterPredictor::DECODE_PARAM_TOKEN) != -1 )
{ {
_predict = new FilterPredictor(); _predict = new FilterPredictor();
_predict->initialize(objectWithStream); _predict->initialize(objectWithStream);

@ -59,7 +59,7 @@ void LZWDecode::initialize(Object * objectWithStream)
std::string head; std::string head;
objectWithStream->getHeader(head); objectWithStream->getHeader(head);
if( head.find(FilterPredictor::DECODE_PARAM_TOKEN) != -1 ) if((int) head.find(FilterPredictor::DECODE_PARAM_TOKEN) != -1 )
{ {
_predict = new FilterPredictor(); _predict = new FilterPredictor();
_predict->initialize(objectWithStream); _predict->initialize(objectWithStream);

@ -59,7 +59,7 @@ namespace merge_lib
} }
bool _wasCropBoxHandlerCalled() bool _wasCropBoxHandlerCalled()
{ {
return (_page->getObjectContent().find("/BBox") != -1) ? true : false; return ((int)_page->getObjectContent().find("/BBox") != -1) ? true : false;
} }
}; };
} }

@ -369,7 +369,7 @@ bool Object::_findObject(const std::string & token, Object* & foundObject, unsig
{ {
_isPassed = true; _isPassed = true;
tokenPositionInContent = Parser::findToken(_content,token); tokenPositionInContent = Parser::findToken(_content,token);
if(tokenPositionInContent != -1) if((int)tokenPositionInContent != -1)
{ {
foundObject = this; foundObject = this;
return true; return true;
@ -456,12 +456,12 @@ bool Object::getStream(std::string & stream)
bool Object::_getStreamFromContent(std::string & stream) bool Object::_getStreamFromContent(std::string & stream)
{ {
size_t stream_begin = _content.find("stream"); size_t stream_begin = _content.find("stream");
if( stream_begin == -1 ) if((int) stream_begin == -1 )
{ {
return false; return false;
} }
size_t stream_end = _content.find("endstream",stream_begin); size_t stream_end = _content.find("endstream",stream_begin);
if( stream_end == -1 ) if((int) stream_end == -1 )
{ {
return false; return false;
} }
@ -558,7 +558,7 @@ std::string Object::getNameSimpleValue(const std::string &content, const std::st
Object* Object::findPatternInObjOrParents(const std::string &pattern) Object* Object::findPatternInObjOrParents(const std::string &pattern)
{ {
std::string content=getObjectContent(); std::string content=getObjectContent();
if( Parser::findToken(content,pattern,0) != -1 ) if((int) Parser::findToken(content,pattern,0) != -1 )
{ {
return this; return this;
} }
@ -569,7 +569,7 @@ Object* Object::findPatternInObjOrParents(const std::string &pattern)
{ {
unsigned int startOfParent = content.find("/Parent"); unsigned int startOfParent = content.find("/Parent");
unsigned int endOfParent = content.find(" R", startOfParent); unsigned int endOfParent = content.find(" R", startOfParent);
if(startOfParent == -1) if((int)startOfParent == -1)
{ {
break; break;
} }
@ -581,7 +581,7 @@ Object* Object::findPatternInObjOrParents(const std::string &pattern)
parent = parents[0]; parent = parents[0];
std::string parentContent = parent->getObjectContent(); std::string parentContent = parent->getObjectContent();
unsigned int startOfPattern = parentContent.find(pattern); unsigned int startOfPattern = parentContent.find(pattern);
if(startOfPattern == -1) if((int)startOfPattern == -1)
{ {
content = parentContent; content = parentContent;
continue; continue;

@ -167,6 +167,8 @@ void _recalculateAnnotsCoordinates(Object * annotation,
const Rectangle & outputPagesRectangle, const Rectangle & outputPagesRectangle,
const MergePageDescription & description) const MergePageDescription & description)
{ {
Q_UNUSED(outputPagesRectangle);
Q_UNUSED(basePagesRectangle);
std::string annotsRectangleName("/Rect"); std::string annotsRectangleName("/Rect");
Object * objectWithRectangle; Object * objectWithRectangle;
unsigned int fake; unsigned int fake;
@ -193,7 +195,7 @@ static void _updateAnnotParentPage(Object *annotation,Object *newParentPage)
std::string &annotContent = annotation->getObjectContent(); std::string &annotContent = annotation->getObjectContent();
size_t startOfP = Parser::findTokenName(annotContent,strP); size_t startOfP = Parser::findTokenName(annotContent,strP);
if( startOfP == -1 ) if((int) startOfP == -1 )
{ {
return; return;
} }
@ -229,12 +231,12 @@ static void _updateAnnotParentPage(Object *annotation,Object *newParentPage)
static void _updateAnnotFormColor(Object *annotation ) static void _updateAnnotFormColor(Object *annotation )
{ {
std::string &objectContent = annotation->getObjectContent(); std::string &objectContent = annotation->getObjectContent();
if( objectContent.find("/Widget") == -1 ) if((int) objectContent.find("/Widget") == -1 )
{ {
return; return;
} }
size_t startOfAP = Parser::findTokenName(objectContent,"/AP"); size_t startOfAP = Parser::findTokenName(objectContent,"/AP");
if( startOfAP == -1 ) if((int) startOfAP == -1 )
{ {
return; return;
} }
@ -262,7 +264,7 @@ static void _updateAnnotFormColor(Object *annotation )
{ {
if( token == "f" || token == "F" ) if( token == "f" || token == "F" )
{ {
if( found != -1 ) if((int) found != -1 )
{ {
decodedStream[found] = ' '; decodedStream[found] = ' ';
} }
@ -272,7 +274,7 @@ static void _updateAnnotFormColor(Object *annotation )
// Then we need to update Filter section (if any) // Then we need to update Filter section (if any)
std::string filterStr = "/Filter"; std::string filterStr = "/Filter";
size_t startOfFlate = Parser::findTokenName(content,filterStr); size_t startOfFlate = Parser::findTokenName(content,filterStr);
if( startOfFlate != -1 ) if((int) startOfFlate != -1 )
{ {
size_t endOfFlate = Parser::findEndOfElementContent(content,startOfFlate+filterStr.size()); size_t endOfFlate = Parser::findEndOfElementContent(content,startOfFlate+filterStr.size());
childWithAP->eraseContent(startOfFlate,endOfFlate-startOfFlate); childWithAP->eraseContent(startOfFlate,endOfFlate-startOfFlate);
@ -285,7 +287,7 @@ static void _updateAnnotFormColor(Object *annotation )
// update the length field // update the length field
std::string lengthStr = "/Length"; std::string lengthStr = "/Length";
size_t startOfLength = Parser::findTokenName(content,lengthStr,0); size_t startOfLength = Parser::findTokenName(content,lengthStr,0);
if( startOfLength != -1 ) if((int) startOfLength != -1 )
{ {
size_t endOfLength = Parser::findEndOfElementContent(content,startOfLength + lengthStr.size()); size_t endOfLength = Parser::findEndOfElementContent(content,startOfLength + lengthStr.size());
childWithAP->eraseContent(startOfLength,endOfLength-startOfLength); childWithAP->eraseContent(startOfLength,endOfLength-startOfLength);
@ -296,10 +298,10 @@ static void _updateAnnotFormColor(Object *annotation )
// update the stream of object with new content // update the stream of object with new content
std::string stream("stream"); std::string stream("stream");
size_t leftBoundOfContentStream = content.find(stream); size_t leftBoundOfContentStream = content.find(stream);
if( leftBoundOfContentStream != -1 ) if((int) leftBoundOfContentStream != -1 )
{ {
size_t rightBoundOfContentStream = content.find("endstream", leftBoundOfContentStream); size_t rightBoundOfContentStream = content.find("endstream", leftBoundOfContentStream);
if( rightBoundOfContentStream == -1 ) if((int) rightBoundOfContentStream == -1 )
{ {
rightBoundOfContentStream = content.size() - 1; rightBoundOfContentStream = content.size() - 1;
} }
@ -323,7 +325,7 @@ static void processBasePageResources(Object *basePage)
return; return;
} }
std::string resourceToken = "/Resources"; std::string resourceToken = "/Resources";
if( Parser::findTokenName(basePage->getObjectContent(),resourceToken) == -1 ) if((int) Parser::findTokenName(basePage->getObjectContent(),resourceToken) == -1 )
{ {
// it seems base page does not have resources, they can be located in parent! // it seems base page does not have resources, they can be located in parent!
Object *resource = basePage->findPatternInObjOrParents(resourceToken); Object *resource = basePage->findPatternInObjOrParents(resourceToken);
@ -331,20 +333,20 @@ static void processBasePageResources(Object *basePage)
{ {
std::string &resContStr = resource->getObjectContent(); std::string &resContStr = resource->getObjectContent();
size_t startOfRes = Parser::findTokenName(resContStr,resourceToken); size_t startOfRes = Parser::findTokenName(resContStr,resourceToken);
if( startOfRes == -1 ) if((int) startOfRes == -1 )
{ {
// no resources at all // no resources at all
return; return;
} }
size_t endOfRes = Parser::findEndOfElementContent(resContStr,startOfRes + resourceToken.size()); size_t endOfRes = Parser::findEndOfElementContent(resContStr,startOfRes + resourceToken.size());
if( endOfRes == -1 ) if((int) endOfRes == -1 )
{ {
return; // broken resources return; // broken resources
} }
std::string resourceContent = resContStr.substr(startOfRes,endOfRes-startOfRes); std::string resourceContent = resContStr.substr(startOfRes,endOfRes-startOfRes);
size_t positionToInsert = basePage->getObjectContent().find("<<"); size_t positionToInsert = basePage->getObjectContent().find("<<");
if( positionToInsert == -1 ) if((int) positionToInsert == -1 )
{ {
positionToInsert = 0; positionToInsert = 0;
resourceContent.insert(0,"<<"); resourceContent.insert(0,"<<");
@ -479,7 +481,7 @@ void Page::merge(Page * sourcePage, Document * parentDocument, MergePageDescript
rotationHandler.processObjectContent(); rotationHandler.processObjectContent();
description.basePageTransformation.addRotation(_rotation); description.basePageTransformation.addRotation(_rotation);
if( sourcePage->_root->getObjectContent().find("/Annots") != -1 ) if((int) sourcePage->_root->getObjectContent().find("/Annots") != -1 )
{ {
Object *crop = sourcePage->_root->findPatternInObjOrParents("/CropBox"); Object *crop = sourcePage->_root->findPatternInObjOrParents("/CropBox");
if( crop ) if( crop )

@ -73,10 +73,10 @@ unsigned int PageElementHandler::_findEndOfElementContent(unsigned int startOfPa
static std::string whitespacesAndDelimeters(" \t\f\v\n\r<<[/"); static std::string whitespacesAndDelimeters(" \t\f\v\n\r<<[/");
unsigned int foundSlash = _pageContent.find("/", startOfPageElement + 1); unsigned int foundSlash = _pageContent.find("/", startOfPageElement + 1);
std::string fieldType; std::string fieldType;
while(foundSlash != -1) while((int)foundSlash != -1)
{ {
unsigned int foundWhitespace = _pageContent.find_first_of(whitespacesAndDelimeters, foundSlash + 1); unsigned int foundWhitespace = _pageContent.find_first_of(whitespacesAndDelimeters, foundSlash + 1);
if(foundWhitespace != -1) if((int)foundWhitespace != -1)
fieldType = _pageContent.substr(foundSlash + 1, foundWhitespace - foundSlash - 1); fieldType = _pageContent.substr(foundSlash + 1, foundWhitespace - foundSlash - 1);
else else
break; break;

@ -46,7 +46,7 @@ namespace merge_lib
void processObjectContent() void processObjectContent()
{ {
unsigned int startOfPageElement = _findStartOfPageElement(); unsigned int startOfPageElement = _findStartOfPageElement();
if(startOfPageElement != -1) if((int)startOfPageElement != -1)
_processObjectContent(startOfPageElement); _processObjectContent(startOfPageElement);
if(_nextHandler) if(_nextHandler)
_nextHandler->processObjectContent(); _nextHandler->processObjectContent();
@ -55,7 +55,7 @@ namespace merge_lib
void changeObjectContent() void changeObjectContent()
{ {
unsigned int startOfPageElement = _findStartOfPageElement(); unsigned int startOfPageElement = _findStartOfPageElement();
if(startOfPageElement != -1) if((int)startOfPageElement != -1)
_changeObjectContent(startOfPageElement); _changeObjectContent(startOfPageElement);
else else
_pageElementNotFound(); _pageElementNotFound();

@ -12,6 +12,8 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <QtGlobal>
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
@ -57,8 +59,8 @@ void Parser::_retrieveAllPages(Object * objectWithKids)
unsigned int startOfKids = objectContent.find("/Kids"); unsigned int startOfKids = objectContent.find("/Kids");
unsigned int endOfKids = objectContent.find("]", startOfKids); unsigned int endOfKids = objectContent.find("]", startOfKids);
if( if(
(startOfKids == -1) && ((int)startOfKids == -1) &&
(objectContent.find("/Page") != -1) ((int)objectContent.find("/Page") != -1)
) )
{ {
unsigned int numberOfPages = _document->_pages.size() + 1; unsigned int numberOfPages = _document->_pages.size() + 1;
@ -77,11 +79,11 @@ void Parser::_retrieveAllPages(Object * objectWithKids)
void Parser::_createDocument(const char * docName) void Parser::_createDocument(const char * docName)
{ {
Q_UNUSED(docName);
_document->_root = _root; _document->_root = _root;
Object * objectWithPages = 0;
std::string & rootContent = _root->getObjectContent(); std::string & rootContent = _root->getObjectContent();
unsigned int startOfPages = rootContent.find("/Pages"); unsigned int startOfPages = rootContent.find("/Pages");
if(startOfPages == -1) if((int)startOfPages == -1)
throw Exception("Some document is wrong"); throw Exception("Some document is wrong");
unsigned int endOfPages = rootContent.find("R", startOfPages); unsigned int endOfPages = rootContent.find("R", startOfPages);
std::vector<Object *> objectWithKids = _root->getChildrenByBounds(startOfPages, endOfPages); std::vector<Object *> objectWithKids = _root->getChildrenByBounds(startOfPages, endOfPages);
@ -187,19 +189,19 @@ const std::map<unsigned int, Object::ReferencePositionsInContent> & Parser::_get
static std::map<unsigned int, std::vector<unsigned int> > searchResult; static std::map<unsigned int, std::vector<unsigned int> > searchResult;
searchResult.clear(); searchResult.clear();
unsigned int streamStart = objectContent.find("stream"); unsigned int streamStart = objectContent.find("stream");
if(streamStart == -1) if((int)streamStart == -1)
streamStart = objectContent.size(); streamStart = objectContent.size();
while(startOfNextSearch < streamStart) while(startOfNextSearch < streamStart)
{ {
//try to find reference. reference example is 15 0 R //try to find reference. reference example is 15 0 R
startOfNextSearch = objectContent.find(" R", startOfNextSearch); startOfNextSearch = objectContent.find(" R", startOfNextSearch);
currentPosition = startOfNextSearch; currentPosition = startOfNextSearch;
if(currentPosition != -1) if((int)currentPosition != -1)
{ {
//check that next character of " R" is WHITESPACE. //check that next character of " R" is WHITESPACE.
if((WHITESPACES.find(objectContent[currentPosition + 2]) == -1) && if(((int)WHITESPACES.find(objectContent[currentPosition + 2]) == -1) &&
(DELIMETERS.find(objectContent[currentPosition + 2]) == -1) ((int)DELIMETERS.find(objectContent[currentPosition + 2]) == -1)
) )
{ {
//this is not reference. this is something looks like "0 0 0 RG" //this is not reference. this is something looks like "0 0 0 RG"
@ -257,7 +259,7 @@ const std::map<unsigned int, Object::ReferencePositionsInContent> & Parser::_get
unsigned int Parser::_skipNumber(const std::string & str, unsigned int currentPosition) unsigned int Parser::_skipNumber(const std::string & str, unsigned int currentPosition)
{ {
unsigned int numberSearchCounter = currentPosition; unsigned int numberSearchCounter = currentPosition;
while((NUMBERS.find(str[numberSearchCounter]) != -1) && --numberSearchCounter) while(((int)NUMBERS.find(str[numberSearchCounter]) != -1) && --numberSearchCounter)
{} {}
return numberSearchCounter; return numberSearchCounter;
@ -281,17 +283,16 @@ void Parser::_readXRefAndCreateObjects()
//now we are reading the xref //now we are reading the xref
while(1) while(1)
{ {
unsigned int firstObjectNumber = Utils::stringToInt(_getNextToken(currentPostion)); Utils::stringToInt(_getNextToken(currentPostion));
unsigned int objectCount = Utils::stringToInt(_getNextToken(currentPostion)); unsigned int objectCount = Utils::stringToInt(_getNextToken(currentPostion));
for(unsigned int i(0); i < objectCount; i++) for(unsigned int i(0); i < objectCount; i++)
{ {
unsigned long first; unsigned long first;
unsigned long second;
if(_countTokens(currentPostion, _getEndOfLineFromContent(currentPostion)) == 3) if(_countTokens(currentPostion, _getEndOfLineFromContent(currentPostion)) == 3)
{ {
first = Utils::stringToInt(_getNextToken(currentPostion)); first = Utils::stringToInt(_getNextToken(currentPostion));
second = Utils::stringToInt(_getNextToken(currentPostion)); Utils::stringToInt(_getNextToken(currentPostion));
const string & use = _getNextToken(currentPostion); const string & use = _getNextToken(currentPostion);
if(!use.compare("n")) if(!use.compare("n"))
{ {
@ -367,10 +368,10 @@ const std::pair<unsigned int, unsigned int> & Parser::_getLineBounds(const std::
{ {
static std::pair<unsigned int, unsigned int> bounds; static std::pair<unsigned int, unsigned int> bounds;
bounds.first = str.rfind('\n', fromPosition); bounds.first = str.rfind('\n', fromPosition);
if(bounds.first == -1) if((int)bounds.first == -1)
bounds.first = 0; bounds.first = 0;
bounds.second = str.find('\n', fromPosition); bounds.second = str.find('\n', fromPosition);
if(bounds.second == -1) if((int)bounds.second == -1)
bounds.second = str.size(); bounds.second = str.size();
return bounds; return bounds;
} }
@ -405,7 +406,7 @@ unsigned int Parser::_countTokens(unsigned int leftBound, unsigned int rightBoun
while (position < rightBount) while (position < rightBount)
{ {
position = _fileContent.find_first_of(WHITESPACES, position); position = _fileContent.find_first_of(WHITESPACES, position);
if (position != -1) if ((int)position != -1)
++tokensCount; ++tokensCount;
//start search from next symbol //start search from next symbol
++position; ++position;
@ -416,7 +417,7 @@ unsigned int Parser::_countTokens(unsigned int leftBound, unsigned int rightBoun
unsigned int Parser::_skipWhiteSpaces(const std::string & str, unsigned int fromPosition) unsigned int Parser::_skipWhiteSpaces(const std::string & str, unsigned int fromPosition)
{ {
unsigned int position = fromPosition; unsigned int position = fromPosition;
if(WHITESPACES.find(str[0]) != -1) if((int)WHITESPACES.find(str[0]) != -1)
position = str.find_first_not_of(WHITESPACES, position); position = str.find_first_not_of(WHITESPACES, position);
return position; return position;
} }
@ -424,7 +425,7 @@ unsigned int Parser::_skipWhiteSpaces(const std::string & str, unsigned int from
unsigned int Parser::_skipWhiteSpacesFromContent(unsigned int fromPosition) unsigned int Parser::_skipWhiteSpacesFromContent(unsigned int fromPosition)
{ {
unsigned int position = fromPosition; unsigned int position = fromPosition;
if(WHITESPACES.find(_fileContent[position]) != -1) if((int)WHITESPACES.find(_fileContent[position]) != -1)
position = _fileContent.find_first_not_of(WHITESPACES, position);// + 1; position = _fileContent.find_first_not_of(WHITESPACES, position);// + 1;
return position; return position;
@ -453,7 +454,7 @@ const std::string & Parser::_getObjectContent(unsigned int objectPosition, unsig
static std::string objectContent; static std::string objectContent;
size_t contentStart = _fileContent.find_first_not_of(Parser::WHITESPACES,currentPosition); size_t contentStart = _fileContent.find_first_not_of(Parser::WHITESPACES,currentPosition);
if( contentStart == -1 ) if((int) contentStart == -1 )
{ {
std::stringstream strOut; std::stringstream strOut;
strOut<<"Wrong object "<< objectNumber<< "in PDF, cannot find content for it\n"; strOut<<"Wrong object "<< objectNumber<< "in PDF, cannot find content for it\n";
@ -461,13 +462,13 @@ const std::string & Parser::_getObjectContent(unsigned int objectPosition, unsig
} }
currentPosition = contentStart; currentPosition = contentStart;
unsigned int endOfContent = _fileContent.find("endobj", contentStart); unsigned int endOfContent = _fileContent.find("endobj", contentStart);
if( endOfContent == -1 ) if((int) endOfContent == -1 )
{ {
stringstream errorMessage("Corrupted PDF file, obj does not have matching endobj"); stringstream errorMessage("Corrupted PDF file, obj does not have matching endobj");
throw Exception(errorMessage); throw Exception(errorMessage);
} }
unsigned int endOfStream = _fileContent.find("endstream", currentPosition); unsigned int endOfStream = _fileContent.find("endstream", currentPosition);
if((endOfStream != -1) && (endOfStream < endOfContent)) if(((int)endOfStream != -1) && (endOfStream < endOfContent))
{ {
std::string stream("stream"); std::string stream("stream");
unsigned int beginOfStream = _fileContent.find(stream, currentPosition) + stream.size(); unsigned int beginOfStream = _fileContent.find(stream, currentPosition) + stream.size();
@ -484,7 +485,7 @@ const std::string & Parser::_getObjectContent(unsigned int objectPosition, unsig
// try to use Length field to determine end of stream. // try to use Length field to determine end of stream.
std::string lengthToken = "/Length"; std::string lengthToken = "/Length";
size_t lengthBegin = Parser::findTokenName(_fileContent,lengthToken,contentStart); size_t lengthBegin = Parser::findTokenName(_fileContent,lengthToken,contentStart);
if ( lengthBegin != -1 ) if ((int) lengthBegin != -1 )
{ {
std::string lengthStr; std::string lengthStr;
size_t lenPos = lengthBegin + lengthToken.size(); size_t lenPos = lengthBegin + lengthToken.size();
@ -512,7 +513,7 @@ const std::string & Parser::_getObjectContent(unsigned int objectPosition, unsig
strin>>streamEnd; strin>>streamEnd;
streamEnd += beginOfStream; streamEnd += beginOfStream;
unsigned int streamEndBegin = _fileContent.find("endstream",streamEnd); unsigned int streamEndBegin = _fileContent.find("endstream",streamEnd);
if( streamEndBegin != -1 ) if((int) streamEndBegin != -1 )
{ {
endOfStream = streamEndBegin; endOfStream = streamEndBegin;
} }
@ -537,18 +538,18 @@ unsigned int Parser::_readTrailerAndReturnRoot()
unsigned int startOfTrailer = Parser::findToken(_fileContent,"trailer", _getStartOfXrefWithRoot()); unsigned int startOfTrailer = Parser::findToken(_fileContent,"trailer", _getStartOfXrefWithRoot());
std::string rootStr("/Root"); std::string rootStr("/Root");
unsigned int startOfRoot = Parser::findToken(_fileContent,rootStr.data(), startOfTrailer); unsigned int startOfRoot = Parser::findToken(_fileContent,rootStr.data(), startOfTrailer);
if( startOfRoot == -1) if((int) startOfRoot == -1)
{ {
throw Exception("Cannot find Root object !"); throw Exception("Cannot find Root object !");
} }
std::string encryptStr("/Encrypt"); std::string encryptStr("/Encrypt");
if( Parser::findToken(_fileContent,encryptStr,startOfTrailer) != -1 ) if((int) Parser::findToken(_fileContent,encryptStr,startOfTrailer) != -1 )
{ {
throw Exception("Encrypted PDF is not supported!"); throw Exception("Encrypted PDF is not supported!");
} }
startOfRoot += rootStr.size()+1; //"/Root + ' ' startOfRoot += rootStr.size()+1; //"/Root + ' '
unsigned int endOfRoot = startOfRoot; unsigned int endOfRoot = startOfRoot;
while(NUMBERS.find(_fileContent[endOfRoot++]) != -1) while((int)NUMBERS.find(_fileContent[endOfRoot++]) != -1)
{} {}
--endOfRoot; --endOfRoot;
return Utils::stringToInt(_fileContent.substr(startOfRoot, endOfRoot - startOfRoot)); return Utils::stringToInt(_fileContent.substr(startOfRoot, endOfRoot - startOfRoot));
@ -557,21 +558,21 @@ unsigned int Parser::_readTrailerAndReturnRoot()
unsigned int Parser::_readTrailerAndRterievePrev(const unsigned int startPositionForSearch, unsigned int & previosXref) unsigned int Parser::_readTrailerAndRterievePrev(const unsigned int startPositionForSearch, unsigned int & previosXref)
{ {
unsigned int startOfTrailer = Parser::findToken(_fileContent,"trailer", startPositionForSearch); unsigned int startOfTrailer = Parser::findToken(_fileContent,"trailer", startPositionForSearch);
if( startOfTrailer == -1 ) if((int) startOfTrailer == -1 )
{ {
throw Exception("Cannot find trailer!"); throw Exception("Cannot find trailer!");
} }
unsigned int startOfPrev = _fileContent.find("Prev ", startOfTrailer); unsigned int startOfPrev = _fileContent.find("Prev ", startOfTrailer);
unsigned int startxref = _fileContent.find("startxref", startOfTrailer); unsigned int startxref = _fileContent.find("startxref", startOfTrailer);
if(startOfPrev == -1 || (startOfPrev > startxref)) if((int)startOfPrev == -1 || (startOfPrev > startxref))
return false; return false;
//"Prev "s length = 5 //"Prev "s length = 5
else else
startOfPrev += 5; startOfPrev += 5;
unsigned int endOfPrev = startOfPrev; unsigned int endOfPrev = startOfPrev;
while(NUMBERS.find(_fileContent[endOfPrev++]) != -1) while((int)NUMBERS.find(_fileContent[endOfPrev++]) != -1)
{} {}
--endOfPrev; --endOfPrev;
previosXref = Utils::stringToInt(_fileContent.substr(startOfPrev, endOfPrev - startOfPrev)); previosXref = Utils::stringToInt(_fileContent.substr(startOfPrev, endOfPrev - startOfPrev));
@ -589,13 +590,13 @@ std::string Parser::getNextToken(const std::string &str, unsigned int &position
} }
//skip first spaces //skip first spaces
size_t beg_pos = str.find_first_not_of(Parser::WHITESPACES,position); size_t beg_pos = str.find_first_not_of(Parser::WHITESPACES,position);
if ( beg_pos == -1 ) if ((int) beg_pos == -1 )
{ {
// it is empty string! // it is empty string!
return ""; return "";
} }
size_t end_pos = str.find_first_of(Parser::WHITESPACES_AND_DELIMETERS,beg_pos); size_t end_pos = str.find_first_of(Parser::WHITESPACES_AND_DELIMETERS,beg_pos);
if ( end_pos == -1 ) if ((int) end_pos == -1 )
{ {
end_pos = str.size(); end_pos = str.size();
} }
@ -623,7 +624,7 @@ bool Parser::getNextWord(std::string &out, const std::string &str, size_t &nextP
} }
//skip first spaces //skip first spaces
size_t beg_pos = str.find_first_not_of(Parser::WHITESPACES,nextPosition); size_t beg_pos = str.find_first_not_of(Parser::WHITESPACES,nextPosition);
if ( beg_pos == -1 ) if ((int) beg_pos == -1 )
{ {
// it is empty string! // it is empty string!
return false; return false;
@ -634,7 +635,7 @@ bool Parser::getNextWord(std::string &out, const std::string &str, size_t &nextP
} }
size_t end_pos = str.find_first_of(Parser::WHITESPACES,beg_pos); size_t end_pos = str.find_first_of(Parser::WHITESPACES,beg_pos);
if ( end_pos == -1 ) if ((int) end_pos == -1 )
{ {
end_pos = str.size(); end_pos = str.size();
} }
@ -656,8 +657,8 @@ void Parser::trim(std::string &str)
{ {
std::string::size_type pos1 = str.find_first_not_of(WHITESPACES); std::string::size_type pos1 = str.find_first_not_of(WHITESPACES);
std::string::size_type pos2 = str.find_last_not_of(WHITESPACES); std::string::size_type pos2 = str.find_last_not_of(WHITESPACES);
str = str.substr(pos1 == -1 ? 0 : pos1, str = str.substr((int)pos1 == -1 ? 0 : pos1,
pos2 == -1 ? str.length() - 1 : pos2 - pos1 + 1); (int)pos2 == -1 ? str.length() - 1 : pos2 - pos1 + 1);
} }
// Method tries to find the PDF token from the content // Method tries to find the PDF token from the content
@ -665,7 +666,7 @@ void Parser::trim(std::string &str)
std::string Parser::findTokenStr(const std::string &content, const std::string &pattern, size_t start, size_t &foundStart, size_t &foundEnd) std::string Parser::findTokenStr(const std::string &content, const std::string &pattern, size_t start, size_t &foundStart, size_t &foundEnd)
{ {
size_t cur_pos = Parser::findToken(content,pattern,start); size_t cur_pos = Parser::findToken(content,pattern,start);
if( cur_pos == -1 ) if((int) cur_pos == -1 )
{ {
return ""; return "";
} }
@ -673,7 +674,7 @@ std::string Parser::findTokenStr(const std::string &content, const std::string &
cur_pos += pattern.size(); cur_pos += pattern.size();
// then lets parse the content of remaining part // then lets parse the content of remaining part
size_t end_pos = content.find_first_of(Parser::DELIMETERS,cur_pos); size_t end_pos = content.find_first_of(Parser::DELIMETERS,cur_pos);
if( end_pos == -1 ) if((int) end_pos == -1 )
{ {
end_pos = content.size(); end_pos = content.size();
} }
@ -697,7 +698,7 @@ size_t Parser::findToken(const std::string &content, const std::string &keyword,
while( 1 ) while( 1 )
{ {
cur_pos = content.find(keyword,cur_pos); cur_pos = content.find(keyword,cur_pos);
if( cur_pos == -1 ) if((int) cur_pos == -1 )
{ {
break; break;
} }
@ -705,8 +706,8 @@ size_t Parser::findToken(const std::string &content, const std::string &keyword,
cur_pos += keyword.size(); cur_pos += keyword.size();
if( cur_pos < content.size() ) if( cur_pos < content.size() )
{ {
if( Parser::WHITESPACES.find(content[cur_pos]) != -1 || if((int) Parser::WHITESPACES.find(content[cur_pos]) != -1 ||
Parser::DELIMETERS.find(content[cur_pos]) != -1 ) (int)Parser::DELIMETERS.find(content[cur_pos]) != -1 )
{ {
foundStart = savedPos; foundStart = savedPos;
break; break;
@ -736,10 +737,10 @@ bool Parser::tokenIsAName(const std::string &content, size_t start )
size_t foundNonWhite = content.find_first_not_of(Parser::WHITESPACES,start); size_t foundNonWhite = content.find_first_not_of(Parser::WHITESPACES,start);
size_t foundDelim = content.find_first_of(Parser::DELIMETERS,start); size_t foundDelim = content.find_first_of(Parser::DELIMETERS,start);
if( foundNonWhite != -1 && if( (int)foundNonWhite != -1 &&
foundDelim != -1 ) (int)foundDelim != -1 )
{ {
if( (foundNonWhite < foundDelim ) || ( openBraces.find(content[foundDelim]) != -1) ) if( (foundNonWhite < foundDelim ) || ( (int)openBraces.find(content[foundDelim]) != -1) )
{ {
if( found ) if( found )
{ {
@ -784,7 +785,7 @@ size_t Parser::findTokenName(const std::string &content, const std::string &keyw
while( 1 ) while( 1 )
{ {
cur_pos = content.find(keyword,cur_pos); cur_pos = content.find(keyword,cur_pos);
if( cur_pos == -1 ) if((int) cur_pos == -1 )
{ {
break; break;
} }
@ -792,7 +793,7 @@ size_t Parser::findTokenName(const std::string &content, const std::string &keyw
cur_pos += keyword.size(); cur_pos += keyword.size();
if( cur_pos < content.size() ) if( cur_pos < content.size() )
{ {
if( Parser::WHITESPACES_AND_DELIMETERS.find(content[cur_pos]) != -1 ) if((int) Parser::WHITESPACES_AND_DELIMETERS.find(content[cur_pos]) != -1 )
{ {
if( tokenIsAName(content,cur_pos ) ) if( tokenIsAName(content,cur_pos ) )
{ {
@ -832,7 +833,7 @@ unsigned int Parser::findEndOfElementContent(const std::string &content,unsigned
unsigned int foundOpenBrace = content.find("[",curPos); unsigned int foundOpenBrace = content.find("[",curPos);
unsigned int foundOpenDict = content.find("<",curPos); unsigned int foundOpenDict = content.find("<",curPos);
if( foundDelimeter == -1 && foundOpenBrace == -1 && foundOpenDict == -1 ) if((int) foundDelimeter == -1 && (int)foundOpenBrace == -1 && (int)foundOpenDict == -1 )
{ {
if( !delimStack.empty() ) if( !delimStack.empty() )
{ {
@ -882,7 +883,7 @@ unsigned int Parser::findEndOfElementContent(const std::string &content,unsigned
if( delimStack.empty() ) if( delimStack.empty() )
{ {
foundEnd = content.find_first_of(delimeter,curPos); foundEnd = content.find_first_of(delimeter,curPos);
if( foundEnd == -1 ) if((int) foundEnd == -1 )
{ {
foundEnd = curPos; foundEnd = curPos;
} }

@ -42,14 +42,14 @@ _rectangleName(rectangleName)
{ {
unsigned int rectanglePosition = Parser::findToken(content,rectangleName); unsigned int rectanglePosition = Parser::findToken(content,rectangleName);
if( rectanglePosition == -1 ) if((int) rectanglePosition == -1 )
{ {
std::cerr<<"Unable to find rectangle name "<<rectangleName<<" in content\n"; std::cerr<<"Unable to find rectangle name "<<rectangleName<<" in content\n";
} }
size_t beg = content.find("[",rectanglePosition); size_t beg = content.find("[",rectanglePosition);
size_t end = content.find("]",rectanglePosition); size_t end = content.find("]",rectanglePosition);
if( beg != -1 && end != -1 ) if((int) beg != -1 && (int) end != -1 )
{ {
std::string arr = content.substr(beg+1,end-beg-1); std::string arr = content.substr(beg+1,end-beg-1);
std::stringstream in; std::stringstream in;
@ -119,7 +119,7 @@ void Rectangle::updateRectangle(Object * objectWithRectangle, const char * delim
std::string objectContent = objectWithMatrix->getObjectContent(); std::string objectContent = objectWithMatrix->getObjectContent();
unsigned int matrixPosition = Parser::findToken(objectContent,"/Matrix"); unsigned int matrixPosition = Parser::findToken(objectContent,"/Matrix");
if(matrixPosition == -1) if((int)matrixPosition == -1)
continue; continue;
unsigned int matrixValueLeftBound = objectContent.find("[", matrixPosition); unsigned int matrixValueLeftBound = objectContent.find("[", matrixPosition);
unsigned int matrixValueRightBound = objectContent.find("]", matrixValueLeftBound) + 1; unsigned int matrixValueRightBound = objectContent.find("]", matrixValueLeftBound) + 1;

Loading…
Cancel
Save