blob: 9d4a2bbcdfc5514e27aa74de4b9ad80e85c58a7f [file] [log] [blame]
// Copyright 2013 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/x/x11_path.h"
#include <memory>
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRegion.h"
namespace x11 {
std::unique_ptr<std::vector<Rectangle>> CreateRegionFromSkRegion(
const SkRegion& region) {
auto result = std::make_unique<std::vector<Rectangle>>();
for (SkRegion::Iterator i(region); !i.done(); i.next()) {
result->push_back({
.x = static_cast<int16_t>(i.rect().x()),
.y = static_cast<int16_t>(i.rect().y()),
.width = static_cast<uint16_t>(i.rect().width()),
.height = static_cast<uint16_t>(i.rect().height()),
});
}
return result;
}
std::unique_ptr<std::vector<Rectangle>> CreateRegionFromSkPath(
const SkPath& path) {
SkRegion clip{path.getBounds().roundOut()};
SkRegion region;
region.setPath(path, clip);
return CreateRegionFromSkRegion(region);
}
} // namespace x11