blob: 901f6ae8104f887072cce96b0c4eded8947940ca [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/graphics/display/lib/api-types-cpp/transform.h"
#include <fidl/fuchsia.hardware.display.types/cpp/wire.h>
#include <zircon/assert.h>
#include <limits>
#include <type_traits>
namespace display {
Transform ToTransform(fuchsia_hardware_display_types::wire::Transform transform_fidl) {
return transform_fidl;
}
Transform ToTransform(frame_transform_t frame_transform_banjo) {
switch (frame_transform_banjo) {
case FRAME_TRANSFORM_IDENTITY:
return Transform::kIdentity;
case FRAME_TRANSFORM_REFLECT_X:
return Transform::kReflectX;
case FRAME_TRANSFORM_REFLECT_Y:
return Transform::kReflectY;
case FRAME_TRANSFORM_ROT_90:
return Transform::kRot90;
case FRAME_TRANSFORM_ROT_180:
return Transform::kRot180;
case FRAME_TRANSFORM_ROT_270:
return Transform::kRot270;
case FRAME_TRANSFORM_ROT_90_REFLECT_X:
return Transform::kRot90ReflectX;
case FRAME_TRANSFORM_ROT_90_REFLECT_Y:
return Transform::kRot90ReflectY;
default:
ZX_DEBUG_ASSERT_MSG(false, "Invalid banjo Transform %u",
static_cast<int>(frame_transform_banjo));
return Transform::kIdentity;
}
}
fuchsia_hardware_display_types::wire::Transform ToFidlTransform(Transform transform) {
return transform;
}
frame_transform_t ToBanjoFrameTransform(Transform transform) {
switch (transform) {
case Transform::kIdentity:
return FRAME_TRANSFORM_IDENTITY;
case Transform::kReflectX:
return FRAME_TRANSFORM_REFLECT_X;
case Transform::kReflectY:
return FRAME_TRANSFORM_REFLECT_Y;
case Transform::kRot90:
return FRAME_TRANSFORM_ROT_90;
case Transform::kRot180:
return FRAME_TRANSFORM_ROT_180;
case Transform::kRot270:
return FRAME_TRANSFORM_ROT_270;
case Transform::kRot90ReflectX:
return FRAME_TRANSFORM_ROT_90_REFLECT_X;
case Transform::kRot90ReflectY:
return FRAME_TRANSFORM_ROT_90_REFLECT_Y;
default:
ZX_DEBUG_ASSERT_MSG(false, "Invalid Transform %d", static_cast<int>(transform));
return FRAME_TRANSFORM_IDENTITY;
}
}
} // namespace display