void FileLoader::readParagraphStyle(ParagraphStyle& vg, const QDomElement& pg, SCFonts &avail, ScribusDoc *currDoc) { vg.setName(pg.attribute("NAME")); vg.setLineSpacingMode(static_cast<ParagraphStyle::LineSpacingMode>(pg.attribute("LINESPMode", "0").toInt())); vg.setLineSpacing(ScCLocale::toDoubleC(pg.attribute("LINESP"))); vg.setLeftMargin(ScCLocale::toDoubleC(pg.attribute("INDENT"), 0.0)); if (pg.hasAttribute("RMARGIN")) vg.setRightMargin(ScCLocale::toDoubleC(pg.attribute("RMARGIN"), 0.0)); else vg.setRightMargin(0); vg.setFirstIndent(ScCLocale::toDoubleC(pg.attribute("FIRST"), 0.0)); vg.setAlignment(static_cast<ParagraphStyle::AlignmentType>(pg.attribute("ALIGN").toInt())); vg.setGapBefore(ScCLocale::toDoubleC(pg.attribute("VOR"), 0.0)); vg.setGapAfter(ScCLocale::toDoubleC(pg.attribute("NACH"), 0.0)); QString tmpf = pg.attribute("FONT", currDoc->toolSettings.defFont); currDoc->AllFonts->findFont(tmpf, currDoc); vg.charStyle().setFont((*currDoc->AllFonts)[tmpf]); vg.charStyle().setFontSize(qRound(ScCLocale::toDoubleC(pg.attribute("FONTSIZE"), 12.0) * 10.0)); vg.setHasDropCap(static_cast<bool>(pg.attribute("DROP", "0").toInt())); vg.setDropCapLines(pg.attribute("DROPLIN", "2").toInt()); vg.setDropCapOffset(ScCLocale::toDoubleC(pg.attribute("DROPDIST"), 0.0)); vg.charStyle().setFeatures(static_cast<StyleFlag>(pg.attribute("EFFECT", "0").toInt()).featureList()); vg.charStyle().setFillColor(pg.attribute("FCOLOR", currDoc->toolSettings.dBrush)); vg.charStyle().setFillShade(pg.attribute("FSHADE", "100").toInt()); vg.charStyle().setStrokeColor(pg.attribute("SCOLOR", currDoc->toolSettings.dPen)); vg.charStyle().setStrokeShade(pg.attribute("SSHADE", "100").toInt()); if (static_cast<bool>(pg.attribute("BASE", "0").toInt())) vg.setLineSpacingMode(ParagraphStyle::BaselineGridLineSpacing); vg.charStyle().setShadowXOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSHX"), 5.0)) * 10); vg.charStyle().setShadowYOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSHY"), -5.0)) * 10); vg.charStyle().setOutlineWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTOUT"), 1.0)) * 10); vg.charStyle().setUnderlineOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTULP"), -0.1)) * 10); vg.charStyle().setUnderlineWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTULW"), -0.1)) * 10); vg.charStyle().setStrikethruOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSTP"), -0.1)) * 10); vg.charStyle().setStrikethruWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSTW"), -0.1)) * 10); vg.charStyle().setScaleH(qRound(ScCLocale::toDoubleC(pg.attribute("SCALEH"), 100.0)) * 10); vg.charStyle().setScaleV(qRound(ScCLocale::toDoubleC(pg.attribute("SCALEV"), 100.0)) * 10); vg.charStyle().setBaselineOffset(qRound(ScCLocale::toDoubleC(pg.attribute("BASEO"), 0.0)) * 10); vg.charStyle().setTracking(qRound(ScCLocale::toDoubleC(pg.attribute("KERN"), 0.0)) * 10); if ((pg.hasAttribute("NUMTAB")) && (pg.attribute("NUMTAB", "0").toInt() != 0)) { QList<ParagraphStyle::TabRecord> tbs; ParagraphStyle::TabRecord tb; QString tmp = pg.attribute("TABS"); QTextStream tgv(&tmp, QIODevice::ReadOnly); QString xf, xf2; for (int cxv = 0; cxv < pg.attribute("NUMTAB", "0").toInt(); cxv += 2) { tgv >> xf; tgv >> xf2; tb.tabPosition = ScCLocale::toDoubleC(xf2); tb.tabType = static_cast<int>(ScCLocale::toDoubleC(xf)); tb.tabFillChar = QChar(); tbs.append(tb); } vg.setTabValues(tbs); tmp = ""; }
void XtgScanner::defColon() { flushText(); if ((sfcName == "@") || (sfcName == "@$:") || (sfcName == "@:")) { QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; newStyle.setParent(pStyle); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); currentCharStyle.setFontSize(120.0); styleEffects = ScStyle_None; currentCharStyle.setFeatures(styleEffects.featureList()); } else if (doc->paragraphStyles().contains(m_item->itemName() + "_" + sfcName)) { ParagraphStyle newStyle; newStyle.setParent(m_item->itemName() + "_" + sfcName); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); } else if (doc->paragraphStyles().contains(sfcName)) { ParagraphStyle newStyle; newStyle.setParent(sfcName); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); } else { QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; newStyle.setParent(pStyle); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); currentCharStyle.setFontSize(120.0); styleEffects = ScStyle_None; currentCharStyle.setFeatures(styleEffects.featureList()); } if (newlineFlag) { int posT = m_item->itemText.length(); if (posT > 0) { m_item->itemText.insertChars(posT, SpecialChars::PARSEP); m_item->itemText.applyStyle(posT, currentParagraphStyle); } } newlineFlag = false; enterState(textMode); define = 0; if (!((lookAhead() == '\r') || (lookAhead() == '\n'))) inDef = false; }
void gtAction::setParaStyleAttributes(gtParagraphStyle *pstyle, ParagraphStyle& style) { double linesp; int flags = pstyle->getFlags(); style.erase(); style.setName(pstyle->getName()); if (pstyle->getAutoLineSpacing()) linesp = getLineSpacing(pstyle->getFont()->getSize()); else linesp = pstyle->getLineSpacing(); style.setLineSpacingMode(pstyle->isAdjToBaseline() ? ParagraphStyle::BaselineGridLineSpacing : ParagraphStyle::FixedLineSpacing); style.setLineSpacing(linesp); if (flags & gtParagraphStyle::alignmentWasSet) style.setAlignment(static_cast<ParagraphStyle::AlignmentType>(pstyle->getAlignment())); if (flags & gtParagraphStyle::indentWasSet) style.setLeftMargin(pstyle->getIndent()); if (flags & gtParagraphStyle::firstIndentWasSet) style.setFirstIndent(pstyle->getFirstLineIndent()); if (flags & gtParagraphStyle::spaceAboveWasSet) style.setGapBefore(pstyle->getSpaceAbove()); if (flags & gtParagraphStyle::spaceBelowWasSet) style.setGapAfter(pstyle->getSpaceBelow()); if (flags & gtParagraphStyle::tabValueWasSet) style.setTabValues(*pstyle->getTabValues()); if (flags & gtParagraphStyle::dropCapWasSet) style.setHasDropCap(pstyle->hasDropCap()); if (flags & gtParagraphStyle::dropCapHeightWasSet) style.setDropCapLines(pstyle->getDropCapHeight()); /*vg.setDropCapOffset(0);*/ }
void XtgScanner::defAtRate() { enterState(nameMode); sfcName = getToken(); if (sfcName == "@$:") { if (doc->paragraphStyles().contains(m_item->itemName() + "_Normal")) { ParagraphStyle newStyle; newStyle.setParent(m_item->itemName() + "_Normal"); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); } else if (doc->paragraphStyles().contains("Normal")) { ParagraphStyle newStyle; newStyle.setParent("Normal"); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); } enterState(previousState()); } else if (sfcName == "@:") { QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; newStyle.setParent(pStyle); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); currentCharStyle.setFontSize(120.0); styleEffects = ScStyle_None; currentCharStyle.setFeatures(styleEffects.featureList()); enterState(textMode); } else if (doc->paragraphStyles().contains(m_item->itemName() + "_" + sfcName)) { ParagraphStyle newStyle; newStyle.setParent(m_item->itemName() + "_" + sfcName); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); if (lookAhead() == ':') top++; enterState(textMode); } else if (doc->paragraphStyles().contains(sfcName)) { ParagraphStyle newStyle; newStyle.setParent(sfcName); currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); if (lookAhead() == ':') top++; enterState(textMode); } }
void XtgScanner::applyCStyle2() { //apply normal character style sheet <@$> define = 0; flushText(); QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; newStyle.setParent(pStyle); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); currentCharStyle = newStyle.charStyle(); currentCharStyle.setFontSize(120.0); styleEffects = ScStyle_None; currentCharStyle.setFeatures(styleEffects.featureList()); }
/*! 02.01.2007 - 05.01.2007 : Joachim Neu : Create a paragraph style. Special thanks go to avox for helping me! */ PyObject *scribus_createparagraphstyle(PyObject* /* self */, PyObject* args, PyObject* keywords) { char* keywordargs[] = { const_cast<char*>("name"), const_cast<char*>("linespacingmode"), const_cast<char*>("linespacing"), const_cast<char*>("alignment"), const_cast<char*>("leftmargin"), const_cast<char*>("rightmargin"), const_cast<char*>("gapbefore"), const_cast<char*>("gapafter"), const_cast<char*>("firstindent"), const_cast<char*>("hasdropcap"), const_cast<char*>("dropcaplines"), const_cast<char*>("dropcapoffset"), const_cast<char*>("charstyle"), NULL}; char *Name = const_cast<char*>(""), *CharStyle = const_cast<char*>(""); int LineSpacingMode = 0, LineSpacing = 15, Alignment = 0, LeftMargin = 0, RightMargin = 0, GapBefore = 0, GapAfter = 0, FirstIndent = 0, DropCapLines = 2, DropCapOffset = 0, HasDropCap = 0; if (!PyArg_ParseTupleAndKeywords(args, keywords, "es|iiiiiiiiiiies", keywordargs, "utf-8", &Name, &LineSpacingMode, &LineSpacing, &Alignment, &LeftMargin, &RightMargin, &GapBefore, &GapAfter, &FirstIndent, &HasDropCap, &DropCapLines, &DropCapOffset, "utf-8", &CharStyle)) return NULL; if(!checkHaveDocument()) return NULL; if (Name == EMPTY_STRING) { PyErr_SetString(PyExc_ValueError, QObject::tr("Cannot have an empty paragraph style name.","python error").toLocal8Bit().constData()); return NULL; } ParagraphStyle TmpParagraphStyle; TmpParagraphStyle.setName(Name); TmpParagraphStyle.setLineSpacingMode((ParagraphStyle::LineSpacingMode)LineSpacingMode); TmpParagraphStyle.setLineSpacing(LineSpacing); TmpParagraphStyle.setAlignment((ParagraphStyle::AlignmentType)Alignment); TmpParagraphStyle.setLeftMargin(LeftMargin); TmpParagraphStyle.setFirstIndent(FirstIndent); TmpParagraphStyle.setRightMargin(RightMargin); TmpParagraphStyle.setGapBefore(GapBefore); TmpParagraphStyle.setGapAfter(GapAfter); if(HasDropCap == 0) TmpParagraphStyle.setHasDropCap(false); else if(HasDropCap == 1) TmpParagraphStyle.setHasDropCap(true); else { PyErr_SetString(PyExc_ValueError, QObject::tr("hasdropcap has to be 0 or 1.","python error").toLocal8Bit().constData()); return NULL; } TmpParagraphStyle.setDropCapLines(DropCapLines); TmpParagraphStyle.setDropCapOffset(DropCapOffset); TmpParagraphStyle.charStyle().setParent(CharStyle); StyleSet<ParagraphStyle> TmpStyleSet; TmpStyleSet.create(TmpParagraphStyle); ScCore->primaryMainWindow()->doc->redefineStyles(TmpStyleSet, false); // PV - refresh the Style Manager window. // I thought that this can work but it doesn't: // ScCore->primaryMainWindow()->styleMgr()->reloadStyleView(); // So the brute force setDoc is called... ScCore->primaryMainWindow()->styleMgr()->setDoc(ScCore->primaryMainWindow()->doc); Py_RETURN_NONE; }
void XtgScanner::definePStyles() { QString s1,s2,s3; enterState(stringMode); define = 2; if (token == "[S\"") s1 = getToken(); else { while (lookAhead() != '\"') top++; //skip the inch top++; s1 = getToken(); //will contain the string 1 } // top = top + 2; //we have to skip comma and next inch character while (lookAhead() != '\"') top++; top++; s2 = getToken(); if (lookAhead() != ']' ) { while (lookAhead() != '\"') top++; top++; // top = top + 2; s3 = getToken(); } top++; // to ensure that ] is avoided QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; if (s1 != "") { if (doc->paragraphStyles().contains(m_item->itemName() + "_" + s1)) newStyle.setParent(m_item->itemName() + "_" + s1); else if (doc->paragraphStyles().contains(s1)) newStyle.setParent(s1); else newStyle.setParent(pStyle); } else newStyle.setParent(pStyle); if (m_prefixName) newStyle.setName(m_item->itemName() + "_" + sfcName); else newStyle.setName((sfcName)); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); if (s3 != "") { if (doc->charStyles().contains(m_item->itemName() + "_" + s3)) newStyle.charStyle().setParent(m_item->itemName() + "_" + s3); else if (doc->charStyles().contains(s3)) newStyle.charStyle().setParent(s3); else newStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle); } else { newStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle); newStyle.charStyle().setFontSize(120.0); styleEffects = ScStyle_None; newStyle.charStyle().setFeatures(styleEffects.featureList()); } currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); enterState(textMode); }