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 15 class SkMatrix; 16 17 namespace skia { 18 19 class BitmapPlatformDevice; 20 21 class 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