/* * PDFedit - free program for PDF document manipulation. * Copyright (C) 2006, 2007 PDFedit team: Michal Hocko, * Miroslav Jahoda, * Jozef Misutka, * Martin Petricek * * Project is hosted on http://sourceforge.net/projects/pdfedit */ /** @file QSPdfOperatorStack QObject wrapper around array (stack) of PDF Operators
See doc/user/scripting.xml for more informations about these functions @author Martin Petricek */ #include "qspdfoperatorstack.h" #include "qsimporter.h" #include #include "qspdfoperator.h" namespace gui { using namespace pdfobjects; /** Construct wrapper with empty operator stack @param _base scripting base */ QSPdfOperatorStack::QSPdfOperatorStack(BaseCore *_base) : QSCObject ("PdfOperatorStack",_base) { } /** destructor */ QSPdfOperatorStack::~QSPdfOperatorStack() { } /** get one PdfOperator item held inside this class. @param index Zero-based index of item to get @return specified PdfOperator */ boost::shared_ptr QSPdfOperatorStack::get(int index) { return obj[index]; } /** append one PdfOperator to end of stack. @param prop PdfOperator to append */ void QSPdfOperatorStack::append(boost::shared_ptr prop) { obj.push_back(prop); } /** append one PdfOperator to end of stack. @param prop PdfOperator to append */ void QSPdfOperatorStack::append(QSPdfOperator *prop) { obj.push_back(prop->get()); } /** append one PdfOperator to end of stack. QSA-bugfix version @param obj PdfOperator to append */ void QSPdfOperatorStack::append(QObject *obj) { QSPdfOperator *prop=dynamic_cast(obj); if (prop) { append(prop); } } /** prepend one PdfOperator at beginning of stack. @param prop PdfOperator to prepend */ void QSPdfOperatorStack::prepend(boost::shared_ptr prop) { obj.push_front(prop); } /** prepend one PdfOperator at beginning of stack. @param prop PdfOperator to prepend */ void QSPdfOperatorStack::prepend(QSPdfOperator *prop) { obj.push_front(prop->get()); } /** prepend one PdfOperator at beginning of stack. @param obj PdfOperator to prepend QSA-bugfix version */ void QSPdfOperatorStack::prepend(QObject *obj) { QSPdfOperator *prop=dynamic_cast(obj); if (prop) { prepend(prop); } } /** Return number of items inside this stack */ int QSPdfOperatorStack::count() { return obj.size(); } /** Return const reference to object inside this wrapper */ const pdfOpDeque& QSPdfOperatorStack::get() { return obj; } /** get one PdfOperator item held inside this class. @param index Zero-based index of item to get @return specified PdfOperator */ QSCObject* QSPdfOperatorStack::element(int index) { //Check if we are in bounds if (index<0) return NULL; if (index>=(int)obj.size()) return NULL; return new QSPdfOperator(obj[index],base); } /** get first PdfOperator item (from beginning of stack) @return specified PdfOperator */ QSCObject* QSPdfOperatorStack::first() { //Check if not empty if (!obj.size()) return NULL; return new QSPdfOperator(obj.front(),base); } /** get last PdfOperator item (from beginning of stack) @return specified PdfOperator */ QSCObject* QSPdfOperatorStack::last() { //Check if not empty if (!obj.size()) return NULL; return new QSPdfOperator(obj.back(),base); } /** Remove first PdfOperator item (from beginning of stack) */ void QSPdfOperatorStack::removeFirst() { //Check if not empty if (!obj.size()) return; obj.pop_front(); } /** Remove last PdfOperator item (from beginning of stack) */ void QSPdfOperatorStack::removeLast() { //Check if not empty if (!obj.size()) return; obj.pop_back(); } } // namespace gui