blob: c83c06549937932695fbbf3e250428a365d36237 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
// 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_
|