// Copyright 2014 The Chromium 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 "ui/ozone/demo/software_renderer.h" #include "third_party/skia/include/core/SkCanvas.h" #include "third_party/skia/include/core/SkSurface.h" #include "ui/ozone/public/surface_factory_ozone.h" #include "ui/ozone/public/surface_ozone_canvas.h" namespace ui { SoftwareRenderer::SoftwareRenderer(gfx::AcceleratedWidget widget, const gfx::Size& size) : RendererBase(widget, size) { } SoftwareRenderer::~SoftwareRenderer() { } bool SoftwareRenderer::Initialize() { software_surface_ = ui::SurfaceFactoryOzone::GetInstance()->CreateCanvasForWidget(widget_); if (!software_surface_) { LOG(ERROR) << "Failed to create software surface"; return false; } software_surface_->ResizeCanvas(size_); return true; } void SoftwareRenderer::RenderFrame() { float fraction = NextFraction(); skia::RefPtr<SkSurface> surface = software_surface_->GetSurface(); SkColor color = SkColorSetARGB(0xff, 0, 0xff * fraction, 0xff * (1 - fraction)); surface->getCanvas()->clear(color); software_surface_->PresentCanvas(gfx::Rect(size_)); } } // namespace ui