QPalette CMYKChoose::sliderBlack() { QImage image0 = QImage(255, 10, QImage::Format_ARGB32); QPainter p; int val = 255; p.begin(&image0); p.setPen(Qt::NoPen); int c, m, y, k; CMYKColor cmyk; ScColorEngine::getCMYKValues(Farbe, m_doc, cmyk); cmyk.getValues(c, m, y, k); for (int x = 0; x < 255; x += 5) { if (dynamic) p.setBrush( ScColorEngine::getDisplayColorGC(ScColor(c, m, y, x), m_doc) ); else p.setBrush( ScColorEngine::getDisplayColorGC(ScColor(0, 0, 0, x), m_doc) ); p.drawRect(x, 0, 5, 10); val -= 5; } p.end(); QPalette pal; pal.setBrush(QPalette::Window, QBrush(image0)); return pal; }
void CMYKChoose::setColor2(int h, int s, bool ende) { ScColor tmp; if (Farbe.getColorModel() == colorModelLab) { if (isHLC) tmp = ScColor(MagentaSp->value(), static_cast<double>(h), static_cast<double>(s)); else tmp = ScColor(CyanSp->value(), static_cast<double>(h), static_cast<double>(s)); } else { QColor tm = QColor::fromHsv(qMax(qMin(359,h),0), qMax(qMin(255,255-s),0), 255-BlackComp, QColor::Hsv); int r, g, b; tm.getRgb(&r, &g, &b); tmp.fromQColor(tm); if (Farbe.getColorModel() == colorModelCMYK) { CMYKColor cmyk; ScColorEngine::getCMYKValues(tmp, m_doc, cmyk); tmp.setColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k); } } imageN.fill( ScColorEngine::getDisplayColor(tmp, m_doc) ); if ( ScColorEngine::isOutOfGamut(tmp, m_doc) ) paintAlert(alertIcon, imageN, 2, 2, false); NewC->setPixmap( imageN ); Farbe = tmp; if (ende) setValues(); }
VGradientEx::VGradientEx( VGradientEx::Type type ) : m_type( type ) { // set up dummy gradient addStop( ScColor(255,0,0) , 0.0, 0.5, 1.0 ); addStop( ScColor(255,255,0) , 1.0, 0.5, 1.0 ); setOrigin( FPoint( 0, 0 ) ); setVector( FPoint( 0, 50 ) ); setRepeatMethod( VGradientEx::reflect ); }
SampleItem::SampleItem() : QObject() { m_Doc = new ScribusDoc(); if (!m_Doc) return; m_Doc->setup(0, 1, 1, 1, 1, "Custom", "Custom"); m_Doc->setPage(1, 1, 0, 0, 0, 0, 0, 0, false, false); m_Doc->addPage(0); m_Doc->setGUI(false, ScCore->primaryMainWindow(), 0); // tmp colors. to be removed in descrictor m_Doc->PageColors.insert("__blackforpreview__", ScColor(0, 0, 0, 255)); m_Doc->PageColors.insert("__whiteforpreview__", ScColor(0, 0, 0, 0)); m_Doc->PageColors.insert("__whiteforpreviewbg__", ScColor(0, 0, 0, 0)); bgShade = 100; tmpStyle.setName("(preview temporary)"); tmpStyle.setLineSpacingMode(ParagraphStyle::FixedLineSpacing); tmpStyle.setLineSpacing((m_Doc->itemToolPrefs().textSize / 10.0) * static_cast<double>(m_Doc->typographicPrefs().autoLineSpacing) / 100 + (m_Doc->itemToolPrefs().textSize / 10.0)); tmpStyle.setAlignment(ParagraphStyle::Leftaligned); tmpStyle.setLeftMargin(0); tmpStyle.setFirstIndent(0); tmpStyle.setRightMargin(0); tmpStyle.setGapBefore(0); tmpStyle.setGapAfter(0); tmpStyle.charStyle().setFont(PrefsManager::instance()->appPrefs.fontPrefs.AvailFonts[m_Doc->itemToolPrefs().textFont]); tmpStyle.charStyle().setFontSize(m_Doc->itemToolPrefs().textSize); // tmpStyle.tabValues().clear(); tmpStyle.setHasDropCap(false); tmpStyle.setDropCapLines(0);//2; tmpStyle.setDropCapOffset(0); tmpStyle.charStyle().setFeatures(QStringList(CharStyle::INHERIT)); tmpStyle.charStyle().setFillColor("__blackforpreview__"); tmpStyle.charStyle().setFillShade(100); //m_Doc->toolSettings.dShade; tmpStyle.charStyle().setStrokeColor("__whiteforpreview__"); tmpStyle.charStyle().setStrokeShade(100); //m_Doc->toolSettings.dShade2; tmpStyle.charStyle().setShadowXOffset(50); tmpStyle.charStyle().setShadowYOffset(-50); tmpStyle.charStyle().setOutlineWidth(10); tmpStyle.charStyle().setUnderlineOffset(0); //m_Doc->typographicSettings.valueUnderlinePos; tmpStyle.charStyle().setUnderlineWidth(0); //m_Doc->typographicSettings.valueUnderlineWidth; tmpStyle.charStyle().setStrikethruOffset(0); //m_Doc->typographicSettings.valueStrikeThruPos; tmpStyle.charStyle().setStrikethruWidth(0); //m_Doc->typographicSettings.valueStrikeThruPos; tmpStyle.charStyle().setScaleH(1000); tmpStyle.charStyle().setScaleV(1000); tmpStyle.charStyle().setBaselineOffset(0); tmpStyle.charStyle().setTracking(0); }
ScColor ScColorEngine::convertToModel(const ScColor& color, const ScribusDoc* doc, colorModel model) { colorModel oldModel = color.getColorModel(); if (oldModel == model) return ScColor(color); ScColor newCol; if (model == colorModelRGB) { RGBColorF rgb; getRGBValues(color, doc, rgb); newCol.setRgbColorF(rgb.r, rgb.g, rgb.b); } else if (model == colorModelCMYK) { CMYKColorF cmyk; getCMYKValues(color, doc, cmyk); newCol.setColorF(cmyk.c, cmyk.m, cmyk.y, cmyk.k); } else if (model == colorModelLab) { ScColorMgmtEngine engine(ScCore->defaultEngine); if (oldModel == colorModelRGB) { ScColorProfile profRGB = doc ? doc->DocInputRGBProf : ScCore->defaultRGBProfile; ScColorProfile profLab = ScCore->defaultLabProfile; ScColorTransform trans = engine.createTransform(profRGB, Format_RGB_16, profLab, Format_Lab_Dbl, Intent_Perceptual, 0); double outC[3]; unsigned short inC[3]; inC[0] = qRound(color.m_values[0] * 65535); inC[1] = qRound(color.m_values[1] * 65535); inC[2] = qRound(color.m_values[2] * 65535); trans.apply(inC, outC, 1); newCol.setLabColor(outC[0], outC[1], outC[2]); } else { ScColorProfile profCMYK = doc ? doc->DocInputCMYKProf : ScCore->defaultCMYKProfile; ScColorProfile profLab = ScCore->defaultLabProfile; ScColorTransform trans = engine.createTransform(profCMYK, Format_CMYK_16, profLab, Format_Lab_Dbl, Intent_Perceptual, 0); double outC[3]; unsigned short inC[4]; inC[0] = qRound(color.m_values[0] * 65535); inC[1] = qRound(color.m_values[1] * 65535); inC[2] = qRound(color.m_values[2] * 65535); inC[3] = qRound(color.m_values[3] * 65535); trans.apply(inC, outC, 1); newCol.setLabColor(outC[0], outC[1], outC[2]); } } return newCol; }
QObject *DocumentAPI::newColorRGB(QString name, int r, int g, int b) { if (name.isEmpty()) { RAISE("Cannot create a color with an empty name"); } if (ScCore->primaryMainWindow()->doc->PageColors.contains(name)) { ScCore->primaryMainWindow()->doc->PageColors.insert(name, ScColor(r, g, b)); } else { ScCore->primaryMainWindow()->doc->PageColors[name].setColorRGB(r, g, b); } return getColor(name); }
QObject *DocumentAPI::newColorCMYK(QString name, int c, int m, int y, int k) { if (name.isEmpty()) { RAISE("Cannot create a color with an empty name"); } if (ScCore->primaryMainWindow()->doc->PageColors.contains(name)) { ScCore->primaryMainWindow()->doc->PageColors.insert(name, ScColor(c, m, y, k)); } else { ScCore->primaryMainWindow()->doc->PageColors[name].setColor(c, m, y, k); } return getColor(name); }
void ColorList::ensureWhite(void) { bool addWhite = true; ColorList::Iterator itw = find("White"); if (itw != end()) { ScColor& white = itw.value(); colorModel model = white.getColorModel(); if (model == colorModelCMYK) { int c, m, y, k; white.getCMYK(&c, &m, &y, &k); if (c == 0 && m == 0 && y == 0 && k == 0) addWhite = false; } } if (addWhite) insert("White", ScColor(0, 0, 0, 0)); }
void ColorList::ensureBlack(void) { bool addBlack = true; ColorList::Iterator itb = find("Black"); if (itb != end()) { ScColor& black = itb.value(); colorModel model = black.getColorModel(); if (model == colorModelCMYK) { int c, m, y, k; black.getCMYK(&c, &m, &y, &k); if (c == 0 && m == 0 && y == 0 && k == 255) addBlack = false; } } if (addBlack) insert("Black", ScColor(0, 0, 0, 255)); }
ScColor ScColorEngine::convertToModel(const ScColor& color, const ScribusDoc* doc, colorModel model) { colorModel oldModel = color.getColorModel(); if( oldModel == model ) return ScColor(color); ScColor newCol; if( model == colorModelRGB ) { RGBColor rgb; getRGBValues(color, doc, rgb); newCol.setColorRGB(rgb.r, rgb.g, rgb.b); } else { CMYKColor cmyk; getCMYKValues(color, doc, cmyk); newCol.setColor(cmyk.c, cmyk.m, cmyk.y, cmyk.k); } return newCol; }
void ColorList::ensureRegistration(void) { ScColor cc = ScColor(255, 255, 255, 255); cc.setRegistrationColor(true); insert("Registration", cc); }
QImage XfigPlug::readThumbnail(QString fName) { QFileInfo fi = QFileInfo(fName); baseFile = QDir::cleanPath(QDir::toNativeSeparators(fi.absolutePath()+"/")); double w=0.0, h=0.0, x=0.0, y=0.0; parseHeader(fName, x, y, w, h); docX = x; docY = y; if (w == 0.0) w = PrefsManager::instance()->appPrefs.docSetupPrefs.pageWidth; if (h == 0.0) h = PrefsManager::instance()->appPrefs.docSetupPrefs.pageHeight; docWidth = w - x; docHeight = h - y; progressDialog = NULL; m_Doc = new ScribusDoc(); m_Doc->setup(0, 1, 1, 1, 1, "Custom", "Custom"); m_Doc->setPage(docWidth, docHeight, 0, 0, 0, 0, 0, 0, false, false); m_Doc->addPage(0); m_Doc->setGUI(false, ScCore->primaryMainWindow(), 0); baseX = m_Doc->currentPage()->xOffset(); baseY = m_Doc->currentPage()->yOffset(); Elements.clear(); CustColors.clear(); importedColors.insert(0, "Black"); importedColors.insert(1, "Blue"); importedColors.insert(2, "Green"); importedColors.insert(3, "Cyan"); importedColors.insert(4, "Red"); importedColors.insert(5, "Magenta"); importedColors.insert(6, "Yellow"); importedColors.insert(7, "White"); importedColors.insert(8, "Blue4"); importedColors.insert(9, "Blue3"); importedColors.insert(10, "Blue2"); importedColors.insert(11, "LtBlue"); importedColors.insert(12, "Green4"); importedColors.insert(13, "Green3"); importedColors.insert(14, "Green2"); importedColors.insert(15, "Cyan4"); importedColors.insert(16, "Cyan3"); importedColors.insert(17, "Cyan2"); importedColors.insert(18, "Red4"); importedColors.insert(19, "Red3"); importedColors.insert(20, "Red2"); importedColors.insert(21, "Magenta4"); importedColors.insert(22, "Magenta3"); importedColors.insert(23, "Magenta2"); importedColors.insert(24, "Brown4"); importedColors.insert(25, "Brown3"); importedColors.insert(26, "Brown2"); importedColors.insert(27, "Pink4"); importedColors.insert(28, "Pink3"); importedColors.insert(29, "Pink2"); importedColors.insert(30, "Pink"); importedColors.insert(31, "Gold"); CustColors.insert("Blue", ScColor(0, 0, 255)); CustColors.insert("Blue4", ScColor(0, 0, 144)); CustColors.insert("Blue3", ScColor(0, 0, 176)); CustColors.insert("Blue2", ScColor(0, 0, 208)); CustColors.insert("LtBlue", ScColor(135, 206, 255)); CustColors.insert("Cyan", ScColor(255, 0, 0, 0)); CustColors.insert("Cyan4", ScColor(0, 144, 144)); CustColors.insert("Cyan3", ScColor(0, 176, 176)); CustColors.insert("Cyan2", ScColor(0, 208, 208)); CustColors.insert("Green", ScColor(255, 0, 255, 0)); CustColors.insert("Green4", ScColor(0, 144, 0)); CustColors.insert("Green3", ScColor(0, 176, 0)); CustColors.insert("Green2", ScColor(0, 208, 0)); CustColors.insert("Red", ScColor(0, 255, 255, 0)); CustColors.insert("Red4", ScColor(144, 0, 0)); CustColors.insert("Red3", ScColor(176, 0, 0)); CustColors.insert("Red2", ScColor(208, 0, 0)); CustColors.insert("Yellow", ScColor(0, 0, 255, 0)); CustColors.insert("Magenta", ScColor(0, 255, 0, 0)); CustColors.insert("Magenta4", ScColor(144, 0, 144)); CustColors.insert("Magenta3", ScColor(176, 0, 176)); CustColors.insert("Magenta2", ScColor(208, 0, 208)); CustColors.insert("Brown4", ScColor(128, 48, 0)); CustColors.insert("Brown3", ScColor(160, 64, 0)); CustColors.insert("Brown2", ScColor(192, 96, 0)); CustColors.insert("Pink4", ScColor(255, 128, 128)); CustColors.insert("Pink3", ScColor(255, 160, 160)); CustColors.insert("Pink2", ScColor(255, 192, 192)); CustColors.insert("Pink", ScColor(255, 224, 224)); CustColors.insert("Gold", ScColor(255, 215, 0)); m_Doc->setLoading(true); m_Doc->DoDrawing = false; m_Doc->scMW()->setScriptRunning(true); QString CurDirP = QDir::currentPath(); QDir::setCurrent(fi.path()); if (convert(fName)) { tmpSel->clear(); QDir::setCurrent(CurDirP); if (Elements.count() > 1) m_Doc->groupObjectsList(Elements); m_Doc->DoDrawing = true; m_Doc->m_Selection->delaySignalsOn(); QImage tmpImage; if (Elements.count() > 0) { for (int dre=0; dre<Elements.count(); ++dre) { tmpSel->addItem(Elements.at(dre), true); } tmpSel->setGroupRect(); double xs = tmpSel->width(); double ys = tmpSel->height(); tmpImage = Elements.at(0)->DrawObj_toImage(500); tmpImage.setText("XSize", QString("%1").arg(xs)); tmpImage.setText("YSize", QString("%1").arg(ys)); } m_Doc->scMW()->setScriptRunning(false); m_Doc->setLoading(false); m_Doc->m_Selection->delaySignalsOff(); delete m_Doc; return tmpImage; } else { QDir::setCurrent(CurDirP); m_Doc->DoDrawing = true; m_Doc->scMW()->setScriptRunning(false); delete m_Doc; } return QImage(); }
bool XfigPlug::import(QString fNameIn, const TransactionSettings& trSettings, int flags, bool showProgress) { QString fName = fNameIn; bool success = false; interactive = (flags & LoadSavePlugin::lfInteractive); importerFlags = flags; cancel = false; double x, y, b, h; bool ret = false; CustColors.clear(); importedColors.insert(0, "Black"); importedColors.insert(1, "Blue"); importedColors.insert(2, "Green"); importedColors.insert(3, "Cyan"); importedColors.insert(4, "Red"); importedColors.insert(5, "Magenta"); importedColors.insert(6, "Yellow"); importedColors.insert(7, "White"); importedColors.insert(8, "Blue4"); importedColors.insert(9, "Blue3"); importedColors.insert(10, "Blue2"); importedColors.insert(11, "LtBlue"); importedColors.insert(12, "Green4"); importedColors.insert(13, "Green3"); importedColors.insert(14, "Green2"); importedColors.insert(15, "Cyan4"); importedColors.insert(16, "Cyan3"); importedColors.insert(17, "Cyan2"); importedColors.insert(18, "Red4"); importedColors.insert(19, "Red3"); importedColors.insert(20, "Red2"); importedColors.insert(21, "Magenta4"); importedColors.insert(22, "Magenta3"); importedColors.insert(23, "Magenta2"); importedColors.insert(24, "Brown4"); importedColors.insert(25, "Brown3"); importedColors.insert(26, "Brown2"); importedColors.insert(27, "Pink4"); importedColors.insert(28, "Pink3"); importedColors.insert(29, "Pink2"); importedColors.insert(30, "Pink"); importedColors.insert(31, "Gold"); CustColors.insert("Blue", ScColor(0, 0, 255)); CustColors.insert("Blue4", ScColor(0, 0, 144)); CustColors.insert("Blue3", ScColor(0, 0, 176)); CustColors.insert("Blue2", ScColor(0, 0, 208)); CustColors.insert("LtBlue", ScColor(135, 206, 255)); CustColors.insert("Cyan", ScColor(255, 0, 0, 0)); CustColors.insert("Cyan4", ScColor(0, 144, 144)); CustColors.insert("Cyan3", ScColor(0, 176, 176)); CustColors.insert("Cyan2", ScColor(0, 208, 208)); CustColors.insert("Green", ScColor(255, 0, 255, 0)); CustColors.insert("Green4", ScColor(0, 144, 0)); CustColors.insert("Green3", ScColor(0, 176, 0)); CustColors.insert("Green2", ScColor(0, 208, 0)); CustColors.insert("Red", ScColor(0, 255, 255, 0)); CustColors.insert("Red4", ScColor(144, 0, 0)); CustColors.insert("Red3", ScColor(176, 0, 0)); CustColors.insert("Red2", ScColor(208, 0, 0)); CustColors.insert("Yellow", ScColor(0, 0, 255, 0)); CustColors.insert("Magenta", ScColor(0, 255, 0, 0)); CustColors.insert("Magenta4", ScColor(144, 0, 144)); CustColors.insert("Magenta3", ScColor(176, 0, 176)); CustColors.insert("Magenta2", ScColor(208, 0, 208)); CustColors.insert("Brown4", ScColor(128, 48, 0)); CustColors.insert("Brown3", ScColor(160, 64, 0)); CustColors.insert("Brown2", ScColor(192, 96, 0)); CustColors.insert("Pink4", ScColor(255, 128, 128)); CustColors.insert("Pink3", ScColor(255, 160, 160)); CustColors.insert("Pink2", ScColor(255, 192, 192)); CustColors.insert("Pink", ScColor(255, 224, 224)); CustColors.insert("Gold", ScColor(255, 215, 0)); QFileInfo fi = QFileInfo(fName); if ( !ScCore->usingGUI() ) { interactive = false; showProgress = false; } baseFile = QDir::cleanPath(QDir::toNativeSeparators(fi.absolutePath()+"/")); if ( showProgress ) { ScribusMainWindow* mw=(m_Doc==0) ? ScCore->primaryMainWindow() : m_Doc->scMW(); progressDialog = new MultiProgressDialog( tr("Importing: %1").arg(fi.fileName()), CommonStrings::tr_Cancel, mw ); QStringList barNames, barTexts; barNames << "GI"; barTexts << tr("Analyzing File:"); QList<bool> barsNumeric; barsNumeric << false; progressDialog->addExtraProgressBars(barNames, barTexts, barsNumeric); progressDialog->setOverallTotalSteps(3); progressDialog->setOverallProgress(0); progressDialog->setProgress("GI", 0); progressDialog->show(); connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelRequested())); qApp->processEvents(); } else progressDialog = NULL; /* Set default Page to size defined in Preferences */ x = 0.0; y = 0.0; b = 0.0; h = 0.0; if (progressDialog) { progressDialog->setOverallProgress(1); qApp->processEvents(); } parseHeader(fName, x, y, b, h); docX = x; docY = y; if (b == 0.0) b = PrefsManager::instance()->appPrefs.docSetupPrefs.pageWidth; if (h == 0.0) h = PrefsManager::instance()->appPrefs.docSetupPrefs.pageHeight; docWidth = b - x; docHeight = h - y; baseX = 0; baseY = 0; if (!interactive || (flags & LoadSavePlugin::lfInsertPage)) { m_Doc->setPage(b-x, h-y, 0, 0, 0, 0, 0, 0, false, false); m_Doc->addPage(0); m_Doc->view()->addPage(0, true); baseX = 0; baseY = 0; } else { if (!m_Doc || (flags & LoadSavePlugin::lfCreateDoc)) { m_Doc=ScCore->primaryMainWindow()->doFileNew(b-x, h-y, 0, 0, 0, 0, 0, 0, false, false, 0, false, 0, 1, "Custom", true); ScCore->primaryMainWindow()->HaveNewDoc(); ret = true; baseX = 0; baseY = 0; } } if (flags & LoadSavePlugin::lfCreateDoc) { m_Doc->documentInfo().setAuthor(docCreator); m_Doc->documentInfo().setPublisher(docOrganisation); m_Doc->documentInfo().setTitle(docTitle); m_Doc->documentInfo().setDate(docDate+" "+docTime); } if ((!ret) && (interactive)) { baseX = m_Doc->currentPage()->xOffset(); baseY = m_Doc->currentPage()->yOffset(); } if ((ret) || (!interactive)) { if (b-x > h-y) m_Doc->setPageOrientation(1); else m_Doc->setPageOrientation(0); m_Doc->setPageSize("Custom"); } if ((!(flags & LoadSavePlugin::lfLoadAsPattern)) && (m_Doc->view() != NULL)) m_Doc->view()->Deselect(); Elements.clear(); m_Doc->setLoading(true); m_Doc->DoDrawing = false; if ((!(flags & LoadSavePlugin::lfLoadAsPattern)) && (m_Doc->view() != NULL)) m_Doc->view()->updatesOn(false); m_Doc->scMW()->setScriptRunning(true); qApp->setOverrideCursor(QCursor(Qt::WaitCursor)); QString CurDirP = QDir::currentPath(); QDir::setCurrent(fi.path()); if (convert(fName)) { tmpSel->clear(); QDir::setCurrent(CurDirP); if ((Elements.count() > 1) && (!(importerFlags & LoadSavePlugin::lfCreateDoc))) m_Doc->groupObjectsList(Elements); m_Doc->DoDrawing = true; m_Doc->scMW()->setScriptRunning(false); m_Doc->setLoading(false); qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); if ((Elements.count() > 0) && (!ret) && (interactive)) { if (flags & LoadSavePlugin::lfScripted) { bool loadF = m_Doc->isLoading(); m_Doc->setLoading(false); m_Doc->changed(); m_Doc->setLoading(loadF); if (!(flags & LoadSavePlugin::lfLoadAsPattern)) { m_Doc->m_Selection->delaySignalsOn(); for (int dre=0; dre<Elements.count(); ++dre) { m_Doc->m_Selection->addItem(Elements.at(dre), true); } m_Doc->m_Selection->delaySignalsOff(); m_Doc->m_Selection->setGroupRect(); if (m_Doc->view() != NULL) m_Doc->view()->updatesOn(true); } } else { m_Doc->DragP = true; m_Doc->DraggedElem = 0; m_Doc->DragElements.clear(); m_Doc->m_Selection->delaySignalsOn(); for (int dre=0; dre<Elements.count(); ++dre) { tmpSel->addItem(Elements.at(dre), true); } tmpSel->setGroupRect(); ScElemMimeData* md = ScriXmlDoc::WriteToMimeData(m_Doc, tmpSel); m_Doc->itemSelection_DeleteItem(tmpSel); m_Doc->view()->updatesOn(true); m_Doc->m_Selection->delaySignalsOff(); // We must copy the TransationSettings object as it is owned // by handleObjectImport method afterwards TransactionSettings* transacSettings = new TransactionSettings(trSettings); m_Doc->view()->handleObjectImport(md, transacSettings); m_Doc->DragP = false; m_Doc->DraggedElem = 0; m_Doc->DragElements.clear(); } } else { m_Doc->changed(); m_Doc->reformPages(); if (!(flags & LoadSavePlugin::lfLoadAsPattern)) m_Doc->view()->updatesOn(true); } success = true; } else { QDir::setCurrent(CurDirP); m_Doc->DoDrawing = true; m_Doc->scMW()->setScriptRunning(false); m_Doc->view()->updatesOn(true); qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); } if (interactive) m_Doc->setLoading(false); //CB If we have a gui we must refresh it if we have used the progressbar if (!(flags & LoadSavePlugin::lfLoadAsPattern)) { if ((showProgress) && (!interactive)) m_Doc->view()->DrawNew(); } qApp->restoreOverrideCursor(); return success; }
SampleItem::SampleItem(ScribusDoc* doc) : QObject() { used = true; m_Doc=doc; if (doc==0) { qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); // FIXME: main preformance issue here! PV m_Doc=ScCore->primaryMainWindow()->doFileNew(//pageWidth, pageHeight, 0,0, //topMargin, leftMargin, rightMargin, bottomMargin, 1, 1, 1, 1, // autoframes. It's disabled in python // columnDistance, numberCols, autoframes, 0, 1, false, //pagesType, unit, firstPageOrder, 1, 1, 1, //orientation, firstPageNr, "Custom", requires gui, page count, showview); 1, 1, "custom", false, 1, false); //m_Doc = new ScribusDoc(); Q_ASSERT(m_Doc!=0); if (!m_Doc) return; m_Doc->pageSets[1/*pagesType*/].FirstPage = 1;//firstPageOrder; used = false; qApp->changeOverrideCursor(Qt::ArrowCursor); } // tmp colors. to be removed in descrictor m_Doc->PageColors.insert("__blackforpreview__", ScColor(0, 0, 0, 255)); m_Doc->PageColors.insert("__whiteforpreview__", ScColor(0, 0, 0, 0)); m_Doc->PageColors.insert("__whiteforpreviewbg__", ScColor(0, 0, 0, 0)); bgShade = 100; tmpStyle.setName("(preview temporary)"); tmpStyle.setLineSpacingMode(ParagraphStyle::FixedLineSpacing); tmpStyle.setLineSpacing((m_Doc->toolSettings.defSize / 10.0) * static_cast<double>(m_Doc->typographicSettings.autoLineSpacing) / 100 + (m_Doc->toolSettings.defSize / 10.0)); tmpStyle.setAlignment(ParagraphStyle::Leftaligned); tmpStyle.setLeftMargin(0); tmpStyle.setFirstIndent(0); tmpStyle.setRightMargin(0); tmpStyle.setGapBefore(0); tmpStyle.setGapAfter(0); tmpStyle.charStyle().setFont(PrefsManager::instance()->appPrefs.AvailFonts[m_Doc->toolSettings.defFont]); tmpStyle.charStyle().setFontSize(m_Doc->toolSettings.defSize); // tmpStyle.tabValues().clear(); tmpStyle.setHasDropCap(false); tmpStyle.setDropCapLines(0);//2; tmpStyle.setDropCapOffset(0); tmpStyle.charStyle().setFeatures(QStringList(CharStyle::INHERIT)); tmpStyle.charStyle().setFillColor("__blackforpreview__"); tmpStyle.charStyle().setFillShade(100); //m_Doc->toolSettings.dShade; tmpStyle.charStyle().setStrokeColor("__whiteforpreview__"); tmpStyle.charStyle().setStrokeShade(100); //m_Doc->toolSettings.dShade2; tmpStyle.charStyle().setShadowXOffset(50); tmpStyle.charStyle().setShadowYOffset(-50); tmpStyle.charStyle().setOutlineWidth(10); tmpStyle.charStyle().setUnderlineOffset(0); //m_Doc->typographicSettings.valueUnderlinePos; tmpStyle.charStyle().setUnderlineWidth(0); //m_Doc->typographicSettings.valueUnderlineWidth; tmpStyle.charStyle().setStrikethruOffset(0); //m_Doc->typographicSettings.valueStrikeThruPos; tmpStyle.charStyle().setStrikethruWidth(0); //m_Doc->typographicSettings.valueStrikeThruPos; tmpStyle.charStyle().setScaleH(1000); tmpStyle.charStyle().setScaleV(1000); tmpStyle.charStyle().setBaselineOffset(0); tmpStyle.charStyle().setTracking(0); }
void CMYKChoose::selSwatch() { QTreeWidgetItem *c = Swatches->currentItem(); if (c == hsvSelector) TabStack->setCurrentIndex(0); else { CurrSwatch.clear(); QString pfadC2 = ""; QString txt = c->data(0, Qt::UserRole).toString() + "/" + c->text(0); if (!customColSet.contains(txt)) pfadC2 = csm.paletteFileFromName(txt); else pfadC2 = csm.userPaletteFileFromName(txt); if (importColorsFromFile(pfadC2, CurrSwatch)) { CurrSwatch.insert("White", ScColor(0, 0, 0, 0)); CurrSwatch.insert("Black", ScColor(0, 0, 0, 255)); } else { CurrSwatch.insert("White", ScColor(0, 0, 0, 0)); CurrSwatch.insert("Black", ScColor(0, 0, 0, 255)); ScColor cc = ScColor(255, 255, 255, 255); cc.setRegistrationColor(true); CurrSwatch.insert("Registration", cc); CurrSwatch.insert("Blue", ScColor(255, 255, 0, 0)); CurrSwatch.insert("Cyan", ScColor(255, 0, 0, 0)); CurrSwatch.insert("Green", ScColor(255, 0, 255, 0)); CurrSwatch.insert("Red", ScColor(0, 255, 255, 0)); CurrSwatch.insert("Yellow", ScColor(0, 0, 255, 0)); CurrSwatch.insert("Magenta", ScColor(0, 255, 0, 0)); } ColorSwatch->clear(); ColorSwatch->insertFancyPixmapItems(CurrSwatch); ColorSwatch->setCurrentRow( 0 ); TabStack->setCurrentIndex(1); } }
bool PaletteLoader_PS::importFile(const QString& fileName, bool /*merge*/) { QString tmp, colorName; double c, m, y, k; ScColor cc; QFile f(fileName); if (!f.open(QIODevice::ReadOnly)) return false; int oldCount = m_colors->count(); bool isAtend = false; QDataStream ts(&f); while (!ts.atEnd()) { tmp = readLineFromDataStream(ts); if ((tmp.startsWith("%%CMYKCustomColor")) || (tmp.startsWith("%%CMYKProcessColor"))) { if (tmp.contains("(atend)")) isAtend = true; else { if (tmp.startsWith("%%CMYKCustomColor")) tmp = tmp.remove(0,18); else if (tmp.startsWith("%%CMYKProcessColor")) tmp = tmp.remove(0,19); ScTextStream ts2(&tmp, QIODevice::ReadOnly); ts2 >> c >> m >> y >> k; colorName = ts2.readAll(); colorName = colorName.trimmed(); colorName = colorName.remove(0,1); colorName = colorName.remove(colorName.length()-1,1); colorName = colorName.simplified(); cc = ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y), qRound(255 * k)); cc.setSpotColor(true); if (!colorName.isEmpty()) m_colors->tryAddColor(colorName, cc); while (!ts.atEnd()) { quint64 oldPos = ts.device()->pos(); tmp = readLineFromDataStream(ts); if (!tmp.startsWith("%%+")) { ts.device()->seek(oldPos); break; } tmp = tmp.remove(0,3); ScTextStream ts2(&tmp, QIODevice::ReadOnly); ts2 >> c >> m >> y >> k; colorName = ts2.readAll(); colorName = colorName.trimmed(); colorName = colorName.remove(0,1); colorName = colorName.remove(colorName.length()-1,1); colorName = colorName.simplified(); cc = ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y), qRound(255 * k)); cc.setSpotColor(true); if (!colorName.isEmpty()) m_colors->tryAddColor(colorName, cc); } } } if ((tmp.startsWith("%%RGBCustomColor")) || (tmp.startsWith("%%RGBProcessColor"))) { if (tmp.contains("(atend)")) isAtend = true; else { if (tmp.startsWith("%%RGBCustomColor")) tmp = tmp.remove(0,17); else if (tmp.startsWith("%%RGBProcessColor")) tmp = tmp.remove(0,18); ScTextStream ts2(&tmp, QIODevice::ReadOnly); ts2 >> c >> m >> y; colorName = ts2.readAll(); colorName = colorName.trimmed(); colorName = colorName.remove(0,1); colorName = colorName.remove(colorName.length()-1,1); colorName = colorName.simplified(); cc = ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y)); if (!colorName.isEmpty()) m_colors->tryAddColor(colorName, cc); while (!ts.atEnd()) { quint64 oldPos = ts.device()->pos(); tmp = readLineFromDataStream(ts); if (!tmp.startsWith("%%+")) { ts.device()->seek(oldPos); break; } tmp = tmp.remove(0,3); ScTextStream ts2(&tmp, QIODevice::ReadOnly); ts2 >> c >> m >> y; colorName = ts2.readAll(); colorName = colorName.trimmed(); colorName = colorName.remove(0,1); colorName = colorName.remove(colorName.length()-1,1); colorName = colorName.simplified(); cc = ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y)); if (!colorName.isEmpty()) m_colors->tryAddColor(colorName, cc); } } } if (tmp.startsWith("%%EndComments")) { if (!isAtend) break; } } f.close(); return (m_colors->count() != oldCount); }
QPalette CMYKChoose::sliderPix(int farbe) { RGBColor rgb; CMYKColor cmyk; QImage image0 = QImage(255, 10, QImage::Format_ARGB32); QPainter p; p.begin(&image0); p.setPen(Qt::NoPen); int r, g, b, c, m, y, k; QColor tmp; for (int x = 0; x < 255; x += 5) { if (Farbe.getColorModel() == colorModelCMYK) { ScColorEngine::getCMYKValues(Farbe, m_doc, cmyk); cmyk.getValues(c, m, y, k); if (dynamic) { switch (farbe) { case 180: tmp = ScColorEngine::getDisplayColorGC(ScColor(x, m, y, k), m_doc); break; case 300: tmp = ScColorEngine::getDisplayColorGC(ScColor(c, x, y, k), m_doc); break; case 60: tmp = ScColorEngine::getDisplayColorGC(ScColor(c, m, x, k), m_doc); break; } p.setBrush(tmp); } else { switch (farbe) { case 180: tmp = ScColorEngine::getDisplayColorGC(ScColor(x, 0, 0, 0), m_doc); break; case 300: tmp = ScColorEngine::getDisplayColorGC(ScColor(0, x, 0, 0), m_doc); break; case 60: tmp = ScColorEngine::getDisplayColorGC(ScColor(0, 0, x, 0), m_doc); break; } p.setBrush(tmp); } } else if (Farbe.getColorModel() == colorModelRGB) { ScColorEngine::getRGBValues(Farbe, m_doc, rgb); rgb.getValues(r, g, b); if (dynamic) { switch (farbe) { case 0: tmp = ScColorEngine::getDisplayColorGC(ScColor(x, g, b), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(r, x, b), m_doc); break; case 240: tmp = ScColorEngine::getDisplayColorGC(ScColor(r, g, x), m_doc); break; } p.setBrush(tmp); } else { switch (farbe) { case 0: tmp = ScColorEngine::getDisplayColorGC(ScColor(x, 0, 0), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(0, x, 0), m_doc); break; case 240: tmp = ScColorEngine::getDisplayColorGC(ScColor(0, 0, x), m_doc); break; } p.setBrush(tmp); } } else if (Farbe.getColorModel() == colorModelLab) { double L, a, b; double val = static_cast<double>(x) / 255.0; Farbe.getLab(&L, &a, &b); if (isHLC) { QLineF lin; lin.setP1(QPointF(0.0, 0.0)); lin.setP2(QPointF(a, b)); double H = lin.angle(); double C = lin.length(); double tmpA, tmpB; if (dynamic) { switch (farbe) { case 0: lin = QLineF::fromPolar(C, -360 * val); tmpA = lin.p2().x(); tmpB = lin.p2().y(); tmp = ScColorEngine::getDisplayColorGC(ScColor(L, tmpA, tmpB), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(100 * val, a, b), m_doc); break; case 240: lin = QLineF::fromPolar(128 * val, H); tmpA = lin.p2().x(); tmpB = lin.p2().y(); tmp = ScColorEngine::getDisplayColorGC(ScColor(L, tmpA, tmpB), m_doc); break; } p.setBrush(tmp); } else { switch (farbe) { case 0: lin = QLineF::fromPolar(128, -360 * val); tmpA = lin.p2().x(); tmpB = lin.p2().y(); tmp = ScColorEngine::getDisplayColorGC(ScColor(100.0, tmpA, tmpB), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(100 * val, 0.0, 0.0), m_doc); break; case 240: lin = QLineF::fromPolar(128 * val, 0); tmpA = lin.p2().x(); tmpB = lin.p2().y(); tmp = ScColorEngine::getDisplayColorGC(ScColor(100.0, tmpA, tmpB), m_doc); break; } p.setBrush(tmp); } } else { if (dynamic) { switch (farbe) { case 0: tmp = ScColorEngine::getDisplayColorGC(ScColor(100 * val, a, b), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(L, 256 * val - 128.0, b), m_doc); break; case 240: tmp = ScColorEngine::getDisplayColorGC(ScColor(L, a, 256 * val - 128.0), m_doc); break; } p.setBrush(tmp); } else { switch (farbe) { case 0: tmp = ScColorEngine::getDisplayColorGC(ScColor(100 * val, 0.0, 0.0), m_doc); break; case 120: tmp = ScColorEngine::getDisplayColorGC(ScColor(100.0, 256 * val - 128.0, 0.0), m_doc); break; case 240: tmp = ScColorEngine::getDisplayColorGC(ScColor(100.0, 0.0, 256 * val - 128.0), m_doc); break; } } p.setBrush(tmp); } } p.drawRect(x, 0, 5, 10); } p.end(); QPalette pal; pal.setBrush(QPalette::Window, QBrush(image0)); return pal; }
void ColorSetManager::initialiseDefaultPrefs(struct ApplicationPrefs& appPrefs) { QString defaultSwatch = ScPaths::instance().shareDir() + "swatches/" + "Scribus_Basic.xml"; QFile fiC(defaultSwatch); if (!fiC.exists()) { appPrefs.colorPrefs.DColors.insert("White", ScColor(0, 0, 0, 0)); appPrefs.colorPrefs.DColors.insert("Black", ScColor(0, 0, 0, 255)); ScColor cc = ScColor(255, 255, 255, 255); cc.setRegistrationColor(true); appPrefs.colorPrefs.DColors.insert("Registration", cc); appPrefs.colorPrefs.DColors.insert("Blue", ScColor(255, 255, 0, 0)); appPrefs.colorPrefs.DColors.insert("Cyan", ScColor(255, 0, 0, 0)); appPrefs.colorPrefs.DColors.insert("Green", ScColor(255, 0, 255, 0)); appPrefs.colorPrefs.DColors.insert("Red", ScColor(0, 255, 255, 0)); appPrefs.colorPrefs.DColors.insert("Yellow", ScColor(0, 0, 255, 0)); appPrefs.colorPrefs.DColors.insert("Magenta", ScColor(0, 255, 0, 0)); appPrefs.colorPrefs.DColorSet = "Scribus_Small"; } else { if (fiC.open(QIODevice::ReadOnly)) { QString ColorEn, Cname; int Rval, Gval, Bval; QTextStream tsC(&fiC); ColorEn = tsC.readLine(); if (ColorEn.startsWith("<?xml version=")) { QByteArray docBytes(""); loadRawText(defaultSwatch, docBytes); QString docText(""); docText = QString::fromUtf8(docBytes); QDomDocument docu("scridoc"); docu.setContent(docText); ScColor lf = ScColor(); QDomElement elem = docu.documentElement(); QDomNode PAGE = elem.firstChild(); while(!PAGE.isNull()) { QDomElement pg = PAGE.toElement(); if(pg.tagName()=="COLOR" && pg.attribute("NAME")!=CommonStrings::None) { if (pg.hasAttribute("CMYK")) lf.setNamedColor(pg.attribute("CMYK")); else lf.fromQColor(QColor(pg.attribute("RGB"))); if (pg.hasAttribute("Spot")) lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt())); else lf.setSpotColor(false); if (pg.hasAttribute("Register")) lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt())); else lf.setRegistrationColor(false); appPrefs.colorPrefs.DColors.insert(pg.attribute("NAME"), lf); } PAGE=PAGE.nextSibling(); } } else { while (!tsC.atEnd()) { ColorEn = tsC.readLine(); QTextStream CoE(&ColorEn, QIODevice::ReadOnly); CoE >> Rval; CoE >> Gval; CoE >> Bval; CoE >> Cname; ScColor tmp; tmp.setColorRGB(Rval, Gval, Bval); appPrefs.colorPrefs.DColors.insert(Cname, tmp); } } fiC.close(); } appPrefs.colorPrefs.DColorSet = ScPaths::instance().shareDir() + "swatches/" + "Scribus Basic"; }
bool XfigPlug::import(QString fNameIn, const TransactionSettings& trSettings, int flags, bool showProgress) { QString fName = fNameIn; bool success = false; interactive = (flags & LoadSavePlugin::lfInteractive); importerFlags = flags; cancel = false; double x, y, b, h; bool ret = false; CustColors.clear(); importedColors.insert(0, "Black"); importedColors.insert(1, "Blue"); importedColors.insert(2, "Green"); importedColors.insert(3, "Cyan"); importedColors.insert(4, "Red"); importedColors.insert(5, "Magenta"); importedColors.insert(6, "Yellow"); importedColors.insert(7, "White"); importedColors.insert(8, "Blue4"); importedColors.insert(9, "Blue3"); importedColors.insert(10, "Blue2"); importedColors.insert(11, "LtBlue"); importedColors.insert(12, "Green4"); importedColors.insert(13, "Green3"); importedColors.insert(14, "Green2"); importedColors.insert(15, "Cyan4"); importedColors.insert(16, "Cyan3"); importedColors.insert(17, "Cyan2"); importedColors.insert(18, "Red4"); importedColors.insert(19, "Red3"); importedColors.insert(20, "Red2"); importedColors.insert(21, "Magenta4"); importedColors.insert(22, "Magenta3"); importedColors.insert(23, "Magenta2"); importedColors.insert(24, "Brown4"); importedColors.insert(25, "Brown3"); importedColors.insert(26, "Brown2"); importedColors.insert(27, "Pink4"); importedColors.insert(28, "Pink3"); importedColors.insert(29, "Pink2"); importedColors.insert(30, "Pink"); importedColors.insert(31, "Gold"); CustColors.insert("Blue", ScColor(255, 0, 0, 0)); CustColors.insert("Blue4", ScColor(0, 0, 144)); CustColors.insert("Blue3", ScColor(0, 0, 176)); CustColors.insert("Blue2", ScColor(0, 0, 208)); CustColors.insert("LtBlue", ScColor(135, 206, 255)); CustColors.insert("Cyan", ScColor(255, 0, 0, 0)); CustColors.insert("Cyan4", ScColor(0, 144, 144)); CustColors.insert("Cyan3", ScColor(0, 176, 176)); CustColors.insert("Cyan2", ScColor(0, 208, 208)); CustColors.insert("Green", ScColor(255, 0, 255, 0)); CustColors.insert("Green4", ScColor(0, 144, 0)); CustColors.insert("Green3", ScColor(0, 176, 0)); CustColors.insert("Green2", ScColor(0, 208, 0)); CustColors.insert("Red", ScColor(0, 255, 255, 0)); CustColors.insert("Red4", ScColor(144, 0, 0)); CustColors.insert("Red3", ScColor(176, 0, 0)); CustColors.insert("Red2", ScColor(208, 0, 0)); CustColors.insert("Yellow", ScColor(0, 0, 255, 0)); CustColors.insert("Magenta", ScColor(0, 255, 0, 0)); CustColors.insert("Magenta4", ScColor(144, 0, 144)); CustColors.insert("Magenta3", ScColor(176, 0, 176)); CustColors.insert("Magenta2", ScColor(208, 0, 208)); CustColors.insert("Brown4", ScColor(128, 48, 0)); CustColors.insert("Brown3", ScColor(160, 64, 0)); CustColors.insert("Brown2", ScColor(192, 96, 0)); CustColors.insert("Pink4", ScColor(255, 128, 128)); CustColors.insert("Pink3", ScColor(255, 160, 160)); CustColors.insert("Pink2", ScColor(255, 192, 192)); CustColors.insert("Pink", ScColor(255, 224, 224)); CustColors.insert("Gold", ScColor(255, 215, 0)); QFileInfo fi = QFileInfo(fName); if ( !ScCore->usingGUI() ) { interactive = false; showProgress = false; } baseFile = QDir::cleanPath(QDir::toNativeSeparators(fi.absolutePath()+"/")); if ( showProgress ) { ScribusMainWindow* mw=(m_Doc==0) ? ScCore->primaryMainWindow() : m_Doc->scMW(); progressDialog = new MultiProgressDialog( tr("Importing: %1").arg(fi.fileName()), CommonStrings::tr_Cancel, mw ); QStringList barNames, barTexts; barNames << "GI"; barTexts << tr("Analyzing File:"); QList<bool> barsNumeric; barsNumeric << false; progressDialog->addExtraProgressBars(barNames, barTexts, barsNumeric); progressDialog->setOverallTotalSteps(3); progressDialog->setOverallProgress(0); progressDialog->setProgress("GI", 0); progressDialog->show(); connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelRequested())); qApp->processEvents(); } else progressDialog = NULL; /* Set default Page to size defined in Preferences */ x = 0.0; y = 0.0; b = 0.0; h = 0.0; if (progressDialog) { progressDialog->setOverallProgress(1); qApp->processEvents(); } parseHeader(fName, x, y, b, h); docX = x; docY = y; if (b == 0.0) b = PrefsManager::instance()->appPrefs.PageWidth; if (h == 0.0) h = PrefsManager::instance()->appPrefs.PageHeight; docWidth = b - x; docHeight = h - y; baseX = 0; baseY = 0; if (!interactive || (flags & LoadSavePlugin::lfInsertPage)) { m_Doc->setPage(b-x, h-y, 0, 0, 0, 0, 0, 0, false, false); m_Doc->addPage(0); m_Doc->view()->addPage(0, true); baseX = 0; baseY = 0; } else { if (!m_Doc || (flags & LoadSavePlugin::lfCreateDoc)) { m_Doc=ScCore->primaryMainWindow()->doFileNew(b-x, h-y, 0, 0, 0, 0, 0, 0, false, false, 0, false, 0, 1, "Custom", true); ScCore->primaryMainWindow()->HaveNewDoc(); ret = true; baseX = 0; baseY = 0; } } if (flags & LoadSavePlugin::lfCreateDoc) { m_Doc->documentInfo.setAuthor(docCreator); m_Doc->documentInfo.setPublisher(docOrganisation); m_Doc->documentInfo.setTitle(docTitle); m_Doc->documentInfo.setDate(docDate+" "+docTime); } if ((!ret) && (interactive)) { baseX = m_Doc->currentPage()->xOffset(); baseY = m_Doc->currentPage()->yOffset(); } if ((ret) || (!interactive)) { if (b-x > h-y) m_Doc->PageOri = 1; else m_Doc->PageOri = 0; m_Doc->m_pageSize = "Custom"; } Elements.clear(); FPoint minSize = m_Doc->minCanvasCoordinate; FPoint maxSize = m_Doc->maxCanvasCoordinate; FPoint cOrigin = m_Doc->view()->canvasOrigin(); m_Doc->view()->Deselect(); m_Doc->setLoading(true); m_Doc->DoDrawing = false; m_Doc->view()->updatesOn(false); m_Doc->scMW()->setScriptRunning(true); qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); QString CurDirP = QDir::currentPath(); QDir::setCurrent(fi.path()); if (convert(fName)) { tmpSel->clear(); QDir::setCurrent(CurDirP); if ((Elements.count() > 1) && (!(importerFlags & LoadSavePlugin::lfCreateDoc))) { bool isGroup = true; int firstElem = -1; if (Elements.at(0)->Groups.count() != 0) firstElem = Elements.at(0)->Groups.top(); for (int bx = 0; bx < Elements.count(); ++bx) { PageItem* bxi = Elements.at(bx); if (bxi->Groups.count() != 0) { if (bxi->Groups.top() != firstElem) isGroup = false; } else isGroup = false; } if (!isGroup) { double minx = 99999.9; double miny = 99999.9; double maxx = -99999.9; double maxy = -99999.9; uint lowestItem = 999999; uint highestItem = 0; for (int a = 0; a < Elements.count(); ++a) { Elements.at(a)->Groups.push(m_Doc->GroupCounter); PageItem* currItem = Elements.at(a); lowestItem = qMin(lowestItem, currItem->ItemNr); highestItem = qMax(highestItem, currItem->ItemNr); double x1, x2, y1, y2; currItem->getVisualBoundingRect(&x1, &y1, &x2, &y2); minx = qMin(minx, x1); miny = qMin(miny, y1); maxx = qMax(maxx, x2); maxy = qMax(maxy, y2); } double gx = minx; double gy = miny; double gw = maxx - minx; double gh = maxy - miny; PageItem *high = m_Doc->Items->at(highestItem); int z = m_Doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, gx, gy, gw, gh, 0, m_Doc->toolSettings.dBrush, m_Doc->toolSettings.dPen, true); PageItem *neu = m_Doc->Items->takeAt(z); m_Doc->Items->insert(lowestItem, neu); neu->Groups.push(m_Doc->GroupCounter); neu->setItemName( tr("Group%1").arg(neu->Groups.top())); neu->isGroupControl = true; neu->groupsLastItem = high; neu->setTextFlowMode(PageItem::TextFlowDisabled); for (int a = 0; a < m_Doc->Items->count(); ++a) { m_Doc->Items->at(a)->ItemNr = a; } Elements.prepend(neu); m_Doc->GroupCounter++; } } m_Doc->DoDrawing = true; m_Doc->scMW()->setScriptRunning(false); m_Doc->setLoading(false); qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); if ((Elements.count() > 0) && (!ret) && (interactive)) { if (flags & LoadSavePlugin::lfScripted) { bool loadF = m_Doc->isLoading(); m_Doc->setLoading(false); m_Doc->changed(); m_Doc->setLoading(loadF); m_Doc->m_Selection->delaySignalsOn(); for (int dre=0; dre<Elements.count(); ++dre) { m_Doc->m_Selection->addItem(Elements.at(dre), true); } m_Doc->m_Selection->delaySignalsOff(); m_Doc->m_Selection->setGroupRect(); m_Doc->view()->updatesOn(true); } else { m_Doc->DragP = true; m_Doc->DraggedElem = 0; m_Doc->DragElements.clear(); m_Doc->m_Selection->delaySignalsOn(); for (int dre=0; dre<Elements.count(); ++dre) { m_Doc->DragElements.append(Elements.at(dre)->ItemNr); tmpSel->addItem(Elements.at(dre), true); } tmpSel->setGroupRect(); ScriXmlDoc *ss = new ScriXmlDoc(); ScElemMimeData* md = new ScElemMimeData(); md->setScribusElem(ss->WriteElem(m_Doc, m_Doc->view(), tmpSel)); delete ss; /*#ifndef Q_WS_MAC*/ // see #2196 m_Doc->itemSelection_DeleteItem(tmpSel); /*#else qDebug("xfigimport: leaving items on page"); #endif*/ m_Doc->view()->updatesOn(true); m_Doc->m_Selection->delaySignalsOff(); // We must copy the TransationSettings object as it is owned // by handleObjectImport method afterwards TransactionSettings* transacSettings = new TransactionSettings(trSettings); m_Doc->view()->handleObjectImport(md, transacSettings); m_Doc->DragP = false; m_Doc->DraggedElem = 0; m_Doc->DragElements.clear(); } } else { m_Doc->changed(); m_Doc->reformPages(); m_Doc->view()->updatesOn(true); } success = true; } else { QDir::setCurrent(CurDirP); m_Doc->DoDrawing = true; m_Doc->scMW()->setScriptRunning(false); m_Doc->view()->updatesOn(true); qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); } if (interactive) m_Doc->setLoading(false); //CB If we have a gui we must refresh it if we have used the progressbar if ((showProgress) && (!interactive)) m_Doc->view()->DrawNew(); return success; }