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