---
name: "QwtScaleEngine"
section: "3"
platform: "linux"
package: "libqwt-doc"
version: "6.1.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/QwtScaleEngine"
---

# QwtScaleEngine(3)

Base class for scale engines.

## NAME

QwtScaleEngine - Base class for scale engines.

## SYNOPSIS

`#include <qwt_scale_engine.h>`

Inherited by **QwtLinearScaleEngine**, and **QwtLogScaleEngine**.

### Public Types

enum **Attribute** { **NoAttribute** = 0x00, **IncludeReference** = 0x01, **Symmetric** = 0x02, **Floating** = 0x04, **Inverted** = 0x08 }\
 typedef QFlags\< **Attribute** \> **Attributes**\
 Layout attributes.

### Public Member Functions

**QwtScaleEngine** (uint **base**=10)\
 virtual **~QwtScaleEngine** ()\
 Destructor.  void **setBase** (uint **base**)\
 uint **base** () const\
 void **setAttribute** (**Attribute**, bool on=true)\
 bool **testAttribute** (**Attribute**) const\
 void **setAttributes** (**Attributes**)\
 **Attributes** **attributes** () const\
 void **setReference** (double)\
 Specify a reference point.  double **reference** () const\
 void **setMargins** (double lower, double upper)\
 Specify margins at the scale's endpoints.  double **lowerMargin** () const\
 double **upperMargin** () const\
 virtual void **autoScale** (int maxNumSteps, double &x1, double &x2, double &stepSize) const =0\
 virtual **QwtScaleDiv** **divideScale** (double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize=0.0) const =0\
 Calculate a scale division.  void **setTransformation** (**QwtTransform** \*)\
 **QwtTransform** \* **transformation** () const\

### Protected Member Functions

bool **contains** (const **QwtInterval** &, double value) const\
 QList\< double \> **strip** (const QList\< double \> &, const **QwtInterval** &) const\
 double **divideInterval** (double intervalSize, int numSteps) const\
 **QwtInterval** **buildInterval** (double value) const\
 Build an interval around a value.

## Detailed Description

Base class for scale engines.

A scale engine tries to find 'reasonable' ranges and step sizes for scales.

The layout of the scale can be varied with **setAttribute()**.

Qwt offers implementations for logarithmic and linear scales.

## Member Enumeration Documentation

### enum QwtScaleEngine::Attribute

Layout attributes

**See also:**

**setAttribute()**, **testAttribute()**, **reference()**, **lowerMargin()**, **upperMargin()**

**Enumerator**

- *NoAttribute*

  *No attributes.*

- *IncludeReference*

  *Build a scale which includes the* **reference()** *value.*

- *Symmetric*

  *Build a scale which is symmetric to the* **reference()** *value.*

- *Floating*

  *The endpoints of the scale are supposed to be equal the outmost included values plus the specified margins (see* **setMargins()***). If this attribute is not set, the endpoints of the scale will be integer multiples of the step size.*

- *Inverted*

  *Turn the scale upside down.*

## Constructor & Destructor Documentation

### QwtScaleEngine::QwtScaleEngine (uint base = `10`)` [explicit]`

*Constructor*

**Parameters:**

*base Base of the scale engine*

**See also:**

**setBase()**

## Member Function Documentation

### QwtScaleEngine::Attributes QwtScaleEngine::attributes () const

**Returns:**

*Scale attributes*

**See also:**

**Attribute***,* **setAttributes()***,* **testAttribute()**

### virtual void QwtScaleEngine::autoScale (int maxNumSteps, double & x1, double & x2, double & stepSize) const` [pure virtual]`

*Align and divide an interval*

**Parameters:**

*maxNumSteps Max. number of steps* \
 *x1 First limit of the interval (In/Out)* \
 *x2 Second limit of the interval (In/Out)* \
 *stepSize Step size (Return value)*

*Implemented in* **QwtLogScaleEngine***,* **QwtLinearScaleEngine***, and* **QwtDateScaleEngine***.*

### uint QwtScaleEngine::base () const

**Returns:**

*base Base of the scale engine*

**See also:**

**setBase()**

### QwtInterval QwtScaleEngine::buildInterval (double value) const` [protected]`

*Build an interval around a value. In case of v == 0.0 the interval is \[-0.5, 0.5\], otherwide it is \[0.5 \* v, 1.5 \* v\]*

**Parameters:**

*value Initial value*

**Returns:**

*Calculated interval*

### bool QwtScaleEngine::contains (const QwtInterval & interval, double value) const` [protected]`

*Check if an interval 'contains' a value*

**Parameters:**

*interval Interval* \
 *value Value*

**Returns:**

*True, when the value is inside the interval*

### double QwtScaleEngine::divideInterval (double intervalSize, int numSteps) const` [protected]`

*Calculate a step size for an interval size*

**Parameters:**

*intervalSize Interval size* \
 *numSteps Number of steps*

**Returns:**

*Step size*

### virtual QwtScaleDiv QwtScaleEngine::divideScale (double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize = `0.0`) const` [pure virtual]`

*Calculate a scale division.*

**Parameters:**

*x1 First interval limit* \
 *x2 Second interval limit* \
 *maxMajorSteps Maximum for the number of major steps* \
 *maxMinorSteps Maximum number of minor steps* \
 *stepSize Step size. If stepSize == 0.0, the scaleEngine calculates one.*

**Returns:**

*Calculated scale division*

*Implemented in* **QwtLogScaleEngine***,* **QwtLinearScaleEngine***, and* **QwtDateScaleEngine***.*

### double QwtScaleEngine::lowerMargin () const

**Returns:**

*the margin at the lower end of the scale The default margin is 0.*

**See also:**

**setMargins()**

### double QwtScaleEngine::reference () const

**Returns:**

*the reference value*

**See also:**

**setReference()***,* **setAttribute()**

### void QwtScaleEngine::setAttribute (Attribute attribute, bool on = `true`)

*Change a scale attribute*

**Parameters:**

*attribute Attribute to change* \
 *on On/Off*

**See also:**

**Attribute***,* **testAttribute()**

### void QwtScaleEngine::setAttributes (Attributes attributes)

*Change the scale attribute*

**Parameters:**

*attributes Set scale attributes*

**See also:**

**Attribute***,* **attributes()**

### void QwtScaleEngine::setBase (uint base)

*Set the base of the scale engine*

*While a base of 10 is what 99.9% of all applications need certain scales might need a different base: f.e 2*

*The default setting is 10*

**Parameters:**

*base Base of the engine*

**See also:**

**base()**

### void QwtScaleEngine::setMargins (double lower, double upper)

*Specify margins at the scale's endpoints.*

**Parameters:**

*lower minimum distance between the scale's lower boundary and the smallest enclosed value* \
 *upper minimum distance between the scale's upper boundary and the greatest enclosed value*

*Margins can be used to leave a minimum amount of space between the enclosed intervals and the boundaries of the scale.*

**Warning:**

- •

  **QwtLogScaleEngine** *measures the margins in decades.*

**See also:**

**upperMargin()***,* **lowerMargin()**

### void QwtScaleEngine::setReference (double reference)

*Specify a reference point.*

**Parameters:**

*reference New reference value*

*The reference point is needed if options IncludeReference or Symmetric are active. Its default value is 0.0.*

**See also:**

**Attribute**

### void QwtScaleEngine::setTransformation (QwtTransform \* transform)

*Assign a transformation*

**Parameters:**

*transform Transformation*

*The transformation object is used as factory for clones that are returned by* **transformation()**

*The scale engine takes ownership of the transformation.*

**See also:**

**QwtTransform::copy()***,* **transformation()**

### QList\< double \> QwtScaleEngine::strip (const QList\< double \> & ticks, const QwtInterval & interval) const` [protected]`

*Remove ticks from a list, that are not inside an interval*

**Parameters:**

*ticks Tick list* \
 *interval Interval*

**Returns:**

*Stripped tick list*

### bool QwtScaleEngine::testAttribute (Attribute attribute) const

**Returns:**

*True, if attribute is enabled.*

**Parameters:**

*attribute Attribute to be tested*

**See also:**

**Attribute***,* **setAttribute()**

### QwtTransform \* QwtScaleEngine::transformation () const

*Create and return a clone of the transformation of the engine. When the engine has no special transformation NULL is returned, indicating no transformation.*

**Returns:**

*A clone of the transfomation*

**See also:**

**setTransformation()**

### double QwtScaleEngine::upperMargin () const

**Returns:**

*the margin at the upper end of the scale The default margin is 0.*

**See also:**

**setMargins()**

## Author

*Generated automatically by Doxygen for Qwt User's Guide from the source code.*
