void MainPageModelItem::setImages(const QStringList &images) { if( p->images == images ) return; p->images = images; emit imagesChanged(); }
void FontBuilder::on_comboBoxLayouter_currentIndexChanged(QString name) { if (name.isEmpty()) return; if (m_layouter) { delete m_layouter; m_layouter = 0; } m_layouter = m_layouter_factory->build(name,this); if (m_layouter) { m_layouter->setConfig(m_layout_config); m_layouter->setData(m_layout_data); connect(m_font_renderer,SIGNAL(imagesChanged(QVector<LayoutChar>)), m_layouter,SLOT(on_ReplaceImages(QVector<LayoutChar>))); m_layouter->on_ReplaceImages(m_font_renderer->rendered()); m_layout_config->setLayouter(name); } }
/*! \reimp */ void FacebookPhotoInterface::emitPropertyChangeSignals(const QVariantMap &oldData, const QVariantMap &newData) { QString aidStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_ALBUMIDENTIFIER).toString(); QVariantList tagsList = newData.value(FACEBOOK_ONTOLOGY_PHOTO_TAGS).toList(); QVariantMap fromMap = newData.value(FACEBOOK_ONTOLOGY_PHOTO_FROM).toMap(); QString nameStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_NAME).toString(); QVariantMap ntMap = newData.value(FACEBOOK_ONTOLOGY_PHOTO_NAMETAGS).toMap(); QString iconStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_ICON).toString(); QString picStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_PICTURE).toString(); QString srcStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_SOURCE).toString(); QString heightInt = newData.value(FACEBOOK_ONTOLOGY_PHOTO_HEIGHT).toString(); QString widthInt = newData.value(FACEBOOK_ONTOLOGY_PHOTO_WIDTH).toString(); QVariantMap imgsMap = newData.value(FACEBOOK_ONTOLOGY_PHOTO_IMAGES).toMap(); QString linkStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_LINK).toString(); QVariantMap placeMap = newData.value(FACEBOOK_ONTOLOGY_PHOTO_PLACE).toMap(); // XXX TODO: Location/Place object reference QString ctStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_CREATEDTIME).toString(); QString utStr = newData.value(FACEBOOK_ONTOLOGY_PHOTO_UPDATEDTIME).toString(); QString posInt = newData.value(FACEBOOK_ONTOLOGY_PHOTO_POSITION).toString(); QString likedBool = newData.value(FACEBOOK_ONTOLOGY_PHOTO_LIKED).toString(); QString oldAidStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_ALBUMIDENTIFIER).toString(); QVariantList oldTagsList = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_TAGS).toList(); QVariantMap oldFromMap = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_FROM).toMap(); QString oldNameStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_NAME).toString(); QVariantMap oldNtMap = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_NAMETAGS).toMap(); QString oldIconStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_ICON).toString(); QString oldPicStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_PICTURE).toString(); QString oldSrcStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_SOURCE).toString(); QString oldHeightInt = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_HEIGHT).toString(); QString oldWidthInt = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_WIDTH).toString(); QVariantMap oldImgsMap = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_IMAGES).toMap(); QString oldLinkStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_LINK).toString(); QVariantMap oldPlaceMap = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_PLACE).toMap(); // XXX TODO: Location/Place object reference QString oldCtStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_CREATEDTIME).toString(); QString oldUtStr = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_UPDATEDTIME).toString(); QString oldPosInt = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_POSITION).toString(); QString oldLikedBool = oldData.value(FACEBOOK_ONTOLOGY_PHOTO_LIKED).toString(); if (aidStr != oldAidStr) emit albumIdentifierChanged(); if (nameStr != oldNameStr) emit nameChanged(); if (ntMap != oldNtMap) emit nameTagsChanged(); if (iconStr != oldIconStr) emit iconChanged(); if (picStr != oldPicStr) emit pictureChanged(); if (srcStr != oldSrcStr) emit sourceChanged(); if (heightInt != oldHeightInt) emit heightChanged(); if (widthInt != oldWidthInt) emit widthChanged(); if (imgsMap != oldImgsMap) emit imagesChanged(); if (linkStr != oldLinkStr) emit linkChanged(); if (placeMap != oldPlaceMap) emit placeChanged(); if (ctStr != oldCtStr) emit createdTimeChanged(); if (utStr != oldUtStr) emit updatedTimeChanged(); if (posInt != oldPosInt) emit positionChanged(); if (likedBool != oldLikedBool) { f->liked = likedBool == QLatin1String("true"); emit likedChanged(); } // update tags list if (tagsList != oldTagsList) { // clear the old tags foreach (FacebookTagInterface *doomedTag, f->tags) doomedTag->deleteLater(); f->tags.clear(); // update with the new tag data for (int i = 0; i < tagsList.size(); ++i) { QVariantMap currTagMap = tagsList.at(i).toMap(); currTagMap.insert(FACEBOOK_ONTOLOGY_TAG_TARGETIDENTIFIER, identifier()); FacebookTagInterface *currTag = new FacebookTagInterface(f); qobject_cast<FacebookInterface*>(socialNetwork())->setFacebookContentItemData(currTag, currTagMap); f->tags.append(currTag); } // emit change signal emit tagsChanged(); } // update from reference if (fromMap != oldFromMap) { QVariantMap newFromData; newFromData.insert(FACEBOOK_ONTOLOGY_OBJECTREFERENCE_OBJECTTYPE, FacebookInterface::User); // could also be a Profile ... newFromData.insert(FACEBOOK_ONTOLOGY_OBJECTREFERENCE_OBJECTIDENTIFIER, fromMap.value(FACEBOOK_ONTOLOGY_OBJECTREFERENCE_OBJECTIDENTIFIER)); newFromData.insert(FACEBOOK_ONTOLOGY_OBJECTREFERENCE_OBJECTNAME, fromMap.value(FACEBOOK_ONTOLOGY_OBJECTREFERENCE_OBJECTNAME)); qobject_cast<FacebookInterface*>(socialNetwork())->setFacebookContentItemData(f->from, newFromData); emit fromChanged(); } // call the super class implementation IdentifiableContentItemInterface::emitPropertyChangeSignals(oldData, newData); }
void FontRenderer::rasterize() { clear_bitmaps(); if (!m_ft_face) { return; } qDebug() << " begin rasterize_font "; if (m_config->italic()!=0) { FT_Matrix matrix; const float angle = (-M_PI*m_config->italic()) / 180.0f; matrix.xx = (FT_Fixed)( cos( angle ) * 0x10000L ); matrix.xy = (FT_Fixed)(-sin( angle ) * 0x10000L ); matrix.yx = (FT_Fixed)( 0/*sin( angle )*/ * 0x10000L ); matrix.yy = (FT_Fixed)( 1/*cos( angle )*/ * 0x10000L ); FT_Set_Transform(m_ft_face,&matrix,0); } else { FT_Set_Transform(m_ft_face,0,0); } /// fill metrics if (FT_IS_SCALABLE(m_ft_face)) { m_rendered.metrics.ascender = m_ft_face->size->metrics.ascender / 64; m_rendered.metrics.descender = m_ft_face->size->metrics.descender/ 64; m_rendered.metrics.height = m_ft_face->size->metrics.height/ 64; } else { m_rendered.metrics.ascender = m_ft_face->ascender; m_rendered.metrics.descender = m_ft_face->descender; m_rendered.metrics.height = m_ft_face->height; } bool use_kerning = FT_HAS_KERNING( m_ft_face ); const ushort* chars = m_config->characters().utf16(); size_t amount = 0; while (chars[amount]!=0) amount++; int error = 0; for (size_t i=0;i<amount;i++) { int glyph_index = FT_Get_Char_Index( m_ft_face, chars[i] ); if (glyph_index==0 && !m_config->renderMissing()) continue; FT_Int32 flags = FT_LOAD_DEFAULT; if (!m_config->antialiased()) { flags = flags | FT_LOAD_MONOCHROME | FT_LOAD_TARGET_MONO; } else { flags = flags | FT_LOAD_TARGET_NORMAL; } switch (m_config->hinting()) { case FontConfig::HintingDisable: flags = flags | FT_LOAD_NO_HINTING | FT_LOAD_NO_AUTOHINT; break; case FontConfig::HintingForceFreetypeAuto: flags = flags | FT_LOAD_FORCE_AUTOHINT; break; case FontConfig::HintingDisableFreetypeAuto: flags = flags | FT_LOAD_NO_AUTOHINT; break; default: break; } error = FT_Load_Glyph( m_ft_face, glyph_index, flags ); if ( error ) continue; if (m_config->bold()!=0) { FT_Pos strength = m_config->size()*m_config->bold(); if ( m_ft_face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) FT_Outline_Embolden( &m_ft_face->glyph->outline, strength ); } if (m_ft_face->glyph->format!=FT_GLYPH_FORMAT_BITMAP) { error = FT_Render_Glyph( m_ft_face->glyph, m_config->antialiased() ? FT_RENDER_MODE_NORMAL:FT_RENDER_MODE_MONO ); } if ( error ) continue; if (append_bitmap(chars[i])) { if (use_kerning) append_kerning(chars[i],chars,amount); } } imagesChanged(m_chars); imagesChanged(); }
FontBuilder::FontBuilder(QWidget *parent) : QMainWindow(parent), ui(new Ui::FontBuilder), m_image_writer(0) { ui->setupUi(this); m_font_config = new FontConfig(this); bool font_config_block = m_font_config->blockSignals(true); connect(m_font_config,SIGNAL(nameChanged()),this,SLOT(onFontNameChanged())); connect(m_font_config,SIGNAL(sizeChanged()),this,SLOT(onFontNameChanged())); m_font_renderer = new FontRenderer(this,m_font_config); connect(m_font_renderer,SIGNAL(imagesChanged()),this,SLOT(onRenderedChanged())); m_layout_config = new LayoutConfig(this); m_layout_data = new LayoutData(this); connect(m_layout_data,SIGNAL(layoutChanged()),this,SLOT(onLayoutChanged())); m_layouter = 0; m_layouter_factory = new LayouterFactory(this); bool b = ui->comboBoxLayouter->blockSignals(true); ui->comboBoxLayouter->clear(); ui->comboBoxLayouter->addItems(m_layouter_factory->names()); m_output_config = new OutputConfig(this); QSettings settings("FontBuilder.ini", QSettings::IniFormat); QStringList loadList = settings.childGroups(); loadList.removeOne("default"); m_model = new QStringListModel(this); m_model->setStringList(loadList); ui->listView->setModel(m_model); ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers); settings.beginGroup("default"); restoreGeometry(settings.value("geometry").toByteArray()); readConfig(settings,"fontconfig",m_font_config); m_font_config->normalize(); readConfig(settings,"layoutconfig",m_layout_config); readConfig(settings,"outputconfig",m_output_config); ui->checkBoxDrawGrid->setChecked(settings.value("draw_grid").toBool()); settings.endGroup(); ui->widgetFontPreview->setDrawGrid(ui->checkBoxDrawGrid->isChecked()); connect(ui->checkBoxDrawGrid,SIGNAL(toggled(bool)),this,SLOT(on_checkBoxDrawGrid_toggled(bool))); ui->frameCharacters->setConfig(m_font_config); ui->frameFontOptions->setConfig(m_font_config); if (!m_layout_config->layouter().isEmpty()) { for (int i=0;i<ui->comboBoxLayouter->count();i++) if (ui->comboBoxLayouter->itemText(i)==m_layout_config->layouter()) ui->comboBoxLayouter->setCurrentIndex(i); } ui->frameLayoutConfig->setConfig(m_layout_config); m_exporter_factory = new ExporterFactory(this); ui->frameOutput->setExporters(m_exporter_factory->names()); m_image_writer_factory = new ImageWriterFactory(this); ui->frameOutput->setImageWriters(m_image_writer_factory->names()); ui->frameOutput->setChnlTypes( QStringList() <<"Alpha" << "RGB"); ui->comboBoxLayouter->blockSignals(b); this->on_comboBoxLayouter_currentIndexChanged( ui->comboBoxLayouter->currentText()); ui->frameOutput->setConfig(m_output_config); m_font_renderer->renderAs(m_output_config->chnlType(), false); ui->frameFontSelect->setConfig(m_font_config, true); ui->fontTestFrame->setLayoutData(m_layout_data); ui->fontTestFrame->setRendererData(&m_font_renderer->data()); ui->fontTestFrame->setFontConfig(m_font_config); ui->widgetFontPreview->setLayoutData(m_layout_data); ui->widgetFontPreview->setRendererData(&m_font_renderer->data()); ui->widgetFontPreview->setLayoutConfig(m_layout_config); m_font_config->blockSignals(font_config_block); m_font_config->emmitChange(); connect(m_font_config,SIGNAL(spacingChanged()),this,SLOT(onSpacingChanged())); ui->fontTestFrame->refresh(); m_font_loader = new FontLoader(this); }