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