diff options
Diffstat (limited to 'internal/dynamic_depth/const.cc')
-rw-r--r-- | internal/dynamic_depth/const.cc | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/internal/dynamic_depth/const.cc b/internal/dynamic_depth/const.cc new file mode 100644 index 0000000..0a7396d --- /dev/null +++ b/internal/dynamic_depth/const.cc @@ -0,0 +1,114 @@ +#include "dynamic_depth/const.h" + +#include "android-base/logging.h" +#include "base/port.h" + +namespace photos_editing_formats { +namespace dynamic_depth { +namespace { + +// Element names. +constexpr char kAppInfo[] = "AppInfo"; +constexpr char kCamera[] = "Camera"; +constexpr char kDepthMap[] = "DepthMap"; +constexpr char kDevice[] = "Device"; +constexpr char kEarthPose[] = "EarthPose"; +constexpr char kImagingModel[] = "ImagingModel"; +constexpr char kImage[] = "Image"; +constexpr char kItem[] = "Item"; +constexpr char kLightEstimate[] = "LightEstimate"; +constexpr char kPlane[] = "Plane"; +constexpr char kPointCloud[] = "PointCloud"; +constexpr char kPose[] = "Pose"; +constexpr char kProfile[] = "Profile"; +constexpr char kVendorInfo[] = "VendorInfo"; + +// Type names. +constexpr char kCameras[] = "Cameras"; +constexpr char kContainer[] = "Container"; +constexpr char kPlanes[] = "Planes"; +constexpr char kProfiles[] = "Profiles"; + +} // namespace + +// Redeclare static constexpr variables. +// https://stackoverflow.com/questions/8016780/ +// undefined-reference-to-static-constexpr-char +constexpr std::array<const char*, DynamicDepthConst::kNumDistortionTypes> + DynamicDepthConst::kDistortionTypeNames; + +// Dynamic Depth element names. +const char* DynamicDepthConst::AppInfo() { return kAppInfo; } + +const char* DynamicDepthConst::Camera() { return kCamera; } + +const char* DynamicDepthConst::DepthMap() { return kDepthMap; } + +const char* DynamicDepthConst::Device() { return kDevice; } + +const char* DynamicDepthConst::EarthPose() { return kEarthPose; } + +const char* DynamicDepthConst::ImagingModel() { return kImagingModel; } + +const char* DynamicDepthConst::Image() { return kImage; } + +const char* DynamicDepthConst::Item() { return kItem; } + +const char* DynamicDepthConst::LightEstimate() { return kLightEstimate; } + +const char* DynamicDepthConst::Plane() { return kPlane; } + +const char* DynamicDepthConst::PointCloud() { return kPointCloud; } + +const char* DynamicDepthConst::Pose() { return kPose; } + +const char* DynamicDepthConst::Profile() { return kProfile; } + +const char* DynamicDepthConst::VendorInfo() { return kVendorInfo; } + +// Dynamic Depth type names. +const char* DynamicDepthConst::Cameras() { return kCameras; } + +const char* DynamicDepthConst::Container() { return kContainer; } + +const char* DynamicDepthConst::Planes() { return kPlanes; } + +const char* DynamicDepthConst::Profiles() { return kProfiles; } + +// Returns the namespace to which the given Dynamic Depth element or type +// belongs. AppInfo and VendorInfo are not included because they can belong to +// either the Device or Camera elements. +const std::string DynamicDepthConst::Namespace(const std::string& node_name) { + if (node_name == kPose) { + LOG(WARNING) << kPose << " maps to " << kDevice << ", " << kCamera + << ", and " << kPlane << "; should be manually chosen. " + << "Returning empty"; + return ""; + } + + // Elements. + if (node_name == kImagingModel || node_name == kImage || + node_name == kDepthMap || node_name == kPointCloud || + node_name == kLightEstimate) { + return kCamera; + } + + if (node_name == kItem) { + return kContainer; + } + + if (node_name == kCamera || node_name == kEarthPose || + node_name == kProfile || node_name == kPlane) { + return kDevice; + } + + // Types. + if (node_name == kCameras || node_name == kContainer || + node_name == kPlanes || node_name == kProfiles) { + return kDevice; + } + + return ""; +} +} // namespace dynamic_depth +} // namespace photos_editing_formats |