Files
matt johnson 4c040cf127 TimeManagement: add FCommonFrameRates::Find() overload to allow frame rate lookup by FPS
This new Find() overload allows finding a common frame rate given its value as a decimal number of
frames per second.

#rb max.chen, alejandro.arango, jason.walter
#preflight 61aff20e643ecfe8b06472ff

#ROBOMERGE-AUTHOR: matt.johnson
#ROBOMERGE-SOURCE: CL 18407690 in //UE5/Release-5.0/... via CL 18407710
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18407716 by matt johnson in ue5-release-engine-test branch]
2021-12-08 12:33:32 -05:00

44 lines
2.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "CommonFrameRates.h"
#include "Algo/Find.h"
#define LOCTEXT_NAMESPACE "CommonFrameRates"
const FCommonFrameRateInfo FCommonFrameRates::AllFrameRates[(int32)ECommonFrameRate::Private_Num] = {
FCommonFrameRateInfo { FFrameRate(12, 1), LOCTEXT("FPS_12", "12 fps (animation)"), LOCTEXT("FPS_12_Description", "12 fps (animation)") },
FCommonFrameRateInfo { FFrameRate(15, 1), LOCTEXT("FPS_15", "15 fps"), LOCTEXT("FPS_15_Description", "15 fps") },
FCommonFrameRateInfo { FFrameRate(24, 1), LOCTEXT("FPS_24", "24 fps (film)"), LOCTEXT("FPS_24_Description", "24 fps (film)") },
FCommonFrameRateInfo { FFrameRate(25, 1), LOCTEXT("FPS_25", "25 fps (PAL/25)"), LOCTEXT("FPS_25_Description", "25 fps (PAL/25)") },
FCommonFrameRateInfo { FFrameRate(30, 1), LOCTEXT("FPS_30", "30 fps"), LOCTEXT("FPS_30_Description", "30 fps") },
FCommonFrameRateInfo { FFrameRate(48, 1), LOCTEXT("FPS_48", "48 fps"), LOCTEXT("FPS_48_Description", "48 fps") },
FCommonFrameRateInfo { FFrameRate(50, 1), LOCTEXT("FPS_50", "50 fps (PAL/50)"), LOCTEXT("FPS_50_Description", "50 fps (PAL/50)") },
FCommonFrameRateInfo { FFrameRate(60, 1), LOCTEXT("FPS_60", "60 fps"), LOCTEXT("FPS_60_Description", "60 fps") },
FCommonFrameRateInfo { FFrameRate(100, 1), LOCTEXT("FPS_100", "100 fps"), LOCTEXT("FPS_100_Description", "100 fps") },
FCommonFrameRateInfo { FFrameRate(120, 1), LOCTEXT("FPS_120", "120 fps"), LOCTEXT("FPS_120_Description", "120 fps") },
FCommonFrameRateInfo { FFrameRate(240, 1), LOCTEXT("FPS_240", "240 fps"), LOCTEXT("FPS_240_Description", "240 fps") },
FCommonFrameRateInfo { FFrameRate(24000, 1001), LOCTEXT("NTSC_24", "23.976 (NTSC/24)"), LOCTEXT("NTSC_24_Description", "23.976 (NTSC/24)") },
FCommonFrameRateInfo { FFrameRate(30000, 1001), LOCTEXT("NTSC_30", "29.97 fps (NTSC/30)"), LOCTEXT("NTSC_30_Description", "29.97 fps (NTSC/30)") },
FCommonFrameRateInfo { FFrameRate(60000, 1001), LOCTEXT("NTSC_60", "59.94 fps (NTSC/60)"), LOCTEXT("NTSC_60_Description", "59.94 fps (NTSC/60)") },
};
TArrayView<const FCommonFrameRateInfo> FCommonFrameRates::GetAll()
{
return AllFrameRates;
}
const FCommonFrameRateInfo* FCommonFrameRates::Find(FFrameRate InFrameRate)
{
return Algo::FindBy(AllFrameRates, InFrameRate, &FCommonFrameRateInfo::FrameRate);
}
const FCommonFrameRateInfo* FCommonFrameRates::Find(const double InFrameRateAsDecimal, const double Tolerance)
{
return Algo::FindByPredicate(AllFrameRates,
[InFrameRateAsDecimal, Tolerance](const FCommonFrameRateInfo& CommonFrameRateInfo) -> bool
{
return FMath::IsNearlyEqual(CommonFrameRateInfo.FrameRate.AsDecimal(), InFrameRateAsDecimal, Tolerance);
});
}
#undef LOCTEXT_NAMESPACE