void GLC_CuttingPlane::create3DviewInstance() { Q_ASSERT(GLC_3DWidget::isEmpty()); // The cutting plane material GLC_Material* pMaterial= new GLC_Material(m_Color); pMaterial->setOpacity(m_Opacity); // Cutting plane 3Dview instance GLC_3DViewInstance cuttingPlaneInstance= GLC_Factory::instance()->createCuttingPlane(m_Center, m_Normal, m_L1, m_L2, pMaterial); GLC_3DWidget::add3DViewInstance(cuttingPlaneInstance); // Normal arrow geometry GLC_Arrow* pArrow= new GLC_Arrow(GLC_Point3d(), -glc::Z_AXIS, GLC_3DWidget::widgetManagerHandle()->cameraHandle()->forward().normalize()); pArrow->setLineWidth(4.5); pArrow->setHeadLength(0.15); QColor arrowColor(Qt::red); arrowColor.setAlphaF(0.4); pArrow->setWireColor(arrowColor); //Base arrow disc pMaterial= new GLC_Material(Qt::red); pMaterial->setOpacity(m_Opacity); GLC_Disc* pDisc= new GLC_Disc(0.3); pDisc->replaceMasterMaterial(pMaterial); // Normal arrow + base instance GLC_3DRep normalLine(pArrow); normalLine.addGeom(pDisc); GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(normalLine)); GLC_3DWidget::set3DViewInstanceVisibility(1, false); // Rotation manipulator const double initRadius= 1; // Arrond X axis pDisc= new GLC_Disc(initRadius); pMaterial= new GLC_Material(Qt::red); pMaterial->setOpacity(m_Opacity); pDisc->replaceMasterMaterial(pMaterial); pDisc->setAngle(glc::PI); GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc)); GLC_3DWidget::set3DViewInstanceVisibility(2, false); // Arround Y axis pDisc= new GLC_Disc(initRadius); pMaterial= new GLC_Material(Qt::green); pMaterial->setOpacity(m_Opacity); pDisc->replaceMasterMaterial(pMaterial); pDisc->setAngle(glc::PI); GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc)); GLC_3DWidget::set3DViewInstanceVisibility(3, false); // Arround Z axis pDisc= new GLC_Disc(initRadius); pMaterial= new GLC_Material(Qt::blue); pMaterial->setOpacity(m_Opacity); pDisc->replaceMasterMaterial(pMaterial); //pDisc->setAngle(glc::PI / 2.0); GLC_3DWidget::add3DViewInstance(GLC_3DViewInstance(pDisc)); GLC_3DWidget::set3DViewInstanceVisibility(4, false); }
MSAttrValueList& MSArrowButton::get(MSAttrValueList& avList_) { MSStringVector typeVector("MSArrow::Left\nMSArrow::Right\nMSArrow::Up\nMSArrow::Down"); avList_<<MSAttrValue("activate","",MSAttrValue::Callback); avList_<<MSAttrValue("type",typeVector(type()),typeVector); avList_<<MSAttrValue("repeatThreshold",MSString(repeatThreshold())); avList_<<MSAttrValue("repeatInterval",MSString(repeatInterval())); avList_<<MSAttrValue("arrowColor",server()->colorName(arrowColor()),MSAttrValue::Color); return MSWidgetCommon::get(avList_); }
void MSArrowButton::set(MSAttrValueList& avList_) { MSWidgetCommon::set(avList_); MSIndexVector index; for (unsigned i=0;i<avList_.length();i++) { if (avList_[i].attribute()=="type") { MSStringVector typeVector("MSArrow::Left\nMSArrow::Right\nMSArrow::Up\nMSArrow::Down"); int t=typeVector.indexOf(avList_[i].value()); if(t!=typeVector.length()) type((MSArrow::ArrowType)t); index<<i; } else if(avList_[i].attribute()=="repeatThreshold") repeatThreshold(avList_[i].value().asInt()),index<<i; else if(avList_[i].attribute()=="repeatInterval") repeatInterval(avList_[i].value().asInt()),index<<i; else if(avList_[i].attribute()=="arrowColor") arrowColor(avList_[i].value()),index<<i; } avList_.remove(index); }
void GradientLine::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter p(this); if (!isEnabled()) { p.setBrush(Qt::NoBrush); p.setPen(QColor(0x444444)); p.drawRect(9, 31, width() - 14, height() - 32); p.drawTiledPixmap(10, 32, width() - 16, height() - 34, tilePixMap(8)); } else { QLinearGradient linearGradient(QPointF(0, 0), QPointF(width(), 0)); for (int i =0; i < m_stops.size(); i++) linearGradient.setColorAt(m_stops.at(i), m_colorList.at(i)); p.setBrush(Qt::NoBrush); p.setPen(QColor(0x444444)); p.drawRect(9, 31, width() - 14, height() - 32); p.drawTiledPixmap(9, 31, width() - 16, height() - 34, tilePixMap(8)); p.setBrush(linearGradient); p.setPen(QColor(0x222222)); p.drawRect(8, 30, width() - 14, height() - 32); p.setPen(QColor(255, 255, 255, 40)); p.drawRect(9, 31, width() - 16, height() - 34); p.setPen(Qt::black); for (int i =0; i < m_colorList.size(); i++) { int localYOffset = 0; QColor arrowColor(Qt::black); if (i == currentColorIndex()) { localYOffset = m_yOffset; arrowColor = QColor(0x909090); } p.setPen(arrowColor); if (i == 0 || i == (m_colorList.size() - 1)) localYOffset = 0; int pos = qreal((width() - 16)) * m_stops.at(i) + 9; p.setBrush(arrowColor); QVector<QPointF> points; if (localYOffset < -8) p.setOpacity(0.5); points.append(QPointF(pos + 0.5, 28.5 + localYOffset)); //triangle points.append(QPointF(pos - 3.5, 22.5 + localYOffset)); points.append(QPointF(pos + 4.5, 22.5 + localYOffset)); p.setRenderHint(QPainter::Antialiasing, true); p.drawPolygon(points); p.setRenderHint(QPainter::Antialiasing, false); p.setBrush(Qt::NoBrush); p.setPen(QColor(0x424242)); p.drawRect(pos - 4, 9 + localYOffset, 10, 11); p.drawTiledPixmap(pos - 4, 9 + localYOffset, 9, 10, tilePixMap(5)); p.setPen(QColor(0x424242)); p.setBrush(m_colorList.at(i)); p.drawRect(pos - 5, 8 + localYOffset, 10, 11); p.setBrush(Qt::NoBrush); p.setPen(QColor(255, 255, 255, 30)); p.drawRect(pos - 4, 9 + localYOffset, 8, 9); p.setOpacity(1); } } }
void MSArrowButton::arrowColor(const char *color_) { arrowColor(server()->pixel(color_)); }