// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_GFX_PATH_H_ #define UI_GFX_PATH_H_ #include "base/basictypes.h" #include "third_party/skia/include/core/SkPath.h" #include "ui/gfx/gfx_export.h" #include "ui/gfx/native_widget_types.h" namespace gfx { class GFX_EXPORT Path : public SkPath { public: // Used by Path(Point,size_t) constructor. struct Point { int x; int y; }; struct PointF { float x; float y; }; Path(); // Creates a path populated with the specified points. Path(const Point* points, size_t count); Path(const PointF* points, size_t count); ~Path(); #if defined(USE_AURA) || defined(USE_X11) // Creates a NativeRegion from the path. The caller is responsible for freeing // resources used by this region. This only supports polygon paths. NativeRegion CreateNativeRegion() const; // Returns the intersection of the two regions. The caller owns the returned // object. static gfx::NativeRegion IntersectRegions(gfx::NativeRegion r1, gfx::NativeRegion r2); // Returns the union of the two regions. The caller owns the returned object. static gfx::NativeRegion CombineRegions(gfx::NativeRegion r1, gfx::NativeRegion r2); // Returns the difference of the two regions. The caller owns the returned // object. static gfx::NativeRegion SubtractRegion(gfx::NativeRegion r1, gfx::NativeRegion r2); #endif private: DISALLOW_COPY_AND_ASSIGN(Path); }; } #endif // UI_GFX_PATH_H_