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

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

Issue 1829303002: move setshader to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: addressing comments from #8 Created 4 years, 8 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/core/SkLightingShader.h ('k') | src/core/SkPaint.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 2015 Google Inc. 3 * Copyright 2015 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 #include "SkBitmapProcState.h" 9 #include "SkBitmapProcState.h"
10 #include "SkColor.h" 10 #include "SkColor.h"
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 static bool bitmap_is_too_big(const SkBitmap& bm) { 693 static bool bitmap_is_too_big(const SkBitmap& bm) {
694 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it 694 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it
695 // communicates between its matrix-proc and its sampler-proc. Until we can 695 // communicates between its matrix-proc and its sampler-proc. Until we can
696 // widen that, we have to reject bitmaps that are larger. 696 // widen that, we have to reject bitmaps that are larger.
697 // 697 //
698 static const int kMaxSize = 65535; 698 static const int kMaxSize = 65535;
699 699
700 return bm.width() > kMaxSize || bm.height() > kMaxSize; 700 return bm.width() > kMaxSize || bm.height() > kMaxSize;
701 } 701 }
702 702
703 SkShader* SkLightingShader::Create(const SkBitmap& diffuse, const SkBitmap& norm al, 703 sk_sp<SkShader> SkLightingShader::Make(const SkBitmap& diffuse, const SkBitmap& normal,
704 const Lights* lights, 704 const Lights* lights,
705 const SkVector& invNormRotation, 705 const SkVector& invNormRotation,
706 const SkMatrix* diffLocalM, const SkMatrix* n ormLocalM) { 706 const SkMatrix* diffLocalM, const SkMatri x* normLocalM) {
707 if (diffuse.isNull() || bitmap_is_too_big(diffuse) || 707 if (diffuse.isNull() || bitmap_is_too_big(diffuse) ||
708 normal.isNull() || bitmap_is_too_big(normal) || 708 normal.isNull() || bitmap_is_too_big(normal) ||
709 diffuse.width() != normal.width() || 709 diffuse.width() != normal.width() ||
710 diffuse.height() != normal.height()) { 710 diffuse.height() != normal.height()) {
711 return nullptr; 711 return nullptr;
712 } 712 }
713 713
714 SkASSERT(SkScalarNearlyEqual(invNormRotation.lengthSqd(), SK_Scalar1)); 714 SkASSERT(SkScalarNearlyEqual(invNormRotation.lengthSqd(), SK_Scalar1));
715 715
716 return new SkLightingShaderImpl(diffuse, normal, lights, invNormRotation, di ffLocalM, 716 return sk_make_sp<SkLightingShaderImpl>(diffuse, normal, lights, invNormRota tion, diffLocalM,
717 normLocalM); 717 normLocalM);
718 } 718 }
719 719
720 /////////////////////////////////////////////////////////////////////////////// 720 ///////////////////////////////////////////////////////////////////////////////
721 721
722 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingShader) 722 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingShader)
723 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingShaderImpl) 723 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingShaderImpl)
724 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 724 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
725 725
726 /////////////////////////////////////////////////////////////////////////////// 726 ///////////////////////////////////////////////////////////////////////////////
OLDNEW
« no previous file with comments | « src/core/SkLightingShader.h ('k') | src/core/SkPaint.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698