Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1519)

Side by Side Diff: include/lazy/SkBitmapFactory.h

Issue 103033002: Big Cleanup: SkBitmapFactory, SkLazyPixelRef, SkImageCache (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: rebase one last time Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « include/core/SkImageDecoder.h ('k') | include/lazy/SkImageCache.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef SkBitmapFactory_DEFINED
9 #define SkBitmapFactory_DEFINED
10
11 #include "SkImage.h"
12 #include "SkTypes.h"
13
14 class SkBitmap;
15 class SkData;
16 class SkImageCache;
17
18 /**
19 * Factory for creating a bitmap from encoded data.
20 */
21 class SkBitmapFactory {
22
23 public:
24 /**
25 * Struct containing information about a pixel destination.
26 */
27 struct Target {
28 /**
29 * Pre-allocated memory.
30 */
31 void* fAddr;
32
33 /**
34 * Rowbytes of the allocated memory.
35 */
36 size_t fRowBytes;
37 };
38
39 /**
40 * Signature for a function to decode an image from encoded data.
41 */
42 typedef bool (*DecodeProc)(const void* data, size_t length, SkImageInfo*, co nst Target*);
43
44 /**
45 * Create a bitmap factory which uses DecodeProc for decoding.
46 * @param DecodeProc Must not be NULL.
47 */
48 SkBitmapFactory(DecodeProc);
49
50 ~SkBitmapFactory();
51
52 /**
53 * Set an image cache to use on pixelrefs provided by installPixelRef. Mutu ally exclusive
54 * with fCacheSelector.
55 */
56 void setImageCache(SkImageCache* cache);
57
58 /**
59 * Sets up an SkBitmap from encoded data. On success, the SkBitmap will hav e its Config,
60 * width, height, rowBytes and pixelref set. If fImageCache is non-NULL, or if fCacheSelector
61 * is set and returns non-NULL, the pixelref will lazily decode, and that S kImageCache will
62 * handle the pixel memory. Otherwise installPixelRef will do an immediate decode.
63 * @param SkData Encoded data.
64 * @param SkBitmap to install the pixel ref on.
65 * @return bool Whether or not a pixel ref was successfully installed.
66 */
67 bool installPixelRef(SkData*, SkBitmap*);
68
69 /**
70 * An object for selecting an SkImageCache to use based on an SkImageInfo.
71 */
72 class CacheSelector : public SkRefCnt {
73
74 public:
75 SK_DECLARE_INST_COUNT(CacheSelector)
76 /**
77 * Return an SkImageCache to use based on the provided SkImageInfo. If the caller decides
78 * to hang on to the result, it will call ref, so the implementation sh ould not add a ref
79 * as a result of this call.
80 */
81 virtual SkImageCache* selectCache(const SkImageInfo&) = 0;
82
83 private:
84 typedef SkRefCnt INHERITED;
85 };
86
87 /**
88 * Set the function to be used to select which SkImageCache to use. Mutuall y exclusive with
89 * fImageCache.
90 */
91 void setCacheSelector(CacheSelector*);
92
93 private:
94 DecodeProc fDecodeProc;
95 SkImageCache* fImageCache;
96 CacheSelector* fCacheSelector;
97 };
98
99 #endif // SkBitmapFactory_DEFINED
OLDNEW
« no previous file with comments | « include/core/SkImageDecoder.h ('k') | include/lazy/SkImageCache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698