units.h revision a37a84c15e7a23c5a60e81a8cb070e0ac8edf068
/*
* Inkscape Units
* These classes are used for defining different unit systems.
*
* Authors:
* Matthew Petroff <matthew@mpetroff.net>
*
* Copyright (C) 2013 Matthew Petroff
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#ifndef INKSCAPE_UTIL_UNITS_H
#define INKSCAPE_UTIL_UNITS_H
#include <map>
#include "svg/svg-length.h"
enum UnitType {
UNIT_TYPE_DIMENSIONLESS, /* Percentage */
UNIT_TYPE_NONE = -1
};
const char DEG[] = "°";
Unit();
double factor,
void clear();
/**
* Returns the suggested precision to use for displaying numbers
* of this unit.
*/
int defaultDigits() const;
/** Checks if a unit is compatible with the specified unit. */
bool compatibleWith(const Unit &u) const;
double factor;
/** Check if units are equal. */
/** Check if units are not equal. */
/** Get SVG unit. */
int svgUnit() const;
};
double quantity;
/** Initialize a quantity. */
/** Checks if a quantity is compatible with the specified unit. */
bool compatibleWith(const Unit &u) const;
/** Return the quantity's value in the specified unit. */
/** Return a printable string of the value in the specified unit. */
/** Convert distances. */
/** Comparison operators. */
};
/**
* Initializes the unit tables and identifies the primary unit types.
*
* The primary unit's conversion factor is required to be 1.00
*/
UnitTable();
/** Add a new unit to the table */
/** Retrieve a given unit based on its string identifier */
/** Retrieve a given unit based on its SVGLength unit */
/** Retrieve a quantity based on its string identifier */
/** Remove a unit definition from the given unit type table */
bool deleteUnit(Unit const &u);
/** Returns true if the given string 'name' is a valid unit in the table */
/** Provides an iteratable list of items in the given unit table */
/** Returns the default unit abbr for the given type */
double getScale() const;
void setScale();
/** Load units from an XML file.
*
* Loads and merges the contents of the given file into the UnitTable,
* possibly overwriting existing unit definitions.
*
* @param filename file to be loaded
*/
/** Saves the current UnitTable to the given file. */
double _linear_scale;
};
extern UnitTable unit_table;
} // namespace Util
} // namespace Inkscape
#endif // define INKSCAPE_UTIL_UNITS_H
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :