void XHTMLReader::startElementHandler(const char *tag, const char **attributes) { static const std::string HASH = "#"; const char *id = attributeValue(attributes, "id"); if (id != 0) { myModelReader.addHyperlinkLabel(myReferenceName + HASH + id); } const std::string sTag = ZLUnicodeUtil::toLower(tag); const char *aClass = attributeValue(attributes, "class"); const std::string sClass = (aClass != 0) ? aClass : ""; if (myStyleSheetTable.doBreakBefore(sTag, sClass)) { myModelReader.insertEndOfSectionParagraph(); } myDoPageBreakAfterStack.push_back(myStyleSheetTable.doBreakAfter(sTag, sClass)); XHTMLTagAction *action = ourTagActions[sTag]; if (action != 0) { action->doAtStart(*this, attributes); } const int sizeBefore = myStyleEntryStack.size(); addStyleEntry(sTag, ""); addStyleEntry("", sClass); addStyleEntry(sTag, sClass); const char *style = attributeValue(attributes, "style"); if (style != 0) { shared_ptr<ZLTextStyleEntry> entry = myStyleParser.parseString(style); myModelReader.addControl(*entry); myStyleEntryStack.push_back(entry); } myCSSStack.push_back(myStyleEntryStack.size() - sizeBefore); }
void PluckerBookReader::safeBeginParagraph() { if (!myParagraphStarted) { myParagraphStarted = true; myBufferIsEmpty = true; beginParagraph(); if (!myParagraphStored) { myParagraphVector->push_back(model().bookTextModel()->paragraphsNumber() - 1); myParagraphStored = true; } for (std::vector<std::pair<FBTextKind,bool> >::const_iterator it = myDelayedControls.begin(); it != myDelayedControls.end(); ++it) { addControl(it->first, it->second); } if (myForcedEntry != 0) { addStyleEntry(*myForcedEntry); } else { addControl(REGULAR, true); } for (std::vector<std::string>::const_iterator it = myDelayedHyperlinks.begin(); it != myDelayedHyperlinks.end(); ++it) { addHyperlinkControl(INTERNAL_HYPERLINK, *it); } myDelayedHyperlinks.clear(); } }
void ZLTextModel::addStyleEntry(const ZLTextStyleEntry &entry, unsigned char depth) { addStyleEntry(entry, entry.fontFamilies(), depth); }