15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2011 Google Inc. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SkClampRange_DEFINED 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SkClampRange_DEFINED 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkFixed.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Iteration fixed fx by dx, clamping as you go to [0..0xFFFF], this class 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * computes the (up to) 3 spans there are: 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * range0: use constant value V0 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * range1: iterate as usual fx += dx 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * range2: use constant value V1 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SkClampRange { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int fCount0; // count for fV0 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int fCount1; // count for interpolating (fV0...fV1) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int fCount2; // count for fV1 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkFixed fFx1; // initial fx value for the fCount1 range. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // only valid if fCount1 > 0 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int fV0, fV1; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void init(SkFixed fx, SkFixed dx, int count, int v0, int v1); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)private: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void initFor1(SkFixed fx); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)