11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2009 The Android Open Source Project 440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger */ 840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 1040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#ifndef SkCubicClipper_DEFINED 1140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#define SkCubicClipper_DEFINED 1240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 1340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include "SkPoint.h" 1440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include "SkRect.h" 1540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 1640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger/** This class is initialized with a clip rectangle, and then can be fed cubics, 1740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger which must already be monotonic in Y. 1840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 1940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger In the future, it might return a series of segments, allowing it to clip 2040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger also in X, to ensure that all segments fit in a finite coordinate system. 2140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger */ 2240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergerclass SkCubicClipper { 2340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergerpublic: 2440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkCubicClipper(); 2540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 2640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger void setClip(const SkIRect& clip); 2740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 2840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger bool clipCubic(const SkPoint src[4], SkPoint dst[4]); 2940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 3040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergerprivate: 3140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger SkRect fClip; 3240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}; 3340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger 3440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#endif // SkCubicClipper_DEFINED 35