blob: e78a9073488ad77b066abfef17f0ed5d12a6a7b6 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_VR_ELEMENTS_ENVIRONMENT_GRID_H_
#define CHROME_BROWSER_VR_ELEMENTS_ENVIRONMENT_GRID_H_
#include "chrome/browser/vr/elements/rect.h"
#include "chrome/browser/vr/renderers/base_quad_renderer.h"
#include "third_party/skia/include/core/SkColor.h"
namespace vr {
// Draws a quad with a radial gradient and grid lines.
class Grid : public Rect {
public:
Grid();
Grid(const Grid&) = delete;
Grid& operator=(const Grid&) = delete;
~Grid() override;
void Render(UiElementRenderer* renderer,
const CameraModel& model) const override;
SkColor grid_color() const { return grid_color_; }
void SetGridColor(SkColor grid_color);
void OnColorAnimated(const SkColor& color,
int target_property_id,
gfx::KeyframeModel* keyframe_model) override;
int gridline_count() const { return gridline_count_; }
void set_gridline_count(int gridline_count) {
gridline_count_ = gridline_count;
}
class Renderer : public BaseQuadRenderer {
public:
Renderer();
Renderer(const Renderer&) = delete;
Renderer& operator=(const Renderer&) = delete;
~Renderer() override;
void Draw(const gfx::Transform& model_view_proj_matrix,
SkColor grid_color,
int gridline_count,
float opacity);
static void CreateBuffers();
private:
GLuint model_view_proj_matrix_handle_;
GLuint grid_color_handle_;
GLuint opacity_handle_;
GLuint lines_count_handle_;
};
private:
SkColor grid_color_ = SK_ColorWHITE;
int gridline_count_ = 1;
};
} // namespace vr
#endif // CHROME_BROWSER_VR_ELEMENTS_ENVIRONMENT_GRID_H_