15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_GFX_PATH_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_GFX_PATH_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkPath.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/gfx_export.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class GFX_EXPORT Path : public SkPath { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used by Path(Point,size_t) constructor. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct Point { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int x; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int y; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PointF { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) float x; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) float y; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Path(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a path populated with the specified points. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Path(const Point* points, size_t count); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Path(const PointF* points, size_t count); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Path(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_AURA) || defined(USE_X11) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a NativeRegion from the path. The caller is responsible for freeing 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // resources used by this region. This only supports polygon paths. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeRegion CreateNativeRegion() const; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the intersection of the two regions. The caller owns the returned 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // object. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static gfx::NativeRegion IntersectRegions(gfx::NativeRegion r1, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeRegion r2); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the union of the two regions. The caller owns the returned object. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static gfx::NativeRegion CombineRegions(gfx::NativeRegion r1, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeRegion r2); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the difference of the two regions. The caller owns the returned 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // object. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static gfx::NativeRegion SubtractRegion(gfx::NativeRegion r1, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeRegion r2); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Path); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_GFX_PATH_H_ 62