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);
}
Example #2
0
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_);
}
Example #3
0
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);

}
Example #4
0
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);
        }
    }
}
Example #5
0
void MSArrowButton::arrowColor(const char *color_)
{ arrowColor(server()->pixel(color_)); }