ModelItemGraphics::ModelItemGraphics(const QPointF& Coords, const QString& ID, QGraphicsItem* Parent): QGraphicsRectItem(Coords.x(),Coords.y(),m_DefaultSize.width(),m_DefaultSize.height(),Parent), m_ID(ID), m_Ghost(false), m_Initialized(false) { setPen(QPen(QBrush(QColor(BUILDER_MODELVIEW_BORDERCOLOR)),2)); setFlag(QGraphicsItem::ItemIsMovable); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setCursor(QCursor(Qt::OpenHandCursor)); // Model item ID QGraphicsSimpleTextItem* IDGraphics = new QGraphicsSimpleTextItem(ID,Parent); IDGraphics->setParentItem(this); QFont TmpFont = IDGraphics->font(); TmpFont.setPointSize(10); IDGraphics->setFont(TmpFont); QRectF IDRect = IDGraphics->boundingRect(); if (rect().width() < IDRect.width()+20) setRect(Coords.x(),Coords.y(),IDRect.width()+20,m_DefaultSize.height()); IDGraphics->setPos((rect().width()/2)-(IDRect.width()/2),(m_DefaultSize.height()/2)-(IDRect.height()/2)); }
QGraphicsItem* TextContent::createGraphicsItem(const QRectF& rect) { QFile file(_url); if(!file.open(QIODevice::ReadOnly)) throw 0; int rectHeight = rect.height(); QTextStream in(&file); QString text (in.readAll()); QGraphicsSimpleTextItem* item = new QGraphicsSimpleTextItem(); // measuring text QFont newFont( item->font() ); newFont.setStyleStrategy( QFont::OpenGLCompatible ); int textSize = 0; int textHeightInPixels = 1; while(textHeightInPixels < rectHeight) { ++textSize; newFont.setPointSize(textSize); QFontMetrics fm(newFont); fm.width(text); textHeightInPixels = fm.height(); } newFont.setPointSize( textSize-1 ); item->setFont( newFont ); item->setText( text ); return item; }
SubdRepresentation::SubdRepresentation(Rectangle rect, Crop& crop, QDate date) : rect(rect), crop(crop) { this->setRect(get_rect().get_x(), - get_rect().get_y() - get_rect().get_height(), get_rect().get_width(), get_rect().get_height()); if (crop) { Plant& plant = crop.get_plant(); QString text = toQString(plant.get_name()); //text = re.sub("\s+", "\n", text) QGraphicsSimpleTextItem *textw = new QGraphicsSimpleTextItem(text); QFont font = textw->font(); font.setPointSize(6); font.setWeight(25); textw->setFont(font); center_text(textw, this->boundingRect()); textw->setParentItem(this); QString color_str = toQString(plant.get_color_str()); if (color_str == "") { color_str = "#FF00FF"; } QColor color = QColor(color_str); if (crop.is_planned_at_date(fromQDate(date)) && !crop.is_active_at_date(fromQDate(date))) { this->setBrush(QBrush(color, Qt::BDiagPattern)); } else { this->setBrush(QBrush(color)); } } }
void EffectItemBase::createText(const QString &text) { QGraphicsSimpleTextItem * textItem = new QGraphicsSimpleTextItem(text, this); QFont font = textItem->font(); font.setPointSize(FontSize); textItem->setFont(font); QRectF textBox = textItem->boundingRect(); QPointF offset = rect().center() - textBox.center(); textItem->translate(offset.x(), offset.y()); }
bool ZipplXmlReader::read( QIODevice *dev ) { setDevice( dev ); bool res = true; bool metaMode = false; mCurrParent = 0; mCurrSpot = 0; QGraphicsScene *scene = mGraphWidget->scene(); int spotID = 0; while (!atEnd()) { readNext(); if( isStartElement() ) { qDebug() << "XML name: " << name(); if( name() == "presentation") { // presentation mode: debug & presentation QString mode = attributes().value("mode").toString(); if( !mode.isEmpty() ) mMode = mode; mPath = attributes().value("path").toString(); if( !mPath.endsWith('/') ) mPath += "/"; qreal dx = qrealAttrib("width") / -2.0; qreal dy = qrealAttrib("height") / -2.0; QRectF rect( dx, dy, -2.0*dx, -2.0*dy ); scene->setSceneRect( rect ); } else if( name() == "meta" ) { metaMode = true; } else if( name() == "title" && metaMode ) { mPresentationTitle = readElementText(); } else if( name() == "description" && metaMode ) { mPresentationDescr = readElementText(); } else if( name() == "date" && metaMode ) { mPresentationDate = readElementText(); } else if( name() == "name" && metaMode ) { mAuthorName = readElementText(); } else if( name() == "email" && metaMode ) { mAuthorEmail = readElementText(); } else if( name() == "tocentry" ) { if( mCurrSpot ) { mCurrSpot->setData( TOCENTRY, readElementText() ); } } else if( name() == "spot" ) { if( mCurrParent != 0 ) { qDebug() << "Strange: Current Parent should be zero here!"; } QGraphicsRectItem *rectItem = new QGraphicsRectItem( ); rectItem->setPen( pen( rectItem->pen(), QColor("#aeaeae") )); mCurrParent = rectItem; mCurrSpot = rectItem; mCurrParent->setData( ID, QVariant( spotID++ )); mCurrParent->setPos( position() ); rectItem->setBrush( brush( rectItem->brush() ) ); scene->addItem( mCurrParent ); mSpots.append( mCurrParent ); // Prepare the hidden items list GraphicsItemList list; mHiddenItems.insert( mCurrParent, list ); } else if( name() == "hidden" ) { QGraphicsRectItem *rectItem = new QGraphicsRectItem( mCurrParent, scene ); rectItem->setPen( QPen( QColor( 240, 240, 240 ))); // append this hidden item to the list of hiddens of the parent spot. GraphicsItemList list = mHiddenItems[mCurrSpot]; list.append( rectItem ); mHiddenItems[mCurrSpot] = list; mCurrParent = rectItem; mCurrParent->setData( ID, QVariant( spotID++ )); } else if( name() == "rect" ) { if( mCurrParent ) { // within a spot qDebug() << "Creating a rectangle!"; QGraphicsRectItem *rectItem = new QGraphicsRectItem( mCurrParent, scene ); qreal width = qrealAttrib( "width" ); qreal height = qrealAttrib( "height" ); QPointF pos = position(); if( width > 0 && height > 0 ) { rectItem->setRect( pos.x(), pos.y(), width, height ); } else { rectItem->setPos( pos ); } rectItem->setPen( pen( rectItem->pen() ) ); mCurrParent = rectItem; } } else if( name() == "circle" ) { QPointF pos = position(); QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem( mCurrParent, scene ); // ellipse->setBrush( getBrush() ); qreal r = 2.0 * qrealAttrib( "r" ); QRectF rect( pos, QSizeF( r, r ) ); ellipse->setPen( pen( ellipse->pen() ) ); ellipse->setRect( rect ); } else if( name() == "text" ) { QGraphicsSimpleTextItem *textItem = new QGraphicsSimpleTextItem( mCurrParent, scene ); QString font = attributes().value("font").toString(); QString size = attributes().value("size").toString(); QFont currFont = textItem->font(); if( !font.isEmpty() ) { currFont.setFamily( font ); textItem->setFont( currFont ); } if( !size.isEmpty() ) { currFont.setPointSize( size.toInt() ); textItem->setFont( currFont ); } textItem->setPos( position() ); // set the brush QBrush b( textItem->brush() ); b.setColor( color() ); textItem->setBrush( b ); QString text = readElementText(); textItem->setText( text ); } else if( name() == "image" ) { if( handleImg( scene ) ) { } } } else if( isEndElement() ) { qDebug( ) << "XML CLOSE: " << name().toString(); if( name() == "spot" || name() == "toc" ) { QRectF rect = mCurrParent->childrenBoundingRect(); rect.setX(0); rect.setY(0); qgraphicsitem_cast<QGraphicsRectItem*>(mCurrParent)->setRect( rect); mCurrParent = 0; } else if( name() == "rect" ) { QGraphicsRectItem *item = qgraphicsitem_cast<QGraphicsRectItem*>(mCurrParent); if( item->rect().isEmpty() ) item->setRect( mCurrParent->childrenBoundingRect() ); mCurrParent = mCurrParent->parentItem(); } else if( name() == "hidden") { mCurrParent->setOpacity( 0.0 ); mCurrParent = mCurrParent->parentItem(); } else if( name() == "meta" ) { metaMode = false; } } } createToc( scene ); return res; }