1// Copyright (c) 2011 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
5#ifndef SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
6#define SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/logging.h"
11#include "skia/ext/platform_device.h"
12#include "skia/ext/refptr.h"
13#include "third_party/skia/include/pdf/SkPDFDevice.h"
14
15class SkMatrix;
16
17namespace skia {
18
19class BitmapPlatformDevice;
20
21class VectorPlatformDeviceSkia : public SkPDFDevice, public PlatformDevice {
22 public:
23  SK_API VectorPlatformDeviceSkia(const SkISize& pageSize,
24                                  const SkISize& contentSize,
25                                  const SkMatrix& initialTransform);
26  virtual ~VectorPlatformDeviceSkia();
27
28  // PlatformDevice methods.
29  virtual bool SupportsPlatformPaint() OVERRIDE;
30
31  virtual PlatformSurface BeginPlatformPaint() OVERRIDE;
32  virtual void EndPlatformPaint() OVERRIDE;
33#if defined(OS_WIN)
34  virtual void DrawToNativeContext(HDC dc,
35                                   int x,
36                                   int y,
37                                   const RECT* src_rect) OVERRIDE;
38#elif defined(OS_MACOSX)
39  virtual void DrawToNativeContext(CGContext* context,
40                                   int x,
41                                   int y,
42                                   const CGRect* src_rect) OVERRIDE;
43  virtual CGContextRef GetBitmapContext() OVERRIDE;
44#elif defined(OS_POSIX)
45  virtual void DrawToNativeContext(PlatformSurface surface,
46                                   int x,
47                                   int y,
48                                   const PlatformRect* src_rect) OVERRIDE;
49#endif
50
51 private:
52  skia::RefPtr<BitmapPlatformDevice> raster_surface_;
53
54  DISALLOW_COPY_AND_ASSIGN(VectorPlatformDeviceSkia);
55};
56
57}  // namespace skia
58
59#endif  // SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
60