Apollo  6.0
Open source self driving car software
grid.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2018 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #pragma once
18 
19 #include <QtGui/QColor>
20 
22 
23 class Grid : public RenderableObject {
24  public:
25  explicit Grid(int cellCountBySide = 1);
26  ~Grid() {}
27 
28  GLenum GetPrimitiveType(void) const { return GL_LINES; }
29  void SetupExtraUniforms(void) {
30  QVector3D color;
31  color.setX(static_cast<float>(grid_color_.redF()));
32  color.setY(static_cast<float>(grid_color_.greenF()));
33  color.setZ(static_cast<float>(grid_color_.blueF()));
34  shader_program_->setUniformValue("color", color);
35  }
36 
37  int red(void) const { return grid_color_.red(); }
38  int green(void) const { return grid_color_.green(); }
39  int blue(void) const { return grid_color_.blue(); }
40 
41  const QColor& grid_color(void) const { return grid_color_; }
42  void set_grid_color(const QColor& color) { grid_color_ = color; }
43 
44  void SetCellCount(int cellCount) {
45  set_vertex_count(((cellCount << 1) + 2) * vertex_element_count());
46  }
47 
48  int CellCount(void) const {
49  return (vertex_count() / vertex_element_count() - 2) >> 1;
50  }
51 
52  protected:
53  virtual bool FillVertexBuffer(GLfloat* pBuffer);
54 
55  private:
56  QColor grid_color_;
57 };
GLenum GetPrimitiveType(void) const
Definition: grid.h:28
int vertex_count(void) const
Definition: renderable_object.h:42
Grid(int cellCountBySide=1)
virtual bool FillVertexBuffer(GLfloat *pBuffer)
int CellCount(void) const
Definition: grid.h:48
Definition: renderable_object.h:25
Definition: grid.h:23
void set_vertex_count(int vertexCount)
Definition: renderable_object.h:43
int blue(void) const
Definition: grid.h:39
std::shared_ptr< QOpenGLShaderProgram > shader_program_
Definition: renderable_object.h:88
void set_grid_color(const QColor &color)
Definition: grid.h:42
void SetupExtraUniforms(void)
Definition: grid.h:29
const QColor & grid_color(void) const
Definition: grid.h:41
int green(void) const
Definition: grid.h:38
void SetCellCount(int cellCount)
Definition: grid.h:44
int red(void) const
Definition: grid.h:37
~Grid()
Definition: grid.h:26
int vertex_element_count(void) const
Definition: renderable_object.h:45