blob: f962c73e0c1d6fce3a5b438eb5950b135cec193f [file] [log] [blame]
// Copyright 2018 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.
#ifndef SRC_GRAPHICS_DISPLAY_TESTING_UTILS_H_
#define SRC_GRAPHICS_DISPLAY_TESTING_UTILS_H_
#include <inttypes.h>
#include <cmath>
static inline uint32_t interpolate(uint32_t max, int32_t cur_frame, int32_t period) {
float fraction = ((float)(cur_frame % period)) / ((float)period - 1);
fraction = (cur_frame / period) % 2 ? 1.0f - fraction : fraction;
return (uint32_t)((float)max * fraction);
}
// This function generates gamma lookup table using input gamma value.
static inline void generate_gamma_table(float gamma, float* v) {
if (!v) {
return;
}
for (int i = 0; i < 256; i++) {
float num = static_cast<float>(i) / 255.0f;
v[i] = std::powf(num, gamma);
}
}
#endif // SRC_GRAPHICS_DISPLAY_TESTING_UTILS_H_