| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 | /*=========================================================================  Library:   CTK  Copyright (c) Kitware Inc.   All rights reserved.  Distributed under a BSD License. See LICENSE.txt file.  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the above copyright notice for more information.=========================================================================*/// Qt includes#include <QApplication>#include <QString>// CTK includes#include "ctkDoubleRangeSlider.h"// STD includes#include <cstdlib>#include <iostream>//-----------------------------------------------------------------------------bool checkSlider(const ctkDoubleRangeSlider& slider){  return slider.minimum()  <= slider.minimumValue() &&    slider.minimumValue() <= slider.maximumValue() &&    slider.maximumValue() <= slider.maximum();}//-----------------------------------------------------------------------------bool checkSlider(const ctkDoubleRangeSlider& slider,                 double min, double minVal, double maxVal, double max){  return qFuzzyCompare(slider.minimum(), min) &&    qFuzzyCompare(slider.minimumValue(), minVal) &&    qFuzzyCompare(slider.maximumValue(), maxVal) &&    qFuzzyCompare(slider.maximum(), max);}//-----------------------------------------------------------------------------bool checkSlider(const ctkDoubleRangeSlider& slider,                 double min, double minVal, double maxVal, double max, double minPos, double maxPos){  return qFuzzyCompare(slider.minimum(), min) &&    qFuzzyCompare(slider.minimumValue(), minVal) &&    qFuzzyCompare(slider.maximumValue(), maxVal) &&    qFuzzyCompare(slider.maximum(), max) &&    qFuzzyCompare(slider.minimumPosition(), minPos) &&    qFuzzyCompare(slider.maximumPosition(), maxPos);}//-----------------------------------------------------------------------------int ctkDoubleRangeSliderTest1(int argc, char * argv [] ){  QApplication app(argc, argv);  ctkDoubleRangeSlider slider;  if (!(slider.minimum()  <= slider.minimumValue() &&        slider.minimumValue() <= slider.maximumValue() &&        slider.maximumValue() <= slider.maximum() &&        slider.minimum() <= slider.minimumPosition() &&        slider.minimumPosition() <= slider.maximumPosition() &&        slider.maximumPosition() <= slider.maximum()))    {    std::cerr << "ctkDoubleRangeSlider:: 1) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 1) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setMinimum(10.10);  slider.setMaximum(3999.99);  slider.setValues(40.1, 20.4);  if (!checkSlider(slider, 10.10, 20.4, 40.1, 3999.99, 20.4, 40.1))    {    std::cerr << "ctkDoubleRangeSlider:: 2) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 2) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setValues(700.4, 20.99);  if (!checkSlider(slider, 10.1, 20.99, 700.4, 3999.99, 20.99, 700.4))    {    std::cerr << "ctkDoubleRangeSlider:: 3) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 3) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setValues(800, 900);  if (!checkSlider(slider, 10.1, 800, 900, 3999.99, 800, 900))    {    std::cerr << "ctkDoubleRangeSlider:: 4) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 4) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setValues(5000, 6000);  if (!checkSlider(slider, 10.1, 3999.99, 3999.99, 3999.99, 3999.99, 3999.99))    {    std::cerr << "ctkDoubleRangeSlider:: 5) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 5) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setRange(-15.21, 25.49999);  if (!checkSlider(slider, -15.21, 25.49999, 25.49999, 25.49999, 25.49999, 25.49999))    {    std::cerr << "ctkDoubleRangeSlider:: 6) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    return EXIT_FAILURE;    }  // nothing happen yet but it would be nice if it moves the 2 values at   // the same time.  slider.triggerAction(QAbstractSlider::SliderSingleStepSub);  if (!checkSlider(slider, -15.21, 25.49999, 25.49999, 25.49999, 25.49999, 25.49999))    {    std::cerr << "ctkDoubleRangeSlider:: 7) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 7) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setMaximumValue(10.2);  if (!checkSlider(slider, -15.21, 10.2, 10.2, 25.49999, 10.2, 10.2))    {    std::cerr << "ctkDoubleRangeSlider:: 8) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 8) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setMinimumValue(17.7777);  if (!checkSlider(slider, -15.21, 17.7777, 17.7777, 25.49999, 17.7777, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 9) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 9) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setMinimumValue(-20);  if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 10) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 10) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setSingleStep(0.15);  if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 10.5) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 10.5) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setSingleStep(0.33);  if (!checkSlider(slider, -15.21, -15.21, 17.7777, 25.49999, -15.21, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 11) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 11) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setMinimumValue(-15.205);  if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 12) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 12) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setSingleStep(1.);  if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 13) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 13) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  slider.setSingleStep(0.01);  if (!checkSlider(slider, -15.21, -15.205, 17.7777, 25.49999, -15.205, 17.7777))    {    std::cerr << "ctkDoubleRangeSlider:: 14) "              << slider.minimum() << " "               << slider.minimumValue() << " "               << slider.maximumValue() << " "               << slider.maximum() << std::endl;    std::cerr << "ctkDoubleRangeSlider:: 14) "              << slider.minimumPosition() << " "               << slider.maximumPosition() << std::endl;    return EXIT_FAILURE;    }  // FIXME  //slider.setPositions(0.1, 20.5);  // if (!checkSlider(slider, -15.21, 0.1, 20.5, 25.49999, 0.1, 20.5))  //   {  //   std::cerr << "ctkDoubleRangeSlider:: 15) "  //             << slider.minimum() << " "   //             << slider.minimumValue() << " "   //             << slider.maximumValue() << " "   //             << slider.maximum() << std::endl;  //   std::cerr << "ctkDoubleRangeSlider:: 15) "  //             << slider.minimumPosition() << " "   //             << slider.maximumPosition() << std::endl;  //   return EXIT_FAILURE;  //   }  // slider.setTracking(false);   // slider.setPositions(0.123456, 20.123465);  // if (!checkSlider(slider, -15.21, 0.1, 20.5, 25.49999, 0.123456, 20.123456))  //   {  //   std::cerr << "ctkDoubleRangeSlider:: 16) "  //             << slider.minimum() << " "   //             << slider.minimumValue() << " "   //             << slider.maximumValue() << " "   //             << slider.maximum() << std::endl;  //   std::cerr << "ctkDoubleRangeSlider:: 16) "  //             << slider.minimumPosition() << " "   //             << slider.maximumPosition() << std::endl;  //   return EXIT_FAILURE;  //   }  return EXIT_SUCCESS;}
 |