Back to index

scribus-ng  1.3.4.dfsg+svn20071115
annotation.cpp
Go to the documentation of this file.
00001 
00002 
00003 
00004 #include "annotation.h"
00005 #include "util.h"
00006 
00007 void Annotation::saxx(SaxHandler& handler, const Xml_string& elemtag) const
00008 {
00009        Xml_attr att;
00010        att.insert("ANTYPE", QString::number(Type()));
00011        att.insert("ANACTION", Action());
00012        att.insert("ANEACT", E_act());
00013        att.insert("ANXACT", X_act());
00014        att.insert("ANDACT", D_act());
00015        att.insert("ANFOACT", Fo_act());
00016        att.insert("ANBLACT", Bl_act());
00017        att.insert("ANKACT", K_act());
00018        att.insert("ANFACT", F_act());
00019        att.insert("ANVACT", V_act());
00020        att.insert("ANCACT", C_act());
00021        if (ActionType() == 8)
00022               att.insert("ANEXTERN", Extern());
00023        else
00024               att.insert("ANEXTERN", Path2Relative(Extern()));
00025        att.insert("ANZIEL", QString::number(Ziel()));
00026        att.insert("ANACTYP", QString::number(ActionType()));
00027        att.insert("ANTOOLTIP", ToolTip());
00028        att.insert("ANBWID", QString::number(Bwid()));
00029        att.insert("ANBSTY", QString::number(Bsty()));
00030        att.insert("ANFEED", QString::number(Feed()));
00031        att.insert("ANFLAG", QString::number(Flag()));
00032        att.insert("ANFONT", QString::number(Font()));
00033        att.insert("ANFORMAT", QString::number(Format()));
00034        att.insert("ANROLL", RollOver());
00035        att.insert("ANDOWN", Down());
00036        att.insert("ANVIS", QString::number(Vis()));
00037        att.insert("ANMC", QString::number(MaxChar()));
00038        att.insert("ANCHK", IsChk() ? "yes" : "no");
00039        att.insert("ANAA", AAact() ? "yes" : "no");
00040        att.insert("ANCHKS", QString::number(ChkStil()));
00041        att.insert("ANBCOL", borderColor());
00042        att.insert("ANHTML", HTML() ? "yes" : "no");
00043        att.insert("ANICON", UseIcons() ? "yes" : "no");
00044        att.insert("ANPLACE", QString::number(IPlace()));
00045        att.insert("ANSCALE", QString::number(ScaleW()));
00046        
00047        handler.beginEnd(elemtag, att);
00048 }
00049 
00050 const Xml_string Annotation::saxxDefaultElem("pdfannotation");
00051 
00052 
00053 class ParseAnnotation_body : public Action_body
00054 {
00055 public:
00056        void begin(const Xml_string& tagname, Xml_attr attr)
00057        {
00058               Annotation* ann = this->dig->top<Annotation>();
00059               ann->setType(parseInt(attr["ANTYPE"]));
00060               ann->setAction(attr["ANACTION"]);
00061               ann->setE_act(attr["ANEACT"]);
00062               ann->setX_act(attr["ANXACT"]);
00063               ann->setD_act(attr["ANDACT"]);
00064               ann->setFo_act(attr["ANFOACT"]);
00065               ann->setBl_act(attr["ANBLACT"]);
00066               ann->setK_act(attr["ANKACT"]);
00067               ann->setF_act(attr["ANFACT"]);
00068               ann->setV_act(attr["ANVACT"]);
00069               ann->setC_act(attr["ANCACT"]);
00070               ann->setExtern(attr["ANEXTERN"]);
00071               ann->setZiel(parseInt(attr["ANZIEL"]));
00072               ann->setActionType(parseInt(attr["ANACTYP"]));
00073               ann->setToolTip(attr["ANTOOLTIP"]);
00074               ann->setBwid(parseInt(attr["ANBWID"]));
00075               ann->setBsty(parseInt(attr["ANBSTY"]));
00076               ann->setFeed(parseInt(attr["ANFEED"]));
00077               ann->setFlag(parseInt(attr["ANFLAG"]));
00078               ann->setFont(parseInt(attr["ANFONT"]));
00079               ann->setFormat(parseInt(attr["ANFORMAT"]));
00080               ann->setRollOver(attr["ANROLL"]);
00081               ann->setDown(attr["ANDOWN"]);
00082               ann->setVis(parseInt(attr["ANVIS"]));
00083               ann->setMaxChar(parseInt(attr["ANMC"]));
00084               ann->setIsChk(parseBool(attr["ANCHK"]));
00085               ann->setAAact(parseBool(attr["ANAA"]));
00086               ann->setChkStil(parseInt(attr["ANCHKS"]));
00087               ann->setBorderColor(attr["ANBCOL"]);
00088               ann->setHTML(parseBool(attr["ANHTML"]));
00089               ann->setUseIcons(parseBool(attr["ANICON"]));
00090               ann->setIPlace(parseInt(attr["ANPLACE"]));
00091               ann->setScaleW(parseInt(attr["ANSCALE"]));
00092        }
00093 };
00094 
00095 class ParseAnnotation : public MakeAction<ParseAnnotation_body>
00096 {};
00097 
00098 
00099 void Annotation::desaxeRules(const Xml_string& prefixPattern, desaxe::Digester& ruleset, Xml_string elemtag)
00100 {
00101        Xml_string annPrefix(Digester::concat(prefixPattern, elemtag));
00102        ruleset.addRule(annPrefix, Factory<Annotation>());
00103        ruleset.addRule(annPrefix, ParseAnnotation());
00104 }