OpenTTD Source
12.0-beta2
|
Go to the source code of this file.
Functions | |
template<typename T > | |
static T | abs (const T a) |
Returns the absolute value of (scalar) variable. More... | |
template<typename T > | |
static T | Align (const T x, uint n) |
Return the smallest multiple of n equal or greater than x. More... | |
template<typename T > | |
static T * | AlignPtr (T *x, uint n) |
Return the smallest multiple of n equal or greater than x Applies to pointers only. More... | |
template<typename T > | |
static T | Clamp (const T a, const T min, const T max) |
Clamp a value between an interval. More... | |
static int | Clamp (const int a, const int min, const int max) |
Clamp an integer between an interval. More... | |
static uint | ClampU (const uint a, const uint min, const uint max) |
Clamp an unsigned integer between an interval. More... | |
static int32 | ClampToI32 (const int64 a) |
Reduce a signed 64-bit int to a signed 32-bit one. More... | |
static uint16 | ClampToU16 (const uint64 a) |
Reduce an unsigned 64-bit int to an unsigned 16-bit one. More... | |
template<typename T > | |
static T | Delta (const T a, const T b) |
Returns the (absolute) difference between two (scalar) variables. More... | |
template<typename T > | |
static bool | IsInsideBS (const T x, const size_t base, const size_t size) |
Checks if a value is between a window started at some base point. More... | |
template<typename T > | |
static bool | IsInsideMM (const T x, const size_t min, const size_t max) |
Checks if a value is in an interval. More... | |
template<typename T > | |
static void | Swap (T &a, T &b) |
Type safe swap operation. More... | |
static uint | ToPercent8 (uint i) |
Converts a "fract" value 0..255 to "percent" value 0..100. More... | |
static uint | ToPercent16 (uint i) |
Converts a "fract" value 0..65535 to "percent" value 0..100. More... | |
int | LeastCommonMultiple (int a, int b) |
Compute least common multiple (lcm) of arguments a and b, the smallest integer value that is a multiple of both a and b. More... | |
int | GreatestCommonDivisor (int a, int b) |
Compute greatest common divisor (gcd) of a and b. More... | |
int | DivideApprox (int a, int b) |
Deterministic approximate division. More... | |
static uint | CeilDiv (uint a, uint b) |
Computes ceil(a / b) for non-negative a and b. More... | |
static uint | Ceil (uint a, uint b) |
Computes ceil(a / b) * b for non-negative a and b. More... | |
static int | RoundDivSU (int a, uint b) |
Computes round(a / b) for signed a and unsigned b. More... | |
static int | DivAwayFromZero (int a, uint b) |
Computes (a / b) rounded away from zero. More... | |
uint32 | IntSqrt (uint32 num) |
Compute the integer square root. More... | |
Integer math functions
Definition in file math_func.hpp.
|
inlinestatic |
Returns the absolute value of (scalar) variable.
a | The value we want to unsign |
Definition at line 21 of file math_func.hpp.
Referenced by AircraftGetEntryPoint(), CalculateCoverageLine(), RoadStop::Entry::CheckIntegrity(), CheckTrainsLengths(), RoadStop::ClearDriveThrough(), DeterminePluralForm(), DivideApprox(), LinkGraphOverlay::DrawContent(), EnumCheckRoadVehCrashTrain(), Kdtree< T, TxyFunc, CoordT, DistT >::FindNearestRecursive(), FindTrainCollideEnum(), GetTunnelBridgeLength(), RoadStop::MakeDriveThrough(), DiagonalTileIterator::operator++(), CYapfDestinationTileWaterT< Types >::PfCalcEstimate(), CYapfDestinationTileT< Types >::PfCalcEstimate(), CYapfDestinationTileOrStationRailT< Types >::PfCalcEstimate(), CYapfDestinationTileRoadT< Types >::PfCalcEstimate(), RoadStop::Entry::Rebuild(), and SettingEntry::SetValueDParams().
|
inlinestatic |
Return the smallest multiple of n equal or greater than x.
x | The min value |
n | The base of the number we are searching |
Definition at line 35 of file math_func.hpp.
Referenced by MakeBMPImage(), and OpenGLSprite::Update().
|
inlinestatic |
Return the smallest multiple of n equal or greater than x Applies to pointers only.
x | The min value |
n | The base of the number we are searching |
Definition at line 53 of file math_func.hpp.
|
inlinestatic |
Computes ceil(a / b) * b for non-negative a and b.
a | Numerator |
b | Denominator |
Definition at line 265 of file math_func.hpp.
References CeilDiv().
Referenced by VehicleGroupWindow::UpdateWidgetSize().
|
inlinestatic |
Computes ceil(a / b) for non-negative a and b.
a | Numerator |
b | Denominator |
Definition at line 254 of file math_func.hpp.
Referenced by BuildLandLegend(), Ceil(), NWidgetMainToolbarContainer::GetButtonArrangement(), GetLoadAmount(), SmallMapWindow::GetNumberRowsLegend(), Industry::RecomputeProductionMultipliers(), ReplaceChain(), ScaleByMapSize(), ScaleByMapSize1D(), and NWidgetMatrix::SetCount().
|
inlinestatic |
Clamp an integer between an interval.
This function returns a value which is between the given interval of min and max. If the given value is in this interval the value itself is returned otherwise the border of the interval is returned, according which side of the interval was 'left'.
a | The value to clamp/truncate. |
min | The minimum of the interval. |
max | the maximum of the interval. |
Definition at line 101 of file math_func.hpp.
|
inlinestatic |
Clamp a value between an interval.
This function returns a value which is between the given interval of min and max. If the given value is in this interval the value itself is returned otherwise the border of the interval is returned, according which side of the interval was 'left'.
a | The value to clamp/truncate. |
min | The minimum of the interval. |
max | the maximum of the interval. |
Definition at line 77 of file math_func.hpp.
Referenced by AnimationBase< IndustryAnimationBase, IndustryTileSpec, Industry, int, GetSimpleIndustryCallback >::AnimateTile(), BridgeChangeInfo(), ClickChangeDateCheat(), ClickChangeMaxHlCheat(), EnsureVisibleCaption(), QueryWindow::FindWindowPlacementAndResize(), NetworkAskRelayWindow::FindWindowPlacementAndResize(), GetAmplitude(), Path::GetCapacityRatio(), GetGlobalVariable(), GetNearbyTileInformation(), GetSavegameFormat(), GetServiceIntervalClamped(), GetTileHeightBelowAircraft(), IndustriesScopeResolver::GetVariable(), AirportScopeResolver::GetVariable(), VehicleScopeResolver::GetVariable(), GenerateLandscapeWindow::OnDropdownSelect(), BuildBridgeWindow::OnInitialPosition(), TooltipsWindow::OnInitialPosition(), CreateScenarioWindow::OnQueryTextFinished(), OrdersWindow::OnQueryTextFinished(), MultiCommodityFlow::PushFlow(), SetDateWindow::SetDateWindow(), AIConfig::SetSetting(), ScriptConfig::SetSetting(), SetStartingYear(), SmallMapWindow::SetZoomLevel(), Train::UpdateAcceleration(), CursorVars::UpdateCursorPositionRelative(), and Scrollbar::UpdatePosition().
|
inlinestatic |
Reduce a signed 64-bit int to a signed 32-bit one.
This function clamps a 64-bit integer to a 32-bit integer. If the 64-bit value is smaller than the smallest 32-bit integer value 0x80000000 this value is returned (the left one bit is the sign bit). If the 64-bit value is greater than the greatest 32-bit integer value 0x7FFFFFFF this value is returned. In all other cases the 64-bit value 'fits' in a 32-bits integer field and so the value is casted to int32 and returned.
a | The 64-bit value to clamps |
Definition at line 141 of file math_func.hpp.
Referenced by EngineCostSorter(), EngineRunningCostSorter(), HandleBankruptcyTakeover(), VehicleProfitLastYearSorter(), VehicleProfitThisYearSorter(), VehicleTimeToLiveSorter(), and VehicleValueSorter().
|
inlinestatic |
Reduce an unsigned 64-bit int to an unsigned 16-bit one.
a | The 64-bit value to clamp |
Definition at line 153 of file math_func.hpp.
Referenced by TownScopeResolver::GetVariable(), and FileStringReader::ReadLine().
|
inlinestatic |
Clamp an unsigned integer between an interval.
This function returns a value which is between the given interval of min and max. If the given value is in this interval the value itself is returned otherwise the border of the interval is returned, according which side of the interval was 'left'.
a | The value to clamp/truncate. |
min | The minimum of the interval. |
max | the maximum of the interval. |
Definition at line 122 of file math_func.hpp.
Referenced by ConvertFromOldCompanyManagerFace(), VideoDriver::UpdateAutoResolution(), and SavePresetWindow::UpdateWidgetSize().
|
inlinestatic |
Returns the (absolute) difference between two (scalar) variables.
a | The first scalar |
b | The second scalar |
Definition at line 170 of file math_func.hpp.
Referenced by DistanceManhattan(), DistanceMax(), DistanceMaxPlusManhattan(), and NPFDistanceTrack().
|
inlinestatic |
Computes (a / b) rounded away from zero.
a | Numerator |
b | Denominator |
Definition at line 293 of file math_func.hpp.
int DivideApprox | ( | int | a, |
int | b | ||
) |
Deterministic approximate division.
Cancels out division errors stemming from the integer nature of the division over multiple runs.
a | Dividend. |
b | Divisor. |
Definition at line 57 of file math_func.cpp.
References abs().
int GreatestCommonDivisor | ( | int | a, |
int | b | ||
) |
Compute greatest common divisor (gcd) of a and b.
a | First number. |
b | second number. |
Definition at line 39 of file math_func.cpp.
Referenced by LeastCommonMultiple().
uint32 IntSqrt | ( | uint32 | num | ) |
Compute the integer square root.
num | Radicand. |
Definition at line 77 of file math_func.cpp.
|
inlinestatic |
Checks if a value is between a window started at some base point.
This function checks if the value x is between the value of base and base+size. If x equals base this returns true. If x equals base+size this returns false.
x | The value to check |
base | The base value of the interval |
size | The size of the interval |
Definition at line 188 of file math_func.hpp.
Referenced by CmdPlantTree(), OrthogonalTileArea::Contains(), NewGRFInspectWindow::HasVariableParameter(), Scrollbar::IsVisible(), MoveBuoysToWaypoints(), and IndustryViewWindow::OnClick().
|
inlinestatic |
Checks if a value is in an interval.
Returns true if a value is in the interval of [min, max).
x | The value to check |
min | The minimum of the interval |
max | The maximum of the interval |
Definition at line 204 of file math_func.hpp.
Referenced by AddChildSpriteToFoundation(), AddDateIntroducedRailTypes(), AddDateIntroducedRoadTypes(), AllocateMap(), CmdRemoveLongRoad(), RoadVehicle::Crash(), DeleteLastRoadVeh(), GraphLegendWindow::DrawWidget(), LinkGraphLegendWindow::DrawWidget(), BuildRoadDepotWindow::DrawWidget(), BuildRoadStationWindow::DrawWidget(), PerformanceRatingDetailWindow::DrawWidget(), BuildSignalWindow::DrawWidget(), BuildRailDepotWindow::DrawWidget(), FileList::FindItem(), GenerateCompanyName(), GetHalftileFoundationCorner(), IsNonContinuousFoundation(), IsSpecialRailFoundation(), IsValidCorner(), MapGRFStringID(), GraphLegendWindow::OnClick(), LinkGraphLegendWindow::OnClick(), SelectGameWindow::OnClick(), IndustryViewWindow::OnClick(), AIDebugWindow::OnClick(), PerformanceRatingDetailWindow::OnClick(), LinkGraphLegendWindow::OnTooltip(), SkipGarbage(), TTDPStringIDToOTTDStringIDMapping(), Vehicle::UpdateVisualEffect(), LinkGraphLegendWindow::UpdateWidgetSize(), BuildRoadDepotWindow::UpdateWidgetSize(), BuildRoadStationWindow::UpdateWidgetSize(), BuildSignalWindow::UpdateWidgetSize(), and BuildRailDepotWindow::UpdateWidgetSize().
int LeastCommonMultiple | ( | int | a, |
int | b | ||
) |
Compute least common multiple (lcm) of arguments a and b, the smallest integer value that is a multiple of both a and b.
a | First number. |
b | second number. |
Definition at line 24 of file math_func.cpp.
References GreatestCommonDivisor().
Referenced by NWidgetStacked::SetupSmallestSize(), NWidgetHorizontal::SetupSmallestSize(), NWidgetVertical::SetupSmallestSize(), and NWidgetNewGRFDisplay::SetupSmallestSize().
|
inlinestatic |
Computes round(a / b) for signed a and unsigned b.
a | Numerator |
b | Denominator |
Definition at line 276 of file math_func.hpp.
Referenced by ScenarioEditorLandscapeGenerationWindow::DrawWidget(), and UpdateTownGrowCounter().
|
inlinestatic |
Type safe swap operation.
a | variable to swap with b |
b | variable to swap with a |
Definition at line 215 of file math_func.hpp.
Referenced by CalcHeightdiff(), IsInRangeInclusive(), AirportSpec::IsWithinMapBounds(), OrthogonalTileArea::OrthogonalTileArea(), ReverseTrainSwapVeh(), and FlowStat::SwapShares().
|
inlinestatic |
Converts a "fract" value 0..65535 to "percent" value 0..100.
i | value to convert, range 0..65535 |
Definition at line 238 of file math_func.hpp.
|
inlinestatic |
Converts a "fract" value 0..255 to "percent" value 0..100.
i | value to convert, range 0..255 |
Definition at line 227 of file math_func.hpp.
Referenced by IndustryDirectoryWindow::GetCargoTransportedPercentsIfValid().