osd_plane_default.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include <memory>
  5. #include "chromecast/public/graphics_types.h"
  6. #include "chromecast/public/osd_plane.h"
  7. #include "chromecast/public/osd_plane_shlib.h"
  8. #include "chromecast/public/osd_surface.h"
  9. namespace chromecast {
  10. namespace {
  11. // Default no-op OsdSurface implementation
  12. class OsdSurfaceDefault : public OsdSurface {
  13. public:
  14. OsdSurfaceDefault(const Size& size) : size_(size) {}
  15. OsdSurfaceDefault(const OsdSurfaceDefault&) = delete;
  16. OsdSurfaceDefault& operator=(const OsdSurfaceDefault&) = delete;
  17. // OsdSurface implementation:
  18. void Blit(OsdSurface* src_surface,
  19. const Rect& src_rect,
  20. const Point& dst_point) override {}
  21. void Composite(OsdSurface* src_surface,
  22. const Rect& src_rect,
  23. const Point& dst_point) override {}
  24. void CopyBitmap(char* src_bitmap,
  25. const Rect& src_rect,
  26. const Rect& damage_rect,
  27. const Point& dst_point) override {}
  28. void Fill(const Rect& rect, int argb) override {}
  29. const Size& size() const override { return size_; }
  30. private:
  31. const Size size_;
  32. };
  33. // Default no-op OsdPlane implementation
  34. class OsdPlaneDefault : public OsdPlane {
  35. public:
  36. OsdPlaneDefault() : size_(0, 0) {}
  37. OsdPlaneDefault(const OsdPlaneDefault&) = delete;
  38. OsdPlaneDefault& operator=(const OsdPlaneDefault&) = delete;
  39. // OsdPlane implementation:
  40. OsdSurface* CreateSurface(const Size& size) override {
  41. return new OsdSurfaceDefault(size);
  42. }
  43. void SetClipRectangle(const Rect& rect,
  44. const Size& screen_res,
  45. float output_scale) override {
  46. size_ = Size(rect.width, rect.height);
  47. }
  48. OsdSurface* GetBackBuffer() override {
  49. if (!back_buffer_)
  50. back_buffer_.reset(new OsdSurfaceDefault(size_));
  51. return back_buffer_.get();
  52. }
  53. void Flip() override {}
  54. private:
  55. std::unique_ptr<OsdSurface> back_buffer_;
  56. Size size_;
  57. };
  58. } // namespace
  59. OsdPlane* OsdPlaneShlib::Create(const std::vector<std::string>& argv) {
  60. return new OsdPlaneDefault;
  61. }
  62. } // namespace chromecast