diff options
author | Thorsten Behrens <tbehrens@suse.com> | 2012-01-31 00:52:50 +0100 |
---|---|---|
committer | Thorsten Behrens <tbehrens@suse.com> | 2013-10-07 17:33:45 +0200 |
commit | 3e2dba1accbd018f7dac362a2636bed135f1b5bb (patch) | |
tree | f9999b443935eb2f11f8655713f0a47af569cfc1 /basegfx/source/tools | |
parent | writerfilter: tokenize CT_LatentStyles and CT_LsdException (diff) | |
download | core-3e2dba1accbd018f7dac362a2636bed135f1b5bb.tar.gz core-3e2dba1accbd018f7dac362a2636bed135f1b5bb.zip |
Add 7-segment display polygon generator to basegfx.
Basegfx gets a basegfx::tools::number2PolyPolygon method that
converts a number 0-9 into a 7-segment digit display polygon.
Change-Id: I4d3326c9fe9e42d07a6248781127f19ac27d8b72
Diffstat (limited to 'basegfx/source/tools')
-rw-r--r-- | basegfx/source/tools/numbertools.cxx | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/basegfx/source/tools/numbertools.cxx b/basegfx/source/tools/numbertools.cxx new file mode 100644 index 000000000000..6b8543a8eff0 --- /dev/null +++ b/basegfx/source/tools/numbertools.cxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <basegfx/tools/tools.hxx> +#include <basegfx/matrix/b2dhommatrix.hxx> +#include <basegfx/polygon/b2dpolypolygon.hxx> +#include <basegfx/polygon/b2dpolypolygontools.hxx> + +#include <rtl/ustrbuf.hxx> +#include <rtl/math.hxx> + +#include <utility> + +namespace basegfx { namespace tools +{ + B2DPolyPolygon number2PolyPolygon(double fValue, sal_Int32 nTotalDigits, sal_Int32 nDecPlaces, bool bLitSegments) + { + // config here + // { + const double fSpace=0.2; + // } + // config here + + rtl::OUStringBuffer aNum; + rtl::math::doubleToUStringBuffer(aNum, + fValue, + rtl_math_StringFormat_F, + nDecPlaces, '.', + 0, ','); + + B2DPolyPolygon aRes; + B2DHomMatrix aMat; + double fCurrX=std::max(nTotalDigits-aNum.getLength(), + sal_Int32(0)) * (1.0+fSpace); + for( sal_Int32 i=0; i<aNum.getLength(); ++i ) + { + B2DPolyPolygon aCurr; + aCurr=createSevenSegmentPolyPolygon(aNum[i], + bLitSegments); + + aMat.identity(); + aMat.translate(fCurrX,0.0); + aCurr.transform(aMat); + + fCurrX += 1.0+fSpace; + + aRes.append(aCurr); + } + + return aRes; + } + +} } + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |