OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef SkBitmap_DEFINED | 8 #ifndef SkBitmap_DEFINED |
9 #define SkBitmap_DEFINED | 9 #define SkBitmap_DEFINED |
10 | 10 |
11 #include "SkColor.h" | 11 #include "SkColor.h" |
12 #include "SkColorTable.h" | 12 #include "SkColorTable.h" |
13 #include "SkImageInfo.h" | 13 #include "SkImageInfo.h" |
14 #include "SkPoint.h" | 14 #include "SkPoint.h" |
15 #include "SkRefCnt.h" | 15 #include "SkRefCnt.h" |
16 | 16 |
| 17 //#define SK_SUPPORT_LEGACY_COPYTO_CONFIG |
| 18 |
17 struct SkMask; | 19 struct SkMask; |
18 struct SkIRect; | 20 struct SkIRect; |
19 struct SkRect; | 21 struct SkRect; |
20 class SkPaint; | 22 class SkPaint; |
21 class SkPixelRef; | 23 class SkPixelRef; |
22 class SkPixelRefFactory; | 24 class SkPixelRefFactory; |
23 class SkRegion; | 25 class SkRegion; |
24 class SkString; | 26 class SkString; |
25 | 27 |
26 #define SK_SUPPORT_DEEPCOPYTO_CONFIG | 28 #define SK_SUPPORT_DEEPCOPYTO_CONFIG |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 the dst bitmap. If the subset rectangle, intersected with the bitmap's | 613 the dst bitmap. If the subset rectangle, intersected with the bitmap's |
612 dimensions is empty, or if there is an unsupported config, false will be | 614 dimensions is empty, or if there is an unsupported config, false will be |
613 returned and dst will be untouched. | 615 returned and dst will be untouched. |
614 @param dst The bitmap that will be set to a subset of this bitmap | 616 @param dst The bitmap that will be set to a subset of this bitmap |
615 @param subset The rectangle of pixels in this bitmap that dst will | 617 @param subset The rectangle of pixels in this bitmap that dst will |
616 reference. | 618 reference. |
617 @return true if the subset copy was successfully made. | 619 @return true if the subset copy was successfully made. |
618 */ | 620 */ |
619 bool extractSubset(SkBitmap* dst, const SkIRect& subset) const; | 621 bool extractSubset(SkBitmap* dst, const SkIRect& subset) const; |
620 | 622 |
621 /** Makes a deep copy of this bitmap, respecting the requested config, | 623 #ifdef SK_SUPPORT_LEGACY_COPYTO_CONFIG |
| 624 bool copyTo(SkBitmap* dst, Config c, Allocator* allocator) const; |
| 625 bool canCopyTo(Config newConfig) const; |
| 626 #endif |
| 627 /** Makes a deep copy of this bitmap, respecting the requested colorType, |
622 * and allocating the dst pixels on the cpu. | 628 * and allocating the dst pixels on the cpu. |
623 * Returns false if either there is an error (i.e. the src does not have | 629 * Returns false if either there is an error (i.e. the src does not have |
624 * pixels) or the request cannot be satisfied (e.g. the src has per-pixel | 630 * pixels) or the request cannot be satisfied (e.g. the src has per-pixel |
625 * alpha, and the requested config does not support alpha). | 631 * alpha, and the requested config does not support alpha). |
626 * @param dst The bitmap to be sized and allocated | 632 * @param dst The bitmap to be sized and allocated |
627 * @param c The desired config for dst | 633 * @param ct The desired colorType for dst |
628 * @param allocator Allocator used to allocate the pixelref for the dst | 634 * @param allocator Allocator used to allocate the pixelref for the dst |
629 * bitmap. If this is null, the standard HeapAllocator | 635 * bitmap. If this is null, the standard HeapAllocator |
630 * will be used. | 636 * will be used. |
631 * @return true if the copy could be made. | 637 * @return true if the copy was made. |
632 */ | 638 */ |
633 bool copyTo(SkBitmap* dst, Config c, Allocator* allocator = NULL) const; | 639 bool copyTo(SkBitmap* dst, SkColorType ct, Allocator* = NULL) const; |
| 640 |
| 641 bool copyTo(SkBitmap* dst, Allocator* allocator = NULL) const { |
| 642 return this->copyTo(dst, this->colorType(), allocator); |
| 643 } |
| 644 |
| 645 /** |
| 646 * Returns true if this bitmap's pixels can be converted into the requested |
| 647 * colorType, such that copyTo() could succeed. |
| 648 */ |
| 649 bool canCopyTo(SkColorType colorType) const; |
634 | 650 |
635 /** Makes a deep copy of this bitmap, respecting the requested config, and | 651 /** Makes a deep copy of this bitmap, respecting the requested config, and |
636 * with custom allocation logic that will keep the copied pixels | 652 * with custom allocation logic that will keep the copied pixels |
637 * in the same domain as the source: If the src pixels are allocated for | 653 * in the same domain as the source: If the src pixels are allocated for |
638 * the cpu, then so will the dst. If the src pixels are allocated on the | 654 * the cpu, then so will the dst. If the src pixels are allocated on the |
639 * gpu (typically as a texture), the it will do the same for the dst. | 655 * gpu (typically as a texture), the it will do the same for the dst. |
640 * If the request cannot be fulfilled, returns false and dst is unmodified. | 656 * If the request cannot be fulfilled, returns false and dst is unmodified. |
641 */ | 657 */ |
642 #ifndef SK_SUPPORT_DEEPCOPYTO_CONFIG | 658 #ifndef SK_SUPPORT_DEEPCOPYTO_CONFIG |
643 private: | 659 private: |
644 #endif | 660 #endif |
645 bool deepCopyTo(SkBitmap* dst, Config c) const; | 661 bool deepCopyTo(SkBitmap* dst, Config c) const; |
646 public: | 662 public: |
647 | 663 |
648 /** Makes a deep copy of this bitmap, keeping the copied pixels | 664 /** Makes a deep copy of this bitmap, keeping the copied pixels |
649 * in the same domain as the source: If the src pixels are allocated for | 665 * in the same domain as the source: If the src pixels are allocated for |
650 * the cpu, then so will the dst. If the src pixels are allocated on the | 666 * the cpu, then so will the dst. If the src pixels are allocated on the |
651 * gpu (typically as a texture), the it will do the same for the dst. | 667 * gpu (typically as a texture), the it will do the same for the dst. |
652 * If the request cannot be fulfilled, returns false and dst is unmodified. | 668 * If the request cannot be fulfilled, returns false and dst is unmodified. |
653 */ | 669 */ |
654 bool deepCopyTo(SkBitmap* dst) const; | 670 bool deepCopyTo(SkBitmap* dst) const; |
655 | 671 |
656 /** Returns true if this bitmap can be deep copied into the requested config | |
657 by calling copyTo(). | |
658 */ | |
659 bool canCopyTo(Config newConfig) const; | |
660 | |
661 SK_ATTR_DEPRECATED("use setFilterLevel on SkPaint") | 672 SK_ATTR_DEPRECATED("use setFilterLevel on SkPaint") |
662 void buildMipMap(bool forceRebuild = false); | 673 void buildMipMap(bool forceRebuild = false); |
663 | 674 |
664 #ifdef SK_BUILD_FOR_ANDROID | 675 #ifdef SK_BUILD_FOR_ANDROID |
665 bool hasHardwareMipMap() const { | 676 bool hasHardwareMipMap() const { |
666 return (fFlags & kHasHardwareMipMap_Flag) != 0; | 677 return (fFlags & kHasHardwareMipMap_Flag) != 0; |
667 } | 678 } |
668 | 679 |
669 void setHasHardwareMipMap(bool hasHardwareMipMap) { | 680 void setHasHardwareMipMap(bool hasHardwareMipMap) { |
670 if (hasHardwareMipMap) { | 681 if (hasHardwareMipMap) { |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 } | 940 } |
930 | 941 |
931 /////////////////////////////////////////////////////////////////////////////// | 942 /////////////////////////////////////////////////////////////////////////////// |
932 // | 943 // |
933 // Helpers until we can fully deprecate SkBitmap::Config | 944 // Helpers until we can fully deprecate SkBitmap::Config |
934 // | 945 // |
935 extern SkBitmap::Config SkColorTypeToBitmapConfig(SkColorType); | 946 extern SkBitmap::Config SkColorTypeToBitmapConfig(SkColorType); |
936 extern SkColorType SkBitmapConfigToColorType(SkBitmap::Config); | 947 extern SkColorType SkBitmapConfigToColorType(SkBitmap::Config); |
937 | 948 |
938 #endif | 949 #endif |
OLD | NEW |