From fb5fd1a78eacdcb9ca8ecb463ca125302d6826bf Mon Sep 17 00:00:00 2001 From: cxl Date: Thu, 19 Nov 2009 09:27:49 +0000 Subject: [PATCH] GeomCoords: fixed charset problem in FormatDegree git-svn-id: svn://ultimatepp.org/upp/trunk@1707 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Geom/Coords/Coords.upp | 2 +- uppsrc/Geom/Coords/util.cpp | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/uppsrc/Geom/Coords/Coords.upp b/uppsrc/Geom/Coords/Coords.upp index 1ef44cd51..3c0b8876e 100644 --- a/uppsrc/Geom/Coords/Coords.upp +++ b/uppsrc/Geom/Coords/Coords.upp @@ -4,7 +4,7 @@ uses file GeomCoords.h, - util.cpp, + util.cpp charset "UTF-8", ellipsoid.cpp, coords.cpp, method.h, diff --git a/uppsrc/Geom/Coords/util.cpp b/uppsrc/Geom/Coords/util.cpp index 05b52b384..e85ee5114 100644 --- a/uppsrc/Geom/Coords/util.cpp +++ b/uppsrc/Geom/Coords/util.cpp @@ -137,17 +137,18 @@ String FormatDegree(double d, int decimals) char sign = (d < 0 ? '-' : '+'); if(d < 0) d = -d; int deg = ffloor(d); + String cd = ToCharset(CHARSET_DEFAULT, "%c%d°", CHARSET_UTF8); if(decimals <= -2) - return NFormat("%c%d°", sign, deg); + return NFormat(cd, sign, deg); d = (d - deg) * 60; int min = ffloor(d); if(decimals <= -1) - return NFormat("%c%d° %02d\'", sign, deg, min); + return NFormat(cd + " %02d\'", sign, deg, min); d = (d - min) * 60; String sec = FormatDoubleFix(d, decimals); if(!IsDigit(sec[1])) sec.Insert(0, '0'); - return NFormat("%c%d° %02d\' %s\"", sign, deg, min, sec); + return NFormat(cd + " %02d\' %s\"", sign, deg, min, sec); } Value ScanDegree(const char *p) @@ -158,21 +159,21 @@ Value ScanDegree(const char *p) if(IsNull(deg)) return Null; if(deg < -360 || deg > 360) - return ErrorValue(NFormat("Neplatný poèet úhlových stupòù: %d", deg)); + return ErrorValue(NFormat("Neplatný poèet úhlových stupòù: %d", deg)); while(*p && !IsDigit(*p)) p++; if(*p) { min = ScanInt(p, &p); if(min < 0 || min >= 60) - return ErrorValue(NFormat("Neplatný poèet úhlových minut: %d", min)); + return ErrorValue(NFormat("Neplatný poèet úhlových minut: %d", min)); while(*p && !IsDigit(*p)) p++; if(*p) { sec = ScanDouble(p); if(IsNull(sec) || sec < 0 || sec > 60) - return ErrorValue(NFormat("Neplatný poèet úhlových sekund: %d", sec)); + return ErrorValue(NFormat("Neplatný poèet úhlových sekund: %d", sec)); } } return ((sec / 60.0 + min) / 60.0 + tabs(deg)) * (deg >= 0 ? 1 : -1); @@ -199,13 +200,13 @@ Value ConvertDegree::Scan(const Value& v) const if(IsNull(d)) { if(not_null) - return ErrorValue("Hodnota nesmí být prázdná."); + return ErrorValue("Hodnota nesmí být prázdná."); return Null; } if(!IsNull(min) && d < min) - return ErrorValue(NFormat("Zadaný úhel je menší než povolená dolní mez, %s.", FormatDegree(min, 0))); + return ErrorValue(NFormat("Zadaný úhel je menší než povolená dolní mez, %s.", FormatDegree(min, 0))); if(!IsNull(max) && d > max) - return ErrorValue(NFormat("Zadaný úhel je vìtší než povolená horní mez, %s.", FormatDegree(max, 0))); + return ErrorValue(NFormat("Zadaný úhel je vìtší než povolená horní mez, %s.", FormatDegree(max, 0))); return d; }