All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Attributes | Protected Member Functions
QGpGuiTools::ColorPalette Class Reference

A ColorPalette links a color palette with a vector of values. More...

#include <ColorPalette.h>

Inheritance diagram for QGpGuiTools::ColorPalette:
QGpCoreTools::XMLClass

List of all members.

Public Member Functions

void allocate (int n=10)
const QColor & color (int i) const
const QColor & color (double val) const
void colorHSVInterpole (int imin, int imax)
 ColorPalette ()
void colorRGBInterpole (int imin, int imax)
int count () const
void defaultBW (int n=10, int transparency=255)
void defaultColors (int n=10, int transparency=255)
void defaultHSVColors (int sat, int value, int n=10, int transparency=255)
void defaultRGBColors (int n=10, int transparency=255)
int index (double val) const
double lowerValue (int i) const
bool operator!= (const ColorPalette &o) const
bool operator== (const ColorPalette &o) const
void setColor (int i, const QColor &c) const
void setUpperValue (int i, double v)
void setVLinear (double min, double max)
void setVLinear (int imin, int imax, double min, double max)
void setVLog (double min, double max)
void setVLog (int imin, int imax, double min, double max)
double upperValue (int i) const
virtual const QString & xml_tagName () const

Static Public Attributes

static const QString xmlColorPaletteTag = "ColorPalette"

Protected Member Functions

virtual XMLMember xml_member (XML_MEMBER_ARGS)
virtual bool xml_setProperty (XML_SETPROPERTY_ARGS)
virtual void xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const

Detailed Description

A ColorPalette links a color palette with a vector of values.

ColorPalette are defined by a QColor vector of n elements and a vector of double of n-1 elements. Each value at i corresponds to the interface between the two colors at positions i and i+1.


Constructor & Destructor Documentation

{_d=new ColorPaletteData;}

Member Function Documentation

void QGpGuiTools::ColorPalette::allocate ( int  n = 10) [inline]
const QColor& QGpGuiTools::ColorPalette::color ( int  i) const [inline]
const QColor& QGpGuiTools::ColorPalette::color ( double  val) const [inline]
{return _d->color(val);}
void QGpGuiTools::ColorPalette::colorHSVInterpole ( int  imin,
int  imax 
) [inline]

Referenced by SciFigs::ColorPaletteWidget::colorInterpole().

{
  _d->colorHSVInterpole(imin, imax);
}
void QGpGuiTools::ColorPalette::colorRGBInterpole ( int  imin,
int  imax 
) [inline]
{
  _d->colorRGBInterpole(imin, imax);
}
int QGpGuiTools::ColorPalette::count ( ) const [inline]
void QGpGuiTools::ColorPalette::defaultBW ( int  n = 10,
int  transparency = 255 
) [inline]

Referenced by SciFigs::ColorPaletteWidget::defaultBW().

{
  _d->defaultBW(n, transparency);
}
void QGpGuiTools::ColorPalette::defaultColors ( int  n = 10,
int  transparency = 255 
) [inline]
void QGpGuiTools::ColorPalette::defaultHSVColors ( int  sat,
int  value,
int  n = 10,
int  transparency = 255 
) [inline]
void QGpGuiTools::ColorPalette::defaultRGBColors ( int  n = 10,
int  transparency = 255 
) [inline]
{
  _d->defaultRGBColors(n, transparency);
}
int QGpGuiTools::ColorPalette::index ( double  val) const [inline]
double QGpGuiTools::ColorPalette::lowerValue ( int  i) const [inline]

Referenced by SciFigs::GridPlot::drawGrid2DSmooth(), and SciFigs::ColorPaletteLayer::paintData().

{return _d->lowerValue(i);}
bool QGpGuiTools::ColorPalette::operator!= ( const ColorPalette o) const [inline]
{return _d->operator!=(*o._d);}
bool QGpGuiTools::ColorPalette::operator== ( const ColorPalette o) const [inline]
{return _d->operator==(*o._d);}
void QGpGuiTools::ColorPalette::setColor ( int  i,
const QColor &  c 
) const [inline]
void QGpGuiTools::ColorPalette::setUpperValue ( int  i,
double  v 
) [inline]

Referenced by QGpGuiTools::operator>>(), SciFigs::PaletteTable::palette(), and xml_setProperty().

{_d->setUpperValue(i, v);}
void QGpGuiTools::ColorPalette::setVLinear ( double  min,
double  max 
) [inline]
void QGpGuiTools::ColorPalette::setVLinear ( int  imin,
int  imax,
double  min,
double  max 
) [inline]
{
  _d->setVLinear(imin, imax, min, max);
}
void QGpGuiTools::ColorPalette::setVLog ( double  min,
double  max 
) [inline]

Referenced by SciFigs::XYValuePlot::setLogPalette(), and SciFigs::ColorPaletteWidget::setVLog().

{
  _d->setVLog(min, max);
}
void QGpGuiTools::ColorPalette::setVLog ( int  imin,
int  imax,
double  min,
double  max 
) [inline]
{
  _d->setVLog(imin, imax, min, max);
}
double QGpGuiTools::ColorPalette::upperValue ( int  i) const [inline]

Re-implement this function to offer XML restore (children and properties) support to your class.

From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:

  • An integer: id number of a property
  • A XMLClass * : a child of this object identified by tag
  • Default constructor: error, unknow child or property

Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):

    static const QString tmp("childrenName");
    XMLRestoreAttributeIterator it=map.find(tmp);
    if(it!=map.end()) {
      // found attribute "childrenName"
    }

If the map of attributes is not used:

    Q_UNUSED(attributes);
    if(tag=="x1") return XMLMember(0);
    else if(tag=="y1") return XMLMember(1);
    else if(tag=="x2") return XMLMember(2);
    else if(tag=="y2") return XMLMember(3);
    else return XMLMember(XMLMember::Unknown);

Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.

    if(tag=="anInteger") return XMLMember(0);
    else if(tag=="aString") return XMLMember(1);
    else if(tag=="aDouble") return XMLMember(2);
    return AbstractLine::xml_member(tag, attributes, context)+3;

For the arguments of this function use Macro XML_MEMBER_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

References TRACE.

{
  TRACE;
  Q_UNUSED(attributes)
  Q_UNUSED(context);
  if(tag=="nColors" ) return XMLMember(0);
  else if(tag=="numberType" ) return XMLMember(1);       // Compatibility
  else if(tag=="numberPrecision" ) return XMLMember(2);  // Compatibility
  else if(tag=="palette" ) return XMLMember(3);
  else if(tag=="numType" ) return XMLMember(1);          // Compatibility
  else if(tag=="numPrec" ) return XMLMember(2);          // Compatibility
  else return XMLMember(XMLMember::Unknown);
}

Re-implement this function to offer XML restore properties support to your class.

From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).

For a general case:

  Q_UNUSED(attributes);
  double val=content.toDouble();
  switch (memberID) {
  case 0:
    _x1=val;
    return true;
  case 1:
    _y1=val;
    return true;
  case 2:
    _x2=val;
    return true;
  case 3:
    _y2=val;
    return true;
  default:
    return false;
  }

For classes inheriting other classes (see also xml_member())

  switch (memberID) {
  case 0:
    _anInteger=content.toString();
    return true;
  case 1:
    _aString=content.toInt();
    return true;
  case 2:
    _aDouble=content.toDouble();
    return true;
  default:
    return AbstractLine::xml_setProperty(memberID-3, map, content);

For the arguments of this function use Macro XML_SETPROPERTY_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

References allocate(), count(), QGpCoreTools::endl(), QGpCoreTools::StringSection::isValid(), QGpCoreTools::StringSection::nextField(), setColor(), setUpperValue(), QGpCoreTools::StringSection::toDouble(), QGpCoreTools::StringSection::toString(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  Q_UNUSED(tag);
  Q_UNUSED(attributes)
  Q_UNUSED(context);
  switch (memberID) {
  case 0: {
      int n=content.toInt();
      if(n > 0) {
        allocate(n);
        return true;
      } else return false;
    }
  case 1:
  case 2:
    return true;
  case 3: {
      if(count()==0) return false;
      const QChar * ptr=0;
      content.nextLine(ptr);
      StringSection f;
      int i;
      QColor c;
      for(i=0;i < count();i++ ) {
        f=content.nextField(ptr);
        c.setNamedColor(f.toString());
        if(f.isValid()) setColor(i, c); else break;
        if(i < count() - 1) {
          f=content.nextField(ptr);
          if(f.isValid()) setUpperValue(i, f.toDouble()); else break;
        }
        content.nextLine(ptr);
      }
      if(i==count()) return true;
      else {
        App::stream() << tr( "Error parsing color %1, incomplete line" ).arg(i) << endl;
        return false;
      }
    }
  default:
    break;
  }
  return false;
}
virtual const QString& QGpGuiTools::ColorPalette::xml_tagName ( ) const [inline, virtual]

Reimplemented from QGpCoreTools::XMLClass.

References color(), count(), TRACE, upperValue(), and QGpCoreTools::XMLClass::writeProperty().

{
  TRACE;
  Q_UNUSED(context);
  writeProperty(s, "nColors", count());
  QString tmp;
  tmp += s.indent();
  tmp += "<palette>\n";
  for(int i=0; i < count(); i++ ) {
    tmp += s.indent();
    tmp += color(i).name();
    if(i < count() - 1) {
      tmp += " ";
      tmp += QString::number(upperValue( i) );
    }
    tmp += "\n";
  }
  tmp += s.indent();
  tmp += "</palette>\n";
  s << tmp;
}

Member Data Documentation

const QString QGpGuiTools::ColorPalette::xmlColorPaletteTag = "ColorPalette" [static]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines