1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2021 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "modules/jetski/src/Utils.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker namespace jetski { 11*c8dee2aaSAndroid Build Coastguard Worker namespace utils { 12*c8dee2aaSAndroid Build Coastguard Worker SamplingOptions(jint desc,jfloat coeffB,jfloat coeffC)13*c8dee2aaSAndroid Build Coastguard WorkerSkSamplingOptions SamplingOptions(jint desc, jfloat coeffB, jfloat coeffC) { 14*c8dee2aaSAndroid Build Coastguard Worker if (desc & 0x01) { 15*c8dee2aaSAndroid Build Coastguard Worker return SkSamplingOptions(SkCubicResampler{coeffB, coeffC}); 16*c8dee2aaSAndroid Build Coastguard Worker } 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker const auto fm = static_cast<SkFilterMode>((desc >> 1) & 0x01); 19*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(fm <= SkFilterMode::kLast); 20*c8dee2aaSAndroid Build Coastguard Worker const auto mm = static_cast<SkMipmapMode>((desc >> 2) & 0x03); 21*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(mm <= SkMipmapMode::kLast); 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker return SkSamplingOptions(fm, mm); 24*c8dee2aaSAndroid Build Coastguard Worker } 25*c8dee2aaSAndroid Build Coastguard Worker TileMode(jint tm)26*c8dee2aaSAndroid Build Coastguard WorkerSkTileMode TileMode(jint tm) { 27*c8dee2aaSAndroid Build Coastguard Worker // to catch Skia API changes 28*c8dee2aaSAndroid Build Coastguard Worker static_assert(static_cast<int>(SkTileMode::kClamp ) == 0); 29*c8dee2aaSAndroid Build Coastguard Worker static_assert(static_cast<int>(SkTileMode::kRepeat) == 1); 30*c8dee2aaSAndroid Build Coastguard Worker static_assert(static_cast<int>(SkTileMode::kMirror) == 2); 31*c8dee2aaSAndroid Build Coastguard Worker static_assert(static_cast<int>(SkTileMode::kDecal ) == 3); 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker return static_cast<SkTileMode>(tm); 34*c8dee2aaSAndroid Build Coastguard Worker } 35*c8dee2aaSAndroid Build Coastguard Worker BlendMode(jint bm)36*c8dee2aaSAndroid Build Coastguard WorkerSkBlendMode BlendMode(jint bm) { 37*c8dee2aaSAndroid Build Coastguard Worker // catch API changes 38*c8dee2aaSAndroid Build Coastguard Worker static_assert(0 == static_cast<int>(SkBlendMode::kClear)); 39*c8dee2aaSAndroid Build Coastguard Worker static_assert(1 == static_cast<int>(SkBlendMode::kSrc)); 40*c8dee2aaSAndroid Build Coastguard Worker static_assert(2 == static_cast<int>(SkBlendMode::kDst)); 41*c8dee2aaSAndroid Build Coastguard Worker static_assert(3 == static_cast<int>(SkBlendMode::kSrcOver)); 42*c8dee2aaSAndroid Build Coastguard Worker static_assert(4 == static_cast<int>(SkBlendMode::kDstOver)); 43*c8dee2aaSAndroid Build Coastguard Worker static_assert(5 == static_cast<int>(SkBlendMode::kSrcIn)); 44*c8dee2aaSAndroid Build Coastguard Worker static_assert(6 == static_cast<int>(SkBlendMode::kDstIn)); 45*c8dee2aaSAndroid Build Coastguard Worker static_assert(7 == static_cast<int>(SkBlendMode::kSrcOut)); 46*c8dee2aaSAndroid Build Coastguard Worker static_assert(8 == static_cast<int>(SkBlendMode::kDstOut)); 47*c8dee2aaSAndroid Build Coastguard Worker static_assert(9 == static_cast<int>(SkBlendMode::kSrcATop)); 48*c8dee2aaSAndroid Build Coastguard Worker static_assert(10 == static_cast<int>(SkBlendMode::kDstATop)); 49*c8dee2aaSAndroid Build Coastguard Worker static_assert(11 == static_cast<int>(SkBlendMode::kXor)); 50*c8dee2aaSAndroid Build Coastguard Worker static_assert(12 == static_cast<int>(SkBlendMode::kPlus)); 51*c8dee2aaSAndroid Build Coastguard Worker static_assert(13 == static_cast<int>(SkBlendMode::kModulate)); 52*c8dee2aaSAndroid Build Coastguard Worker static_assert(14 == static_cast<int>(SkBlendMode::kScreen)); 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Worker static_assert(15 == static_cast<int>(SkBlendMode::kOverlay)); 55*c8dee2aaSAndroid Build Coastguard Worker static_assert(16 == static_cast<int>(SkBlendMode::kDarken)); 56*c8dee2aaSAndroid Build Coastguard Worker static_assert(17 == static_cast<int>(SkBlendMode::kLighten)); 57*c8dee2aaSAndroid Build Coastguard Worker static_assert(18 == static_cast<int>(SkBlendMode::kColorDodge)); 58*c8dee2aaSAndroid Build Coastguard Worker static_assert(19 == static_cast<int>(SkBlendMode::kColorBurn)); 59*c8dee2aaSAndroid Build Coastguard Worker static_assert(20 == static_cast<int>(SkBlendMode::kHardLight)); 60*c8dee2aaSAndroid Build Coastguard Worker static_assert(21 == static_cast<int>(SkBlendMode::kSoftLight)); 61*c8dee2aaSAndroid Build Coastguard Worker static_assert(22 == static_cast<int>(SkBlendMode::kDifference)); 62*c8dee2aaSAndroid Build Coastguard Worker static_assert(23 == static_cast<int>(SkBlendMode::kExclusion)); 63*c8dee2aaSAndroid Build Coastguard Worker static_assert(24 == static_cast<int>(SkBlendMode::kMultiply)); 64*c8dee2aaSAndroid Build Coastguard Worker 65*c8dee2aaSAndroid Build Coastguard Worker static_assert(25 == static_cast<int>(SkBlendMode::kHue)); 66*c8dee2aaSAndroid Build Coastguard Worker static_assert(26 == static_cast<int>(SkBlendMode::kSaturation)); 67*c8dee2aaSAndroid Build Coastguard Worker static_assert(27 == static_cast<int>(SkBlendMode::kColor)); 68*c8dee2aaSAndroid Build Coastguard Worker static_assert(28 == static_cast<int>(SkBlendMode::kLuminosity)); 69*c8dee2aaSAndroid Build Coastguard Worker 70*c8dee2aaSAndroid Build Coastguard Worker 71*c8dee2aaSAndroid Build Coastguard Worker return static_cast<SkBlendMode>(bm); 72*c8dee2aaSAndroid Build Coastguard Worker } 73*c8dee2aaSAndroid Build Coastguard Worker 74*c8dee2aaSAndroid Build Coastguard Worker } // namespace utils 75*c8dee2aaSAndroid Build Coastguard Worker } // namespace jetski 76