Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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();
    }
}
Exemplo n.º 3
0
void ZLTextModel::addStyleEntry(const ZLTextStyleEntry &entry, unsigned char depth) {
	addStyleEntry(entry, entry.fontFamilies(), depth);
}