void KisCustomBrushWidget::slotAddPredefined() { // Save in the directory that is likely to be: ~/.kde/share/apps/krita/brushes // a unique file with this brushname QString dir = KGlobal::dirs()->saveLocation("data", "krita/brushes"); QString extension; if (brushStyle->currentIndex() == 0) { extension = ".gbr"; } else { extension = ".gih"; } QString name = nameLineEdit->text(); QString tempFileName; { QFileInfo fileInfo; fileInfo.setFile(dir + name + extension); int i = 1; while (fileInfo.exists()) { fileInfo.setFile(dir + name + QString("%1").arg(i) + extension); i++; } tempFileName = fileInfo.filePath(); } // Add it to the brush server, so that it automatically gets to the mediators, and // so to the other brush choosers can pick it up, if they want to if (m_rServerAdapter) { KisGbrBrush * resource = static_cast<KisGbrBrush*>( m_brush.data() )->clone(); resource->setFilename(tempFileName); if (nameLineEdit->text().isEmpty()){ resource->setName(QDateTime::currentDateTime().toString("yyyy-MM-ddThh:mm")); }else{ resource->setName( name ); } if (colorAsMask->isChecked()){ resource->makeMaskImage(); } m_rServerAdapter->addResource( resource ); } }
void setText(const QString &text, const QFont &font) { m_text = text; m_charIndex = 0; clear(); for (int i = 0; i < m_text.length(); i++) { QChar letter = m_text.at(i); QImage image = renderChar(letter, font); KisGbrBrush *brush = new KisGbrBrush(image, letter); brush->setSpacing(0.1); // support for letter spacing? brush->makeMaskImage(); m_brushesMap.insert(letter, brush); KisBrushesPipe<KisGbrBrush>::addBrush(brush); } }