本文整理汇总了C++中QSGGeometry::setLineWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ QSGGeometry::setLineWidth方法的具体用法?C++ QSGGeometry::setLineWidth怎么用?C++ QSGGeometry::setLineWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSGGeometry
的用法示例。
在下文中一共展示了QSGGeometry::setLineWidth方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QSGGeometry
QSGNode *PhosphorRender::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
if (!m_ybuffer) {
return 0;
}
QSGGeometryNode *node = 0;
QSGGeometry *geometry = 0;
Material *material = 0;
unsigned n_points;
if (m_xbuffer) {
n_points = std::min(m_xbuffer->size(), m_ybuffer->size());
} else {
n_points = m_ybuffer->countPointsBetween(m_xmin, m_xmax);
}
n_points = std::min(n_points,(unsigned) 65767);
if (!oldNode) {
node = new QSGGeometryNode;
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), n_points);
geometry->setDrawingMode(GL_POINTS);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
material = new Material;
material->setFlag(QSGMaterial::Blending);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
} else {
node = static_cast<QSGGeometryNode *>(oldNode);
geometry = node->geometry();
geometry->allocate(n_points);
geometry->setLineWidth(m_pointSize);
material = static_cast<Material*>(node->material());
}
QRectF bounds = boundingRect();
material->transformation.setToIdentity();
material->transformation.scale(bounds.width()/(m_xmax - m_xmin), bounds.height()/(m_ymin - m_ymax));
material->transformation.translate(-m_xmin, -m_ymax);
material->pointSize = m_pointSize;
material->color = m_color;
auto verticies = geometry->vertexDataAsPoint2D();
if (m_xbuffer) {
for (unsigned i=0; i<n_points; i++) {
verticies[i].set(m_xbuffer->get(i), m_ybuffer->get(i));
}
} else {
m_ybuffer->toVertexData(m_xmin, m_xmax, verticies, n_points);
}
node->markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial);
return node;
}
示例2: QSGGeometry
//! [4]
QSGNode *BezierCurve::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
QSGGeometryNode *node = 0;
QSGGeometry *geometry = 0;
if (!oldNode) {
node = new QSGGeometryNode;
//! [4] //! [5]
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), m_segmentCount);
geometry->setLineWidth(2);
geometry->setDrawingMode(GL_LINE_STRIP);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
//! [5] //! [6]
QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(QColor(255, 0, 0));
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
//! [6] //! [7]
} else {
node = static_cast<QSGGeometryNode *>(oldNode);
geometry = node->geometry();
geometry->allocate(m_segmentCount);
}
//! [7]
//! [8]
QRectF bounds = boundingRect();
QSGGeometry::Point2D *vertices = geometry->vertexDataAsPoint2D();
for (int i = 0; i < m_segmentCount; ++i) {
qreal t = i / qreal(m_segmentCount - 1);
qreal invt = 1 - t;
QPointF pos = invt * invt * invt * m_p1
+ 3 * invt * invt * t * m_p2
+ 3 * invt * t * t * m_p3
+ t * t * t * m_p4;
float x = bounds.x() + pos.x() * bounds.width();
float y = bounds.y() + pos.y() * bounds.height();
vertices[i].set(x, y);
}
node->markDirty(QSGNode::DirtyGeometry);
//! [8]
//! [9]
return node;
}
示例3: DrawLine
void SceneGraphDeviceContext::DrawLine(int x1, int y1, int x2, int y2)
{
vrv::Pen currentPen = m_penStack.top();
QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(translate(currentPen.GetWidth()));
geometry->vertexDataAsPoint2D()[0].set(translateX(x1), translateY(y1));
geometry->vertexDataAsPoint2D()[1].set(translateX(x2), translateY(y2));
QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(static_cast<QRgb>(currentPen.GetColour()));
QSGGeometryNode *node = new QSGGeometryNode;
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
AddGeometryNode(node);
}
示例4: p
QSGNode *QPScrollingCurve::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *)
{
QSGGeometryNode *node = 0;
QSGGeometry *geometry = 0;
QSGFlatColorMaterial *material = 0;
if (!oldNode) {
node = new QSGGeometryNode;
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), m_data.size());
geometry->setLineWidth(2);
geometry->setDrawingMode(GL_LINE_STRIP);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
material = new QSGFlatColorMaterial;
material->setColor(m_color);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
node->markDirty(QSGNode::DirtyMaterial);
} else {
node = static_cast<QSGGeometryNode *>(oldNode);
geometry = node->geometry();
geometry->allocate(m_data.size());
material = static_cast<QSGFlatColorMaterial*>(node->material());
if (material->color() != m_color) {
material->setColor(m_color);
node->markDirty(QSGNode::DirtyMaterial);
}
}
QSGGeometry::Point2D *vertices = geometry->vertexDataAsPoint2D();
for (uint i = 0; i < m_data.size(); ++i) {
QPointF p(i, m_data[i]);
vertices[i].set(p.x(), p.y());
}
node->markDirty(QSGNode::DirtyGeometry);
return node;
}
示例5: drawRect
QSGNode* drawRect(const QRect& rect, QSGNode* oldNode)
{
QSGGeometryNode* node;
if (oldNode == nullptr)
{
node = new QSGGeometryNode;
QSGGeometry* geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 8);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(1);
QSGFlatColorMaterial* material = new QSGFlatColorMaterial;
material->setColor(QGuiApplication::palette().color(QPalette::Normal, QPalette::WindowText));
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
}
else
{
node = static_cast<QSGGeometryNode*>(oldNode);
}
QSGGeometry* geometry = node->geometry();
// FIXME: check if these really have to be updated
geometry->vertexDataAsPoint2D()[0].set(rect.topLeft().x(), rect.topLeft().y());
geometry->vertexDataAsPoint2D()[1].set(rect.topRight().x(), rect.topRight().y());
geometry->vertexDataAsPoint2D()[2].set(rect.topRight().x(), rect.topRight().y());
geometry->vertexDataAsPoint2D()[3].set(rect.bottomRight().x(), rect.bottomRight().y());
geometry->vertexDataAsPoint2D()[4].set(rect.bottomRight().x(), rect.bottomRight().y());
geometry->vertexDataAsPoint2D()[5].set(rect.bottomLeft().x(), rect.bottomLeft().y());
geometry->vertexDataAsPoint2D()[6].set(rect.bottomLeft().x(), rect.bottomLeft().y());
geometry->vertexDataAsPoint2D()[7].set(rect.topLeft().x(), rect.topLeft().y());
node->markDirty(QSGNode::DirtyGeometry);
return node;
}
示例6: QSGGeometry
QSGGeometry *NotesGeometry::createGeometry(QVector<int> &ids, const TimelineModel *model,
const TimelineRenderState *parentState, bool collapsed)
{
float rowHeight = TimelineModel::defaultRowHeight();
QSGGeometry *geometry = new QSGGeometry(point2DWithDistanceFromTop(),
ids.count() * 2);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(3);
Point2DWithDistanceFromTop *v =
static_cast<Point2DWithDistanceFromTop *>(geometry->vertexData());
for (int i = 0; i < ids.count(); ++i) {
int timelineIndex = ids[i];
float horizontalCenter = ((model->startTime(timelineIndex) +
model->endTime(timelineIndex)) / (qint64)2 -
parentState->start()) * parentState->scale();
float verticalStart = (collapsed ? (model->collapsedRow(timelineIndex) + 0.1) : 0.1) *
rowHeight;
float verticalEnd = verticalStart + 0.8 * rowHeight;
v[i * 2].set(horizontalCenter, verticalStart, 0);
v[i * 2 + 1].set(horizontalCenter, verticalEnd, 1);
}
return geometry;
}
示例7: boundingRect
QSGNode * DataSetView::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
if (width() <= 0 || height() <= 0) {
delete oldNode;
return 0;
}
//if(recalculateCellSizes) calculateCellContentSizes();
const QRectF rect = boundingRect();
const int linesPerNode = 1000; //Or something? should be multiple of 2 though
if(!oldNode)
oldNode = new QSGNode();
QSGGeometryNode * currentNode = static_cast<QSGGeometryNode*>(oldNode->firstChild());
for(int lineIndex=0; lineIndex<_lines.size();)
{
if(currentNode == NULL)
{
currentNode = new QSGGeometryNode;
currentNode->setFlag(QSGNode::OwnsMaterial, false);
currentNode->setFlag(QSGNode::OwnsGeometry, true);
currentNode->setMaterial(&material);
oldNode->appendChildNode(currentNode);
}
int geomSize = std::min(linesPerNode, (int)(_lines.size() - lineIndex));
geomSize *= 2;
QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), geomSize);
geometry->setLineWidth(1);
geometry->setDrawingMode(GL_LINES);
QSGGeometry::Point2D *points = geometry->vertexDataAsPoint2D();
for(int geomIndex=0; geomIndex<geomSize; geomIndex+=2)
{
points[geomIndex ].x = _lines[lineIndex].first.x() + rect.left();
points[geomIndex ].y = _lines[lineIndex].first.y() + rect.top();
points[geomIndex+1].x = _lines[lineIndex].second.x() + rect.left();
points[geomIndex+1].y = _lines[lineIndex].second.y() + rect.top();
lineIndex++;
}
currentNode->setGeometry(geometry);
currentNode = static_cast<QSGGeometryNode*>(currentNode->nextSibling());
}
std::queue<QSGGeometryNode*> killThem;
while(currentNode != NULL) //superfluous children! Lets kill em
{
killThem.push(currentNode);
currentNode = static_cast<QSGGeometryNode*>(currentNode->nextSibling());
}
while(killThem.size() > 0)
{
QSGGeometryNode * childToDie = killThem.front();
killThem.pop();
delete childToDie;
}
return oldNode;
}
示例8: QSGGeometry
QSGNode *GraphConnection::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
if (m_source == m_sink)
return oldNode;
QSGGeometryNode *node = 0;
QSGGeometry *geometry = 0;
QPointF p1, p2, p3, p4;
p1.setX(m_source.x());
p1.setY(m_source.y());
p4.setX(m_sink.x());
p4.setY(m_sink.y());
p2.setX(p1.x());
p3.setX(p4.x());
if (p1.y() < p4.y()) {
p2.setY(p1.y() * 0.75 + p4.y() * 0.25);
p3.setY(p4.y() * 0.75 + p1.y() * 0.25);
} else {
p2.setY(p1.y() - (p4.y()-p1.y())*0.25);
p3.setY(p4.y() + (p4.y()-p1.y())*0.25);
}
// quick 'n' dirty estimation of bezier length
// http://steve.hollasch.net/cgindex/curves/cbezarclen.html
qreal l1 = (QVector2D(p2)-QVector2D(p1)).length() +
(QVector2D(p3)-QVector2D(p2)).length() +
(QVector2D(p4)-QVector2D(p3)).length();
qreal l0 = (QVector2D(p4)-QVector2D(p1)).length();
qreal length = 0.5*l0 + 0.5*l1;
int segmentCount = length;
if (!oldNode) {
node = new QSGGeometryNode;
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), segmentCount);
geometry->setLineWidth(2);
geometry->setDrawingMode(GL_LINE_STRIP);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(QColor(0, 0, 0));
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
} else {
node = static_cast<QSGGeometryNode *>(oldNode);
geometry = node->geometry();
geometry->allocate(segmentCount);
}
QRectF bounds = boundingRect();
QSGGeometry::Point2D *vertices = geometry->vertexDataAsPoint2D();
for (int i = 0; i < segmentCount; ++i) {
qreal t = i / qreal(segmentCount - 1);
qreal invt = 1 - t;
// Bezier
QPointF pos = invt * invt * invt * p1
+ 3 * invt * invt * t * p2
+ 3 * invt * t * t * p3
+ t * t * t * p4;
float x = pos.x();
float y = pos.y();
vertices[i].set(x, y);
}
return node;
}