VTK
dox/GUISupport/Qt/Chart/vtkQtChartIndexRangeList.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkQtChartIndexRangeList.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*-------------------------------------------------------------------------
00016   Copyright 2008 Sandia Corporation.
00017   Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00018   the U.S. Government retains certain rights in this software.
00019 -------------------------------------------------------------------------*/
00020 
00023 
00024 #ifndef _vtkQtChartIndexRangeList_h
00025 #define _vtkQtChartIndexRangeList_h
00026 
00027 #include "vtkQtChartExport.h"
00028 
00029 
00034 class VTKQTCHART_EXPORT vtkQtChartIndexRange
00035 {
00036 public:
00037   vtkQtChartIndexRange();
00038 
00044   vtkQtChartIndexRange(int first, int second, bool black=true);
00045   vtkQtChartIndexRange(const vtkQtChartIndexRange &other);
00046   ~vtkQtChartIndexRange();
00047 
00048   vtkQtChartIndexRange &operator=(const vtkQtChartIndexRange &other);
00049 
00051 
00052 
00053 
00054 
00055 
00056   int getFirst() const {return this->First;}
00057 
00065   void setFirst(int first);
00066 
00071   int getSecond() const {return this->Second;}
00072 
00080   void setSecond(int second);
00081 
00087   bool contains(int value) const;
00089 
00091 
00092 
00093 
00094 
00095 
00096   bool isBlack() const {return this->Black;}
00097 
00101   void setBlack(bool black) {this->Black = black;}
00102 
00107   vtkQtChartIndexRange *getParent() const {return this->Parent;}
00108 
00112   void setParent(vtkQtChartIndexRange *parent) {this->Parent = parent;}
00113 
00118   vtkQtChartIndexRange *getLeft() const {return this->Left;}
00119 
00123   void setLeft(vtkQtChartIndexRange *left) {this->Left = left;}
00124 
00129   vtkQtChartIndexRange *getRight() const {return this->Right;}
00130 
00134   void setRight(vtkQtChartIndexRange *right) {this->Right = right;}
00136 
00137 private:
00138   vtkQtChartIndexRange *Parent; 
00139   vtkQtChartIndexRange *Left;   
00140   vtkQtChartIndexRange *Right;  
00141   bool Black;                   
00142   int First;                    
00143   int Second;                   
00144 };
00145 
00146 
00157 class VTKQTCHART_EXPORT vtkQtChartIndexRangeList
00158 {
00159 public:
00160   vtkQtChartIndexRangeList();
00161 
00166   vtkQtChartIndexRangeList(int first, int second);
00167   vtkQtChartIndexRangeList(const vtkQtChartIndexRangeList &other);
00168   ~vtkQtChartIndexRangeList();
00169 
00170   vtkQtChartIndexRangeList &operator=(const vtkQtChartIndexRangeList &other);
00171 
00173 
00174 
00175 
00176 
00177 
00178   bool isEmpty() const {return this->Root == 0;}
00179 
00184   vtkQtChartIndexRange *getFirst() const;
00185 
00190   vtkQtChartIndexRange *getLast() const;
00191 
00198   vtkQtChartIndexRange *getNext(vtkQtChartIndexRange *range) const;
00199 
00206   vtkQtChartIndexRange *getPrevious(vtkQtChartIndexRange *range) const;
00208 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217   vtkQtChartIndexRange *findClosest(int value) const;
00218 
00223   bool contains(int value) const;
00225 
00227 
00228 
00229 
00230 
00231 
00232   bool clear();
00233 
00240   bool setRange(int first, int second);
00241 
00247   bool setRanges(const vtkQtChartIndexRangeList &ranges);
00248 
00255   bool addRange(int first, int second);
00256 
00262   bool addRanges(const vtkQtChartIndexRangeList &ranges);
00263 
00270   bool subtractRange(int first, int second);
00271 
00277   bool subtractRanges(const vtkQtChartIndexRangeList &ranges);
00278 
00286   bool xorRange(int first, int second);
00287 
00294   bool xorRanges(const vtkQtChartIndexRangeList &ranges);
00295 
00300   void limitRange(int minimum, int maximum);
00301 
00313   bool offsetRanges(int start, int offset);
00315 
00316 private:
00324   vtkQtChartIndexRange *findNode(int value, bool left) const;
00325 
00332   void rotateLeft(vtkQtChartIndexRange *node);
00333 
00340   void rotateRight(vtkQtChartIndexRange *node);
00341 
00354   void insertNode(vtkQtChartIndexRange *current, vtkQtChartIndexRange *node,
00355       bool left);
00356 
00367   void removeNode(vtkQtChartIndexRange *node);
00368 
00373   int removeBetween(vtkQtChartIndexRange *left, vtkQtChartIndexRange *right);
00374 
00380   vtkQtChartIndexRange *getNextNode(vtkQtChartIndexRange *node) const;
00381 
00387   vtkQtChartIndexRange *getPreviousNode(vtkQtChartIndexRange *node) const;
00388 
00394   vtkQtChartIndexRange *getFirstNode(vtkQtChartIndexRange *root) const;
00395 
00401   vtkQtChartIndexRange *getLastNode(vtkQtChartIndexRange *root) const;
00402 
00403 private:
00404   vtkQtChartIndexRange *Root; 
00405 };
00406 
00407 #endif