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

Side by Side Diff: src/core/SkDraw.cpp

Issue 267923005: remove unneeded SkShader::validContext (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
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 #include "SkDraw.h" 8 #include "SkDraw.h"
9 #include "SkBlitter.h" 9 #include "SkBlitter.h"
10 #include "SkBounder.h" 10 #include "SkBounder.h"
(...skipping 2335 matching lines...) Expand 10 before | Expand all | Expand 10 after
2346 dst[0] = verts[state.f0]; 2346 dst[0] = verts[state.f0];
2347 dst[1] = verts[state.f1]; 2347 dst[1] = verts[state.f1];
2348 dst[2] = verts[state.f2]; 2348 dst[2] = verts[state.f2];
2349 return matrix->setPolyToPoly(src, dst, 3); 2349 return matrix->setPolyToPoly(src, dst, 3);
2350 } 2350 }
2351 2351
2352 class SkTriColorShader : public SkShader { 2352 class SkTriColorShader : public SkShader {
2353 public: 2353 public:
2354 SkTriColorShader() {} 2354 SkTriColorShader() {}
2355 2355
2356 virtual SkShader::Context* createContext(const ContextRec&, void*) const SK_ OVERRIDE;
2357 virtual size_t contextSize() const SK_OVERRIDE; 2356 virtual size_t contextSize() const SK_OVERRIDE;
2358 2357
2359 class TriColorShaderContext : public SkShader::Context { 2358 class TriColorShaderContext : public SkShader::Context {
2360 public: 2359 public:
2361 TriColorShaderContext(const SkTriColorShader& shader, const ContextRec&) ; 2360 TriColorShaderContext(const SkTriColorShader& shader, const ContextRec&) ;
2362 virtual ~TriColorShaderContext(); 2361 virtual ~TriColorShaderContext();
2363 2362
2364 bool setup(const SkPoint pts[], const SkColor colors[], int, int, int); 2363 bool setup(const SkPoint pts[], const SkColor colors[], int, int, int);
2365 2364
2366 virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVE RRIDE; 2365 virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVE RRIDE;
2367 2366
2368 private: 2367 private:
2369 SkMatrix fDstToUnit; 2368 SkMatrix fDstToUnit;
2370 SkPMColor fColors[3]; 2369 SkPMColor fColors[3];
2371 2370
2372 typedef SkShader::Context INHERITED; 2371 typedef SkShader::Context INHERITED;
2373 }; 2372 };
2374 2373
2375 SK_TO_STRING_OVERRIDE() 2374 SK_TO_STRING_OVERRIDE()
2376 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTriColorShader) 2375 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTriColorShader)
2377 2376
2378 protected: 2377 protected:
2379 SkTriColorShader(SkReadBuffer& buffer) : SkShader(buffer) {} 2378 SkTriColorShader(SkReadBuffer& buffer) : SkShader(buffer) {}
2380 2379
2380 virtual Context* onCreateContext(const ContextRec& rec, void* storage) const SK_OVERRIDE {
2381 return SkNEW_PLACEMENT_ARGS(storage, TriColorShaderContext, (*this, rec) );
2382 }
2383
2381 private: 2384 private:
2382 typedef SkShader INHERITED; 2385 typedef SkShader INHERITED;
2383 }; 2386 };
2384 2387
2385 SkShader::Context* SkTriColorShader::createContext(const ContextRec& rec, void* storage) const {
2386 if (!this->validContext(rec)) {
2387 return NULL;
2388 }
2389
2390 return SkNEW_PLACEMENT_ARGS(storage, TriColorShaderContext, (*this, rec));
2391 }
2392
2393 bool SkTriColorShader::TriColorShaderContext::setup(const SkPoint pts[], const S kColor colors[], 2388 bool SkTriColorShader::TriColorShaderContext::setup(const SkPoint pts[], const S kColor colors[],
2394 int index0, int index1, int index2) { 2389 int index0, int index1, int index2) {
2395 2390
2396 fColors[0] = SkPreMultiplyColor(colors[index0]); 2391 fColors[0] = SkPreMultiplyColor(colors[index0]);
2397 fColors[1] = SkPreMultiplyColor(colors[index1]); 2392 fColors[1] = SkPreMultiplyColor(colors[index1]);
2398 fColors[2] = SkPreMultiplyColor(colors[index2]); 2393 fColors[2] = SkPreMultiplyColor(colors[index2]);
2399 2394
2400 SkMatrix m, im; 2395 SkMatrix m, im;
2401 m.reset(); 2396 m.reset();
2402 m.set(0, pts[index1].fX - pts[index0].fX); 2397 m.set(0, pts[index1].fX - pts[index0].fX);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2557 SkMatrix savedLocalM; 2552 SkMatrix savedLocalM;
2558 if (shader) { 2553 if (shader) {
2559 savedLocalM = shader->getLocalMatrix(); 2554 savedLocalM = shader->getLocalMatrix();
2560 } 2555 }
2561 2556
2562 while (vertProc(&state)) { 2557 while (vertProc(&state)) {
2563 if (NULL != textures) { 2558 if (NULL != textures) {
2564 if (texture_to_matrix(state, vertices, textures, &tempM)) { 2559 if (texture_to_matrix(state, vertices, textures, &tempM)) {
2565 tempM.postConcat(savedLocalM); 2560 tempM.postConcat(savedLocalM);
2566 shader->setLocalMatrix(tempM); 2561 shader->setLocalMatrix(tempM);
2567 if (!blitter->resetShaderContext(*fBitmap, p, *fMatrix)) { 2562 if (!blitter->resetShaderContext(*fBitmap, p, *fMatrix)) {
scroggo 2014/05/05 14:01:19 The SkSmallAllocator will eventually call ~Context
reed1 2014/05/05 15:10:01 Will change resetShaderContext to always have some
2568 continue; 2563 continue;
2569 } 2564 }
2570 } 2565 }
2571 } 2566 }
2572 if (NULL != colors) { 2567 if (NULL != colors) {
2573 // Find the context for triShader. 2568 // Find the context for triShader.
2574 SkTriColorShader::TriColorShaderContext* triColorShaderContext; 2569 SkTriColorShader::TriColorShaderContext* triColorShaderContext;
2575 2570
2576 SkShader::Context* shaderContext = blitter->getShaderContext(); 2571 SkShader::Context* shaderContext = blitter->getShaderContext();
2577 SkASSERT(shaderContext); 2572 SkASSERT(shaderContext);
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
2829 mask->fImage = SkMask::AllocImage(size); 2824 mask->fImage = SkMask::AllocImage(size);
2830 memset(mask->fImage, 0, mask->computeImageSize()); 2825 memset(mask->fImage, 0, mask->computeImageSize());
2831 } 2826 }
2832 2827
2833 if (SkMask::kJustComputeBounds_CreateMode != mode) { 2828 if (SkMask::kJustComputeBounds_CreateMode != mode) {
2834 draw_into_mask(*mask, devPath, style); 2829 draw_into_mask(*mask, devPath, style);
2835 } 2830 }
2836 2831
2837 return true; 2832 return true;
2838 } 2833 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698