12345678910111213141516171819202122232425262728293031323334353637 |
- // Copyright (c) 2011 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.
- #include "ui/gfx/path_win.h"
- #include <memory>
- #include "base/win/scoped_gdi_object.h"
- #include "third_party/skia/include/core/SkPath.h"
- #include "third_party/skia/include/core/SkRegion.h"
- namespace gfx {
- HRGN CreateHRGNFromSkRegion(const SkRegion& region) {
- base::win::ScopedRegion temp(::CreateRectRgn(0, 0, 0, 0));
- base::win::ScopedRegion result(::CreateRectRgn(0, 0, 0, 0));
- for (SkRegion::Iterator i(region); !i.done(); i.next()) {
- const SkIRect& rect = i.rect();
- ::SetRectRgn(temp.get(),
- rect.left(), rect.top(), rect.right(), rect.bottom());
- ::CombineRgn(result.get(), result.get(), temp.get(), RGN_OR);
- }
- return result.release();
- }
- HRGN CreateHRGNFromSkPath(const SkPath& path) {
- SkRegion clip_region;
- clip_region.setRect(path.getBounds().round());
- SkRegion region;
- region.setPath(path, clip_region);
- return CreateHRGNFromSkRegion(region);
- }
- } // namespace gfx
|