#include "pdf/page_orientation.h"
#include <type_traits>
#include "base/notreached.h"
namespace chrome_pdf {
namespace {
PageOrientation AddOrientations(PageOrientation first, PageOrientation second) {
using IntType = std::underlying_type<PageOrientation>::type;
constexpr auto kOrientationCount =
static_cast<IntType>(PageOrientation::kLast) + 1;
auto first_int = static_cast<IntType>(first);
auto second_int = static_cast<IntType>(second);
return static_cast<PageOrientation>((first_int + second_int) %
kOrientationCount);
}
}
bool IsTransposedPageOrientation(PageOrientation orientation) {
switch (orientation) {
case PageOrientation::kOriginal:
case PageOrientation::kClockwise180:
return false;
case PageOrientation::kClockwise90:
case PageOrientation::kClockwise270:
return true;
}
NOTREACHED();
}
PageOrientation RotateClockwise(PageOrientation orientation) {
return AddOrientations(orientation, PageOrientation::kClockwise90);
}
PageOrientation RotateCounterclockwise(PageOrientation orientation) {
return AddOrientations(orientation, PageOrientation::kLast);
}
}