aboutsummaryrefslogtreecommitdiff
path: root/editors/pdfedit/files/patch-src__kernel__cpagecontents.cc
diff options
context:
space:
mode:
Diffstat (limited to 'editors/pdfedit/files/patch-src__kernel__cpagecontents.cc')
-rw-r--r--editors/pdfedit/files/patch-src__kernel__cpagecontents.cc374
1 files changed, 374 insertions, 0 deletions
diff --git a/editors/pdfedit/files/patch-src__kernel__cpagecontents.cc b/editors/pdfedit/files/patch-src__kernel__cpagecontents.cc
new file mode 100644
index 000000000000..dd3825a041f4
--- /dev/null
+++ b/editors/pdfedit/files/patch-src__kernel__cpagecontents.cc
@@ -0,0 +1,374 @@
+--- src/kernel/cpagecontents.cc.orig 2010-04-30 21:44:30.000000000 +0900
++++ src/kernel/cpagecontents.cc 2016-06-11 10:25:06.981679000 +0900
+@@ -55,8 +55,8 @@
+ //
+ //
+ void
+-CPageContents::ContentsWatchDog::notify (shared_ptr<IProperty> newValue,
+- shared_ptr<const IProperty::ObserverContext> context) const throw()
++CPageContents::ContentsWatchDog::notify (boost::shared_ptr<IProperty> newValue,
++ boost::shared_ptr<const IProperty::ObserverContext> context) const throw()
+ {
+ kernelPrintDbg (debug::DBG_DBG, "context type=" << context->getType());
+
+@@ -84,7 +84,7 @@
+ case ComplexChangeContextType:
+ {
+ // Is it a dictionary Page dictionary
+- shared_ptr<const CDict::CDictComplexObserverContext> ctxtdict =
++ boost::shared_ptr<const CDict::CDictComplexObserverContext> ctxtdict =
+ dynamic_pointer_cast<const CDict::CDictComplexObserverContext,
+ const IChangeContext<IProperty> > (context);
+ if (ctxtdict)
+@@ -102,7 +102,7 @@
+ // 1.2 Contents entry was removed
+ if (isNull(newValue))
+ {
+- shared_ptr<IProperty> oldValue = ctxtdict->getOriginalValue();
++ boost::shared_ptr<IProperty> oldValue = ctxtdict->getOriginalValue();
+ // Unregister observer
+ _cnt->unreg_observer (oldValue);
+
+@@ -116,7 +116,7 @@
+ }
+
+ // Is it an array (Contents) -- do nothing just reparse
+- shared_ptr<const CArray::CArrayComplexObserverContext> ctxtarray =
++ boost::shared_ptr<const CArray::CArrayComplexObserverContext> ctxtarray =
+ dynamic_pointer_cast<const CArray::CArrayComplexObserverContext,
+ const IChangeContext<IProperty> > (context);
+ if (ctxtarray)
+@@ -162,7 +162,7 @@
+ createStreamFromObjects (const Container& cont, boost::weak_ptr<CPdf> pdf)
+ {
+ // Create stream with one default property Length
+- shared_ptr<CStream> newstr (new CStream());
++ boost::shared_ptr<CStream> newstr (new CStream());
+
+ // Insert our change tag
+ std::string str;
+@@ -234,7 +234,7 @@
+ }
+
+
+-shared_ptr<CContentStream>
++boost::shared_ptr<CContentStream>
+ CPageContents::getContentStream (CContentStream* cc)
+ {
+ init();
+@@ -247,7 +247,7 @@
+ }
+
+
+-shared_ptr<CContentStream>
++boost::shared_ptr<CContentStream>
+ CPageContents::getContentStream (size_t pos)
+ {
+ init();
+@@ -265,7 +265,7 @@
+ CPageContents::addToFront (const Container& cont)
+ {
+ // Create cstream from container of pdf operators
+- shared_ptr<CStream> stream = createStreamFromObjects (cont, _dict->getPdf());
++ boost::shared_ptr<CStream> stream = createStreamFromObjects (cont, _dict->getPdf());
+ assert (hasValidRef (stream)); assert (hasValidPdf (stream));
+ if (!hasValidPdf(stream) || !hasValidPdf(stream))
+ throw CObjInvalidObject ();
+@@ -294,8 +294,8 @@
+ // Indicate change
+ change ();
+ }
+-template void CPageContents::addToFront<vector<shared_ptr<PdfOperator> > > (const vector<shared_ptr<PdfOperator> >& cont);
+-template void CPageContents::addToFront<deque<shared_ptr<PdfOperator> > > (const deque<shared_ptr<PdfOperator> >& cont);
++template void CPageContents::addToFront<vector<boost::shared_ptr<PdfOperator> > > (const vector<boost::shared_ptr<PdfOperator> >& cont);
++template void CPageContents::addToFront<deque<boost::shared_ptr<PdfOperator> > > (const deque<boost::shared_ptr<PdfOperator> >& cont);
+
+ //
+ //
+@@ -307,7 +307,7 @@
+ // Create cstream from container of pdf operators
+ if (!hasValidPdf(_dict))
+ throw CObjInvalidObject ();
+- shared_ptr<CStream> stream = createStreamFromObjects (cont, _dict->getPdf());
++ boost::shared_ptr<CStream> stream = createStreamFromObjects (cont, _dict->getPdf());
+ assert (hasValidRef (stream)); assert (hasValidPdf (stream));
+ if (!hasValidPdf(stream) || !hasValidPdf(stream))
+ throw CObjInvalidObject ();
+@@ -332,8 +332,8 @@
+ // Indicate change
+ change ();
+ }
+-template void CPageContents::addToBack<vector<shared_ptr<PdfOperator> > > (const vector<shared_ptr<PdfOperator> >& cont);
+-template void CPageContents::addToBack<deque<shared_ptr<PdfOperator> > > (const deque<shared_ptr<PdfOperator> >& cont);
++template void CPageContents::addToBack<vector<boost::shared_ptr<PdfOperator> > > (const vector<boost::shared_ptr<PdfOperator> >& cont);
++template void CPageContents::addToBack<deque<boost::shared_ptr<PdfOperator> > > (const deque<boost::shared_ptr<PdfOperator> >& cont);
+
+
+ //
+@@ -379,6 +379,12 @@
+
+ // Get the text
+ libs::Rectangle rec = (rc)? *rc : _page->display()->getPageRect();
++ // if we use rotation 90,270 then we must change the rectangle from which we want the text
++ // accordingly (TODO - verify for all rotations)
++ int rot = _page->getRotation ();
++ if (90 == rot || 270 == rot)
++ std::swap (rec.xright, rec.yright);
++
+ scoped_ptr<GString> gtxt (textDev->getText(rec.xleft, rec.yleft, rec.xright, rec.yright));
+ text = gtxt->getCString();
+ }
+@@ -484,11 +490,11 @@
+ if (fontName.empty())
+ fontName = "PDFEDIT_F1";
+ double fontSize = 15.0;
+- shared_ptr<UnknownCompositePdfOperator> q(new UnknownCompositePdfOperator("q", "Q"));
+- shared_ptr<UnknownCompositePdfOperator> BT(new UnknownCompositePdfOperator("BT", "ET"));
++ boost::shared_ptr<UnknownCompositePdfOperator> q(new UnknownCompositePdfOperator("q", "Q"));
++ boost::shared_ptr<UnknownCompositePdfOperator> BT(new UnknownCompositePdfOperator("BT", "ET"));
+ PdfOperator::Operands fontOperands;
+- fontOperands.push_back(shared_ptr<IProperty>(new CName (fontName)) );
+- fontOperands.push_back(shared_ptr<IProperty>(new CReal (fontSize)));
++ fontOperands.push_back(boost::shared_ptr<IProperty>(new CName (fontName)) );
++ fontOperands.push_back(boost::shared_ptr<IProperty>(new CReal (fontSize)));
+ q->push_back(BT,q);
+ BT->push_back(createOperator("Tf", fontOperands), getLastOperator(BT));
+
+@@ -497,13 +503,13 @@
+ BT->push_back(createOperator("Tm", posOperands), getLastOperator(BT));
+
+ PdfOperator::Operands textOperands;
+- textOperands.push_back(shared_ptr<IProperty>(new CString (what)));
++ textOperands.push_back(boost::shared_ptr<IProperty>(new CString (what)));
+ BT->push_back(createOperator("Tj", textOperands), getLastOperator(BT));
+ PdfOperator::Operands emptyOperands;
+ BT->push_back(createOperator("ET", emptyOperands), getLastOperator(BT));
+ q->push_back(createOperator("Q", emptyOperands), getLastOperator(q));
+
+- std::vector<shared_ptr<PdfOperator> > contents;
++ std::vector<boost::shared_ptr<PdfOperator> > contents;
+ contents.push_back(q);
+
+ addToBack (contents);
+@@ -531,7 +537,7 @@
+ // EI
+ // Q
+ //
+- shared_ptr<UnknownCompositePdfOperator> q(new UnknownCompositePdfOperator("q", "Q"));
++ boost::shared_ptr<UnknownCompositePdfOperator> q(new UnknownCompositePdfOperator("q", "Q"));
+
+ // translate
+ q->push_back(createOperatorTranslation(where.x, where.y), getLastOperator(q));
+@@ -540,19 +546,23 @@
+
+
+ CDict image_dict;
+- image_dict.addProperty ("W", CInt (image_size.x));
+- image_dict.addProperty ("H", CInt (image_size.y));
+- image_dict.addProperty ("CS", CName ("RGB"));
+- image_dict.addProperty ("BPC", CInt (8));
++ CInt x (image_size.x);
++ image_dict.addProperty ("W", x);
++ CInt y (image_size.y);
++ image_dict.addProperty ("H", y);
++ CName n ("RGB");
++ image_dict.addProperty ("CS", n);
++ CInt i (8);
++ image_dict.addProperty ("BPC", i);
+ CInlineImage img (image_dict, what);
+- shared_ptr<CInlineImage> inline_image (new CInlineImage (image_dict, what));
+- shared_ptr<InlineImageCompositePdfOperator> BI(new InlineImageCompositePdfOperator (inline_image));
++ boost::shared_ptr<CInlineImage> inline_image (new CInlineImage (image_dict, what));
++ boost::shared_ptr<InlineImageCompositePdfOperator> BI(new InlineImageCompositePdfOperator (inline_image));
+
+ q->push_back(BI,getLastOperator(q));
+ PdfOperator::Operands o;
+ q->push_back(createOperator("Q", o), getLastOperator(q));
+
+- std::vector<shared_ptr<PdfOperator> > contents;
++ std::vector<boost::shared_ptr<PdfOperator> > contents;
+ contents.push_back(q);
+
+ addToBack (contents);
+@@ -595,7 +605,7 @@
+ // addSomewhere
+ template<OPERWHERE WHERE>
+ void
+- cc_add (shared_ptr<CDict> _dict, CRef& ref)
++ cc_add (boost::shared_ptr<CDict> _dict, CRef& ref)
+ {
+ // contents not present
+ if (!_dict->containsProperty (Specification::Page::CONTENTS))
+@@ -607,8 +617,8 @@
+ // contents present
+ }else
+ {
+- shared_ptr<IProperty> content = _dict->getProperty (Specification::Page::CONTENTS);
+- shared_ptr<IProperty> realcontent = getReferencedObject(content);
++ boost::shared_ptr<IProperty> content = _dict->getProperty (Specification::Page::CONTENTS);
++ boost::shared_ptr<IProperty> realcontent = getReferencedObject(content);
+ assert (content);
+ // Contents can be either stream or an array of streams
+ if (isStream (realcontent))
+@@ -620,7 +630,7 @@
+ }else if (isArray (realcontent))
+ {
+ // We can be sure that streams are indirect objects (pdf spec)
+- shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (realcontent);
++ boost::shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (realcontent);
+ OpTrait<WHERE>::Oper::add (*array, ref);
+
+ }else // Neither stream nor array
+@@ -672,7 +682,7 @@
+ * Indicats that the page changed.
+ */
+ template<typename Cont>
+-void CPageContents::setContents (shared_ptr<CDict> dict, const Cont& cont)
++void CPageContents::setContents (boost::shared_ptr<CDict> dict, const Cont& cont)
+ {
+
+ if (dict->containsProperty (Specification::Page::CONTENTS))
+@@ -682,7 +692,7 @@
+ // Loop throug all content streams and add all cstreams from each
+ // content streams to Contents entry of page dictionary
+ //
+- typedef vector<shared_ptr<CStream> > Css;
++ typedef vector<boost::shared_ptr<CStream> > Css;
+ Css css;
+ getAllCStreams (cont, css);
+
+@@ -698,14 +708,14 @@
+ }
+ }
+ // Explicit instantiation
+-template void CPageContents::setContents<vector<shared_ptr<CContentStream> > >
+- (shared_ptr<CDict> dict, const vector<shared_ptr<CContentStream> >& cont);
++template void CPageContents::setContents<vector<boost::shared_ptr<CContentStream> > >
++ (boost::shared_ptr<CDict> dict, const vector<boost::shared_ptr<CContentStream> >& cont);
+
+ //
+ //
+ //
+ void
+-CPageContents::remove (shared_ptr<const CContentStream> cs)
++CPageContents::remove (boost::shared_ptr<const CContentStream> cs)
+ {
+ if (!_dict->containsProperty (Specification::Page::CONTENTS))
+ throw CObjInvalidOperation ();
+@@ -717,7 +727,7 @@
+ // Loop throug all content streams and add all cstreams from each
+ // content streams to Contents entry of page dictionary
+ //
+- typedef vector<shared_ptr<CStream> > Css;
++ typedef vector<boost::shared_ptr<CStream> > Css;
+ Css css;
+ cs->getCStreams (css);
+
+@@ -743,8 +753,8 @@
+ void
+ CPageContents::remove (const IndiRef& rf)
+ {
+- shared_ptr<IProperty> content = _dict->getProperty (Specification::Page::CONTENTS);
+- shared_ptr<IProperty> realcontent = getReferencedObject (content);
++ boost::shared_ptr<IProperty> content = _dict->getProperty (Specification::Page::CONTENTS);
++ boost::shared_ptr<IProperty> realcontent = getReferencedObject (content);
+ assert (content);
+ // Contents can be either stream or an array of streams
+ if (isStream (realcontent))
+@@ -756,7 +766,7 @@
+ }else if (isArray (realcontent))
+ {
+ // We can be sure that streams are indirect objects (pdf spec)
+- shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (realcontent);
++ boost::shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (realcontent);
+ for (size_t i = 0; i < array->getPropertyCount(); ++i)
+ {
+ IndiRef _rf = getRefFromArray (array,i);
+@@ -821,7 +831,7 @@
+ //
+ if (!_dict->containsProperty (Specification::Page::CONTENTS))
+ return true;
+- shared_ptr<IProperty> contents = getReferencedObject (_dict->getProperty (Specification::Page::CONTENTS));
++ boost::shared_ptr<IProperty> contents = getReferencedObject (_dict->getProperty (Specification::Page::CONTENTS));
+ assert (contents);
+
+ CContentStream::CStreams streams;
+@@ -831,13 +841,13 @@
+ //
+ if (isStream (contents))
+ {
+- shared_ptr<CStream> stream = IProperty::getSmartCObjectPtr<CStream> (contents);
++ boost::shared_ptr<CStream> stream = IProperty::getSmartCObjectPtr<CStream> (contents);
+ streams.push_back (stream);
+
+ }else if (isArray (contents))
+ {
+ // We can be sure that streams are indirect objects (pdf spec)
+- shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (contents);
++ boost::shared_ptr<CArray> array = IProperty::getSmartCObjectPtr<CArray> (contents);
+ for (size_t i = 0; i < array->getPropertyCount(); ++i)
+ streams.push_back (getCStreamFromArray(array,i));
+
+@@ -854,7 +864,7 @@
+ // True if Contents is not [ ]
+ while (!streams.empty())
+ {
+- shared_ptr<CContentStream> cc (new CContentStream(streams,state,res));
++ boost::shared_ptr<CContentStream> cc (new CContentStream(streams,state,res));
+ // Save smart pointer of the content stream so pdfoperators can return it
+ cc->setSmartPointer (cc);
+ _ccs.push_back (cc);
+@@ -911,7 +921,7 @@
+ // If it contains Contents register observer on it too
+ if (_dict->containsProperty(Specification::Page::CONTENTS))
+ {
+- shared_ptr<IProperty> prop = _dict->getProperty(Specification::Page::CONTENTS);
++ boost::shared_ptr<IProperty> prop = _dict->getProperty(Specification::Page::CONTENTS);
+ REGISTER_SHAREDPTR_OBSERVER(prop, _wd);
+ }
+ }
+@@ -933,7 +943,7 @@
+ // Unregister contents observer
+ if (_dict->containsProperty(Specification::Page::CONTENTS))
+ {
+- shared_ptr<IProperty> prop = _dict->getProperty(Specification::Page::CONTENTS);
++ boost::shared_ptr<IProperty> prop = _dict->getProperty(Specification::Page::CONTENTS);
+ UNREGISTER_SHAREDPTR_OBSERVER(prop, _wd);
+ }
+ }
+@@ -963,7 +973,7 @@
+ //
+ //
+ void
+-CPageContents::moveAbove (shared_ptr<const CContentStream> ct)
++CPageContents::moveAbove (boost::shared_ptr<const CContentStream> ct)
+ {
+ // Get the next item
+ init();
+@@ -975,7 +985,7 @@
+ throw OutOfRange ();
+
+ // Delete next item but store it
+- shared_ptr<CContentStream> tmp = *itNext;
++ boost::shared_ptr<CContentStream> tmp = *itNext;
+ _ccs.erase (itNext, itNext + 1);
+ // Insert stored item before supplied (simply swap ct with the next item)
+ _ccs.insert (find (_ccs.begin(), _ccs.end(), ct), tmp);
+@@ -993,7 +1003,7 @@
+ //
+ //
+ void
+-CPageContents::moveBelow (shared_ptr<const CContentStream> ct)
++CPageContents::moveBelow (boost::shared_ptr<const CContentStream> ct)
+ {
+ // Get the item index
+ unsigned int pos = 0;
+@@ -1007,7 +1017,7 @@
+ throw CObjInvalidOperation ();
+
+ // Swap
+- shared_ptr<CContentStream> tmp = _ccs[pos];
++ boost::shared_ptr<CContentStream> tmp = _ccs[pos];
+ _ccs[pos] = _ccs[pos - 1];
+ _ccs[pos - 1] = tmp;
+