Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65815b6d authored by Tao Bao's avatar Tao Bao
Browse files

ui: Add constness to Draw- functions.

These functions take the given GRSurface instances as inputs, which
shouldn't be altered.

Test: mmma -j bootable/recovery
Test: Run recovery_unit_test.
Test: `Run graphics test` on marlin.
Change-Id: I51bf408e85faae2b497d4f148ab1dec22dd16c93
parent 66a576b7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -600,7 +600,7 @@ int ScreenRecoveryUI::ScreenHeight() const {
  return gr_fb_height();
}

void ScreenRecoveryUI::DrawSurface(GRSurface* surface, int sx, int sy, int w, int h, int dx,
void ScreenRecoveryUI::DrawSurface(const GRSurface* surface, int sx, int sy, int w, int h, int dx,
                                   int dy) const {
  gr_blit(surface, sx, sy, w, h, dx, dy);
}
@@ -618,7 +618,7 @@ void ScreenRecoveryUI::DrawFill(int x, int y, int w, int h) const {
  gr_fill(x, y, w, h);
}

void ScreenRecoveryUI::DrawTextIcon(int x, int y, GRSurface* surface) const {
void ScreenRecoveryUI::DrawTextIcon(int x, int y, const GRSurface* surface) const {
  gr_texticon(x, y, surface);
}

+5 −4
Original line number Diff line number Diff line
@@ -60,14 +60,14 @@ class DrawInterface {
  virtual int DrawTextLine(int x, int y, const std::string& line, bool bold) const = 0;

  // Draws surface portion (sx, sy, w, h) at screen location (dx, dy).
  virtual void DrawSurface(GRSurface* surface, int sx, int sy, int w, int h, int dx,
  virtual void DrawSurface(const GRSurface* surface, int sx, int sy, int w, int h, int dx,
                           int dy) const = 0;

  // Draws rectangle at (x, y) - (x + w, y + h).
  virtual void DrawFill(int x, int y, int w, int h) const = 0;

  // Draws given surface (surface->pixel_bytes = 1) as text at (x, y).
  virtual void DrawTextIcon(int x, int y, GRSurface* surface) const = 0;
  virtual void DrawTextIcon(int x, int y, const GRSurface* surface) const = 0;

  // Draws multiple text lines. Returns the offset it should be moving along Y-axis.
  virtual int DrawTextLines(int x, int y, const std::vector<std::string>& lines) const = 0;
@@ -299,9 +299,10 @@ class ScreenRecoveryUI : public RecoveryUI, public DrawInterface {
  void SetColor(UIElement e) const override;
  void DrawHighlightBar(int x, int y, int width, int height) const override;
  int DrawHorizontalRule(int y) const override;
  void DrawSurface(GRSurface* surface, int sx, int sy, int w, int h, int dx, int dy) const override;
  void DrawSurface(const GRSurface* surface, int sx, int sy, int w, int h, int dx,
                   int dy) const override;
  void DrawFill(int x, int y, int w, int h) const override;
  void DrawTextIcon(int x, int y, GRSurface* surface) const override;
  void DrawTextIcon(int x, int y, const GRSurface* surface) const override;
  int DrawTextLine(int x, int y, const std::string& line, bool bold) const override;
  int DrawTextLines(int x, int y, const std::vector<std::string>& lines) const override;
  int DrawWrappedTextLines(int x, int y, const std::vector<std::string>& lines) const override;
+9 −9
Original line number Diff line number Diff line
@@ -42,26 +42,26 @@ static const std::vector<std::string> ITEMS{ "item1", "item2", "item3", "item4",
class MockDrawFunctions : public DrawInterface {
  void SetColor(UIElement /* element */) const override {}
  void DrawHighlightBar(int /* x */, int /* y */, int /* width */,
                        int /* height */) const override {};
                        int /* height */) const override {}
  int DrawHorizontalRule(int /* y */) const override {
    return 0;
  };
  }
  int DrawTextLine(int /* x */, int /* y */, const std::string& /* line */,
                   bool /* bold */) const override {
    return 0;
  };
  void DrawSurface(GRSurface* /* surface */, int /* sx */, int /* sy */, int /* w */, int /* h */,
                   int /* dx */, int /* dy */) const override {};
  void DrawFill(int /* x */, int /* y */, int /* w */, int /* h */) const override {};
  void DrawTextIcon(int /* x */, int /* y */, GRSurface* /* surface */) const override {};
  }
  void DrawSurface(const GRSurface* /* surface */, int /* sx */, int /* sy */, int /* w */,
                   int /* h */, int /* dx */, int /* dy */) const override {}
  void DrawFill(int /* x */, int /* y */, int /* w */, int /* h */) const override {}
  void DrawTextIcon(int /* x */, int /* y */, const GRSurface* /* surface */) const override {}
  int DrawTextLines(int /* x */, int /* y */,
                    const std::vector<std::string>& /* lines */) const override {
    return 0;
  };
  }
  int DrawWrappedTextLines(int /* x */, int /* y */,
                           const std::vector<std::string>& /* lines */) const override {
    return 0;
  };
  }
};

class ScreenUITest : public testing::Test {
+2 −2
Original line number Diff line number Diff line
@@ -34,13 +34,13 @@ int VrRecoveryUI::ScreenHeight() const {
  return gr_fb_height();
}

void VrRecoveryUI::DrawSurface(GRSurface* surface, int sx, int sy, int w, int h, int dx,
void VrRecoveryUI::DrawSurface(const GRSurface* surface, int sx, int sy, int w, int h, int dx,
                               int dy) const {
  gr_blit(surface, sx, sy, w, h, dx + stereo_offset_, dy);
  gr_blit(surface, sx, sy, w, h, dx - stereo_offset_ + ScreenWidth(), dy);
}

void VrRecoveryUI::DrawTextIcon(int x, int y, GRSurface* surface) const {
void VrRecoveryUI::DrawTextIcon(int x, int y, const GRSurface* surface) const {
  gr_texticon(x + stereo_offset_, y, surface);
  gr_texticon(x - stereo_offset_ + ScreenWidth(), y, surface);
}
+3 −2
Original line number Diff line number Diff line
@@ -33,11 +33,12 @@ class VrRecoveryUI : public ScreenRecoveryUI {
  int ScreenWidth() const override;
  int ScreenHeight() const override;

  void DrawSurface(GRSurface* surface, int sx, int sy, int w, int h, int dx, int dy) const override;
  void DrawSurface(const GRSurface* surface, int sx, int sy, int w, int h, int dx,
                   int dy) const override;
  int DrawHorizontalRule(int y) const override;
  void DrawHighlightBar(int x, int y, int width, int height) const override;
  void DrawFill(int x, int y, int w, int h) const override;
  void DrawTextIcon(int x, int y, GRSurface* surface) const override;
  void DrawTextIcon(int x, int y, const GRSurface* surface) const override;
  int DrawTextLine(int x, int y, const std::string& line, bool bold) const override;
};