blob: c83c06549937932695fbbf3e250428a365d36237 [file] [log] [blame]
// Copyright (c) 2015 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.
#ifndef CHROMECAST_PUBLIC_OSD_SURFACE_H_
#define CHROMECAST_PUBLIC_OSD_SURFACE_H_
namespace chromecast {
struct Rect;
struct Size;
// Provides simple API (copy bitmap, blit, composite and fill) for drawing
// OSD graphics on OsdPlane. Hardware-specific implementation should be
// instantiated by OsdPlane.
class OsdSurface {
public:
struct Point {
Point(int arg_x, int arg_y) : x(arg_x), y(arg_y) {}
const int x;
const int y;
};
virtual ~OsdSurface() {}
// Blits(fast copy) bitmap from a surface. Copies |src_rect| area of surface
// |dst_point| of this surface.
virtual void Blit(OsdSurface* src_surface,
const Rect& src_rect,
const Point& dst_point) = 0;
// Composites ARGB values of |src_surface| on top of this surface. It is NOT
// copy. Used when displaying OSD images on same plane.
virtual void Composite(OsdSurface* src_surface,
const Rect& src_rect,
const Point& dst_point) = 0;
// Copies |damage_rect| area of src bitmap into |dst_point| of this surface.
// It is similar to Blit() except that it accepts arbitrary bitmap pointer
// instead of surface.
virtual void CopyBitmap(char* src_bitmap,
const Rect& src_rect,
const Rect& damage_rect,
const Point& dst_point) = 0;
// Fills |rect| area of surface with |argb| value.
virtual void Fill(const Rect& rect, int argb) = 0;
// Returns the dimensions of the surface.
virtual const Size& size() const = 0;
};
} // namespace chromecast
#endif // CHROMECAST_PUBLIC_OSD_SURFACE_H_