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

Side by Side Diff: src/pipe/SkGPipePriv.h

Issue 1122643005: Make drawImage a virtual on SkDevice (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 months 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
« no previous file with comments | « src/image/SkImage_Raster.cpp ('k') | src/pipe/SkGPipeRead.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 10
(...skipping 25 matching lines...) Expand all
36 // these match Canvas apis 36 // these match Canvas apis
37 kClipPath_DrawOp, 37 kClipPath_DrawOp,
38 kClipRegion_DrawOp, 38 kClipRegion_DrawOp,
39 kClipRect_DrawOp, 39 kClipRect_DrawOp,
40 kClipRRect_DrawOp, 40 kClipRRect_DrawOp,
41 kConcat_DrawOp, 41 kConcat_DrawOp,
42 kDrawBitmap_DrawOp, 42 kDrawBitmap_DrawOp,
43 kDrawBitmapNine_DrawOp, 43 kDrawBitmapNine_DrawOp,
44 kDrawBitmapRectToRect_DrawOp, 44 kDrawBitmapRectToRect_DrawOp,
45 kDrawDRRect_DrawOp, 45 kDrawDRRect_DrawOp,
46 kDrawImage_DrawOp,
47 kDrawImageRect_DrawOp,
46 kDrawOval_DrawOp, 48 kDrawOval_DrawOp,
47 kDrawPaint_DrawOp, 49 kDrawPaint_DrawOp,
48 kDrawPatch_DrawOp, 50 kDrawPatch_DrawOp,
49 kDrawPath_DrawOp, 51 kDrawPath_DrawOp,
50 kDrawPicture_DrawOp, 52 kDrawPicture_DrawOp,
51 kDrawPoints_DrawOp, 53 kDrawPoints_DrawOp,
52 kDrawPosText_DrawOp, 54 kDrawPosText_DrawOp,
53 kDrawPosTextH_DrawOp, 55 kDrawPosTextH_DrawOp,
54 kDrawRect_DrawOp, 56 kDrawRect_DrawOp,
55 kDrawRRect_DrawOp, 57 kDrawRRect_DrawOp,
(...skipping 16 matching lines...) Expand all
72 kSetAnnotation_DrawOp, 74 kSetAnnotation_DrawOp,
73 75
74 kDef_Typeface_DrawOp, 76 kDef_Typeface_DrawOp,
75 kDef_Flattenable_DrawOp, 77 kDef_Flattenable_DrawOp,
76 kDef_Bitmap_DrawOp, 78 kDef_Bitmap_DrawOp,
77 kDef_Factory_DrawOp, 79 kDef_Factory_DrawOp,
78 80
79 // these are signals to playback, not drawing verbs 81 // these are signals to playback, not drawing verbs
80 kReportFlags_DrawOp, 82 kReportFlags_DrawOp,
81 kShareBitmapHeap_DrawOp, 83 kShareBitmapHeap_DrawOp,
84 kShareImageHeap_DrawOp,
82 kDone_DrawOp, 85 kDone_DrawOp,
83 }; 86 };
84 87
85 /** 88 /**
86 * DrawOp packs into a 32bit int as follows 89 * DrawOp packs into a 32bit int as follows
87 * 90 *
88 * DrawOp:8 - Flags:4 - Data:20 91 * DrawOp:8 - Flags:4 - Data:20
89 * 92 *
90 * Flags and Data are called out separately, so we can reuse Data between 93 * Flags and Data are called out separately, so we can reuse Data between
91 * different Ops that might have different Flags. e.g. Data might be a Paint 94 * different Ops that might have different Flags. e.g. Data might be a Paint
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 }; 137 };
135 enum { 138 enum {
136 kDrawTextOnPath_HasMatrix_DrawOpFlag = 1 << 0 139 kDrawTextOnPath_HasMatrix_DrawOpFlag = 1 << 0
137 }; 140 };
138 enum { 141 enum {
139 kDrawVertices_HasTexs_DrawOpFlag = 1 << 0, 142 kDrawVertices_HasTexs_DrawOpFlag = 1 << 0,
140 kDrawVertices_HasColors_DrawOpFlag = 1 << 1, 143 kDrawVertices_HasColors_DrawOpFlag = 1 << 1,
141 kDrawVertices_HasIndices_DrawOpFlag = 1 << 2, 144 kDrawVertices_HasIndices_DrawOpFlag = 1 << 2,
142 kDrawVertices_HasXfermode_DrawOpFlag = 1 << 3, 145 kDrawVertices_HasXfermode_DrawOpFlag = 1 << 3,
143 }; 146 };
147 // These are shared between drawbitmap and drawimage
144 enum { 148 enum {
145 kDrawBitmap_HasPaint_DrawOpFlag = 1 << 0, 149 kDrawBitmap_HasPaint_DrawOpFlag = 1 << 0,
146 // Specific to drawBitmapRect, but needs to be different from HasPaint, 150 // Specific to drawBitmapRect, but needs to be different from HasPaint,
147 // which is used for all drawBitmap calls, so include it here. 151 // which is used for all drawBitmap calls, so include it here.
148 kDrawBitmap_HasSrcRect_DrawOpFlag = 1 << 1, 152 kDrawBitmap_HasSrcRect_DrawOpFlag = 1 << 1,
149 // SkCanvas::DrawBitmapRectFlags::kBleed_DrawBitmapRectFlag is 153 // SkCanvas::DrawBitmapRectFlags::kBleed_DrawBitmapRectFlag is
150 // converted into and out of this flag to save space 154 // converted into and out of this flag to save space
151 kDrawBitmap_Bleed_DrawOpFlag = 1 << 2, 155 kDrawBitmap_Bleed_DrawOpFlag = 1 << 2,
152 }; 156 };
153 enum { 157 enum {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 BitmapInfo* fLessRecentlyUsed; 210 BitmapInfo* fLessRecentlyUsed;
207 private: 211 private:
208 int fToBeDrawnCount; 212 int fToBeDrawnCount;
209 }; 213 };
210 214
211 static inline bool shouldFlattenBitmaps(uint32_t flags) { 215 static inline bool shouldFlattenBitmaps(uint32_t flags) {
212 return SkToBool(flags & SkGPipeWriter::kCrossProcess_Flag 216 return SkToBool(flags & SkGPipeWriter::kCrossProcess_Flag
213 && !(flags & SkGPipeWriter::kSharedAddressSpace_Flag)); 217 && !(flags & SkGPipeWriter::kSharedAddressSpace_Flag));
214 } 218 }
215 219
220 class SkImageHeap : public SkRefCnt {
221 public:
222 SkImageHeap();
223 virtual ~SkImageHeap();
224
225 // slot must be "valid" -- 0 is never valid
226 const SkImage* get(int32_t slot) const;
227 // returns 0 if not found, else returns slot
228 int32_t find(const SkImage*) const;
229 // returns non-zero value for where the image was stored
230 int32_t insert(const SkImage*);
231
232 private:
233 SkTDArray<const SkImage*> fArray;
234 };
235
216 /////////////////////////////////////////////////////////////////////////////// 236 ///////////////////////////////////////////////////////////////////////////////
217 237
218 enum PaintOps { 238 enum PaintOps {
219 kReset_PaintOp, // no arg 239 kReset_PaintOp, // no arg
220 240
221 kFlags_PaintOp, // arg inline 241 kFlags_PaintOp, // arg inline
222 kColor_PaintOp, // arg 32 242 kColor_PaintOp, // arg 32
223 kFilterLevel_PaintOp, // arg inline 243 kFilterLevel_PaintOp, // arg inline
224 kStyle_PaintOp, // arg inline 244 kStyle_PaintOp, // arg inline
225 kJoin_PaintOp, // arg inline 245 kJoin_PaintOp, // arg inline
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 SkASSERT(0 == (op & ~PAINTOPS_OP_MASK)); 295 SkASSERT(0 == (op & ~PAINTOPS_OP_MASK));
276 SkASSERT(0 == (flags & ~PAINTOPS_FLAG_MASK)); 296 SkASSERT(0 == (flags & ~PAINTOPS_FLAG_MASK));
277 SkASSERT(0 == (data & ~PAINTOPS_DATA_MASK)); 297 SkASSERT(0 == (data & ~PAINTOPS_DATA_MASK));
278 298
279 return (op << (PAINTOPS_FLAG_BITS + PAINTOPS_DATA_BITS)) | 299 return (op << (PAINTOPS_FLAG_BITS + PAINTOPS_DATA_BITS)) |
280 (flags << PAINTOPS_DATA_BITS) | 300 (flags << PAINTOPS_DATA_BITS) |
281 data; 301 data;
282 } 302 }
283 303
284 #endif 304 #endif
OLDNEW
« no previous file with comments | « src/image/SkImage_Raster.cpp ('k') | src/pipe/SkGPipeRead.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698