Subversion Repositories Scribus


Rev 14481 | Rev 18299 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.

  *   Copyright (C) 2009 by Jain Basil Aliyas                               *
  *                                                    *
  *                                                                         *
  *   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 of the License, 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        *
  *   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 "scconfig.h"
#include "textwriter.h"
#include "styles/charstyle.h"
#include "scribus.h"
#include "fontselectdialog.h"

#include <QHash>
Enum datatype for determining the Scanner mode

enum scannerMode

\brief Class for scanning and parsing an XPress Tags Document

class XtgScanner
          \variable Variables based on which scanner works in different modes

        scannerMode Mode;
        scannerMode prevMode;
          \variable Variables of the importer

        TextWriter* writer;
        bool importTextOnly;
        bool usePrefix;
        QString docname;
        bool readProperties;
          \variable Flag variables used in the scanner

        bool newlineFlag;
        bool xflag;
        bool isBold;
        bool isItalic;
          \variable Input Buffer to which properly encoded file is loaded

        QString input_Buffer;
        int top;

        ScFace curFontUsed;
        ScribusDoc* doc;
          \variable current Character and paragraph styles

        CharStyle currentCharStyle;
        ParagraphStyle currentParagraphStyle;

        /** character and paragraph styles for defining a new style into the document */
        CharStyle defCharStyle;
        ParagraphStyle defParagraphStyle;
        int featureIndex;

        /** A QStringList to store the features of current character Style and current paragraph Style */
        QStringList ccsFeatures;

        /** A QStringList to store the features of defined character Style and defined paragraph Style */
        QStringList dcsFeatures;

        To store unsupported attributes

        QStringList unSupported;
        QStringList definedStyles;
        QStringList definedCStyles;
        \brief textToAppend will be the QString used by the function TextWriter::append(QString& )

        QString textToAppend;
        QString token;
        QString sfcName; // Name of Style/Fontset/Color to be defined, hence named sfcName

        QHash<QString,void (XtgScanner::*)(void)> tagModeHash;
        QHash<QString,void (XtgScanner::*)(void)> textModeHash;
        QHash<QString,void (XtgScanner::*)(void)> nameModeHash;
        QHash<int,QString> languages;
        QHash<int,QString> encodings;

        /** define variable will take the following values :
                0       Not a definition
                1       Character Stylesheet Definition
                2       Paragraph Stylesheet Definition

        int define;
        XtgScanner(QString documentName,TextWriter *wr,QString& buffer, bool textOnly, bool prefix);

        \brief initialise all hash functions with tokens and corresponding function pointers

        void initBasicHash();
        void initTagMode();
        void initTextMode();
        void initNameMode();
        void initLanguages();
        \brief parse function which will parse the inputBuffer and append it into the PageItem

        void xtgParse();
        \brief This function will return the character in Buffer to which top is now pointing to

        QChar lookAhead();

        \brief A function which returns the next symbol in the input stream as character. This function will increment the top by 1

        QChar nextSymbol();

         \brief This function will return the current state of Scanner.

        scannerMode currentState();
        scannerMode previousState();
        \brief This function will switch the state of Scanner into textMode or tagMode or styleMode.

        void enterState(scannerMode Mode);

        \brief This function will return a token which is to be evaluated in parser. Each token will be available in the class member token as a QString.

        QString getToken();
          \brief Function to Slice the string so as to remove the inch character etc

        QString sliceString();
          \name applyFeature
          \brief Function to applyFeature to a character Style

        void applyFeature(const QString &feature);
          \brief Function which will empty the textToAppend variable by writing into text frame

        void flushText();
          \brief Function which returns the status of Style whether defined or not

        bool styleStatus(QStringList &name,QString &sfcname);
          \brief Function which will show a message box if a Style "name" is not defined in the document

        void showWarning(QString &name);

        /** Set Functions for setting the styles */
        void setPlain();
        void setBold();
        void setItalics();
        void setShadow();
        void setOutline();
        void setUnderline();
        void setWordUnder();
        void setStrikethrough();
        void setDoubleStrike();
        void setAllCaps();
        void setSmallCaps();
        void setSuperscript();
        void setSubscript();
        void setSuperior();
        void setFont();
        void setFontSize();
        void setColor();
        void setShade();
        void setHorizontalScale();
        void setKern();
        void setTrack();
        void setBaseLineShift();
        void setVerticalScale();
        void setLigatures();
        void csetOpacity();
        void setOpenType();
        void setCharAlignment();
        void setVertStories();
        void setEmphasisMarks();
        void setAsncjk();
        void setLanguages();
        void setXPresOwn();
        void setAlignLeft();
        void setAlignCenter();
        void setAlignRight();
        void setAlignJustify();
        void setAlignFJustify();
        void setTabStops();
        void setPAttributes();
        void setHyphenation();
        void setPRuleAbove();
        void setPRuleBelow();
        void setDropCap();
        void setKeepNextPar();
        void setKeepTogether();
        void setHangingCSet();
        void setGlyph();
        void setTranscodeSeq();
        void setUnencodedGlyph();
        void xFlag();
        void definePStyles();
        void defineCStyle();
        void applyCStyle1();
        void applyCStyle2();
        void applyCStyle3();
        void applyCStyle4();
        void applyCStyle5();
        void applyCStyle6();
        void setTypeStyle();
        void appendSpChar1();
        void appendSpChar2();
        void appendSpChar3();
          Functions used in textMode Hash

        void defNewLine();
        void defHardReturn();
        void defFontSet();
        void defColor();
        void defEquals();
        void defClose();
        void defOpen();
        void defAtRate();
        void defColon();

        void (XtgScanner::*funPointer)(void);