blob: 0ba978219be74b918fe9248b056184eb52fc4717 [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.
#include "context.h"
#include "runner.h"
namespace display_test {
PrimaryLayer* Context::CreatePrimaryLayer(uint32_t width, uint32_t height) {
primary_layers_.push_back(
std::unique_ptr<PrimaryLayer>(new PrimaryLayer(runner_, width, height)));
return primary_layers_[primary_layers_.size() - 1].get();
}
Image* Context::CreateImage(uint32_t width, uint32_t height) {
images_.push_back(std::unique_ptr<Image>(new Image(runner_, width, height)));
return images_[images_.size() - 1].get();
}
Image* Context::CreateScalableImage(uint32_t width, uint32_t height) {
images_.push_back(
std::unique_ptr<Image>(new Image(runner_, width, height, true)));
return images_[images_.size() - 1].get();
}
Image* Context::CreateAlphaImage(uint32_t width, uint32_t height, uint8_t alpha,
bool premultiply) {
images_.push_back(std::unique_ptr<Image>(
new Image(runner_, width, height, alpha, premultiply)));
return images_[images_.size() - 1].get();
}
void Context::SetLayers(std::vector<Layer*> layers) {
pending_layers_.clear();
for (auto l : layers) {
pending_layers_.push_back(l);
}
}
void Context::ApplyConfig() {
has_frame_ = true;
runner_->ApplyConfig(pending_layers_);
}
bool Context::IsReady() {
for (auto& layer : primary_layers_) {
if (layer->id() == 0) {
return false;
}
}
for (auto& image : images_) {
if (image->id() == 0) {
return false;
}
}
return true;
}
uint32_t Context::display_width() const { return runner_->width(); }
uint32_t Context::display_height() const { return runner_->height(); }
} // namespace display_test