mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
GeomCoords: fixed charset problem in FormatDegree
git-svn-id: svn://ultimatepp.org/upp/trunk@1707 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
58f3aa28d8
commit
fb5fd1a78e
2 changed files with 11 additions and 10 deletions
|
|
@ -4,7 +4,7 @@ uses
|
|||
|
||||
file
|
||||
GeomCoords.h,
|
||||
util.cpp,
|
||||
util.cpp charset "UTF-8",
|
||||
ellipsoid.cpp,
|
||||
coords.cpp,
|
||||
method.h,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue