소스 검색

BUG: Don't draw any gradient if the transfer function is null

When the mask was ON and the transfer function was empty, a gradient was
still displayed...
Julien Finet 15 년 전
부모
커밋
d950e33b86
1개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 7 2
      Libs/Widgets/ctkTransferFunctionGradientItem.cpp

+ 7 - 2
Libs/Widgets/ctkTransferFunctionGradientItem.cpp

@@ -33,6 +33,7 @@
 #include "ctkTransferFunctionRepresentation.h"
 #include "ctkTransferFunctionRepresentation.h"
 #include "ctkTransferFunctionScene.h"
 #include "ctkTransferFunctionScene.h"
 
 
+//-----------------------------------------------------------------------------
 class ctkTransferFunctionGradientItemPrivate:public ctkPrivate<ctkTransferFunctionGradientItem>
 class ctkTransferFunctionGradientItemPrivate:public ctkPrivate<ctkTransferFunctionGradientItem>
 {
 {
 public:
 public:
@@ -40,6 +41,7 @@ public:
   bool Mask;
   bool Mask;
 };
 };
 
 
+//-----------------------------------------------------------------------------
 ctkTransferFunctionGradientItemPrivate::ctkTransferFunctionGradientItemPrivate()
 ctkTransferFunctionGradientItemPrivate::ctkTransferFunctionGradientItemPrivate()
 {
 {
   this->Mask = true;
   this->Mask = true;
@@ -70,6 +72,10 @@ void ctkTransferFunctionGradientItem::paint(
   Q_UNUSED(option);
   Q_UNUSED(option);
   Q_UNUSED(widget);
   Q_UNUSED(widget);
 
 
+  if (this->transferFunction()->count() <= 0)
+    {
+    return;
+    }
   //ctkTransferFunctionScene* tfScene = dynamic_cast<ctkTransferFunctionScene*>(this->scene());
   //ctkTransferFunctionScene* tfScene = dynamic_cast<ctkTransferFunctionScene*>(this->scene());
   //Q_ASSERT(tfScene);
   //Q_ASSERT(tfScene);
   ctkTransferFunctionRepresentation* tfRep = this->transferFunction()->representation();
   ctkTransferFunctionRepresentation* tfRep = this->transferFunction()->representation();
@@ -78,8 +84,7 @@ void ctkTransferFunctionGradientItem::paint(
 
 
   if ( this->mask() )
   if ( this->mask() )
     {
     {
-    const QPainterPath& curve = tfScene->curve();
-    QPainterPath closedPath = curve;
+    QPainterPath closedPath = tfRep->curve();
     QRectF position = this->rect();
     QRectF position = this->rect();
     // link to last point
     // link to last point
     closedPath.lineTo(position.x() + position.width(), position.y() + position.height());
     closedPath.lineTo(position.x() + position.width(), position.y() + position.height());