1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2015 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkPDFBitmap_DEFINED 8*c8dee2aaSAndroid Build Coastguard Worker #define SkPDFBitmap_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkData.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "src/core/SkChecksum.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker class SkCodec; 17*c8dee2aaSAndroid Build Coastguard Worker class SkImage; 18*c8dee2aaSAndroid Build Coastguard Worker class SkPDFDocument; 19*c8dee2aaSAndroid Build Coastguard Worker struct SkEncodedInfo; 20*c8dee2aaSAndroid Build Coastguard Worker struct SkPDFIndirectReference; 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker /** 23*c8dee2aaSAndroid Build Coastguard Worker * Serialize a SkImage as an Image Xobject. 24*c8dee2aaSAndroid Build Coastguard Worker * quality > 100 means lossless 25*c8dee2aaSAndroid Build Coastguard Worker */ 26*c8dee2aaSAndroid Build Coastguard Worker SkPDFIndirectReference SkPDFSerializeImage(const SkImage* img, 27*c8dee2aaSAndroid Build Coastguard Worker SkPDFDocument* doc, 28*c8dee2aaSAndroid Build Coastguard Worker int encodingQuality = 101); 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker class SkPDFBitmap { 31*c8dee2aaSAndroid Build Coastguard Worker public: 32*c8dee2aaSAndroid Build Coastguard Worker static const SkEncodedInfo& GetEncodedInfo(SkCodec&); 33*c8dee2aaSAndroid Build Coastguard Worker }; 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard Worker struct SkPDFIccProfileKey { 36*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkData> fData; 37*c8dee2aaSAndroid Build Coastguard Worker int fChannels; 38*c8dee2aaSAndroid Build Coastguard Worker bool operator==(const SkPDFIccProfileKey& that) const { 39*c8dee2aaSAndroid Build Coastguard Worker return fChannels == that.fChannels && fData->equals(that.fData.get()); 40*c8dee2aaSAndroid Build Coastguard Worker } 41*c8dee2aaSAndroid Build Coastguard Worker bool operator!=(const SkPDFIccProfileKey& rhs) const { return !(*this == rhs); } 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker struct Hash { operatorSkPDFIccProfileKey::Hash44*c8dee2aaSAndroid Build Coastguard Worker uint32_t operator()(const SkPDFIccProfileKey& k) const { 45*c8dee2aaSAndroid Build Coastguard Worker return SkGoodHash()(k.fChannels) ^ SkChecksum::Hash32(k.fData->data(), k.fData->size()); 46*c8dee2aaSAndroid Build Coastguard Worker } 47*c8dee2aaSAndroid Build Coastguard Worker }; 48*c8dee2aaSAndroid Build Coastguard Worker }; 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker #endif // SkPDFBitmap_DEFINED 51