Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Factory:Rebuild
nodejs-electron
harfbuzz-replace-chromium-scoped-type.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File harfbuzz-replace-chromium-scoped-type.patch of Package nodejs-electron
From aa2ff2bee16776301bd840a4e18bdebdfb916822 Mon Sep 17 00:00:00 2001 From: Munira Tursunova <moonira@google.com> Date: Tue, 04 Oct 2022 14:20:04 +0000 Subject: [PATCH] Replacing Chromium scoped types with HarfBuzz custom types. Removed the Chromium side type HbScoped and move to the HarfBuzz custom type. Bug: 1363228 Change-Id: I9d390808953e2c36651533cbf5f4958beff2e14d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3927859 Reviewed-by: Dominik Röttsches <drott@chromium.org> Reviewed-by: Rune Lillesveen <futhark@chromium.org> Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org> Commit-Queue: Munira Tursunova <moonira@google.com> Cr-Commit-Position: refs/heads/main@{#1054692} --- diff --git a/components/paint_preview/common/BUILD.gn b/components/paint_preview/common/BUILD.gn index 377dc92..c39757d 100644 --- a/components/paint_preview/common/BUILD.gn +++ b/components/paint_preview/common/BUILD.gn @@ -37,7 +37,6 @@ "//components/crash/core/common:crash_key_lib", "//skia", "//third_party:freetype_harfbuzz", - "//third_party/harfbuzz-ng:hb_scoped_util", "//ui/gfx/geometry", "//url", ] diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc index 8298861d5..147dfc3 100644 --- a/components/paint_preview/common/subset_font.cc +++ b/components/paint_preview/common/subset_font.cc @@ -7,6 +7,7 @@ // clang-format off #include <hb.h> #include <hb-subset.h> +#include <hb-cplusplus.hh> // clang-format on #include <memory> @@ -17,7 +18,6 @@ #include "base/numerics/safe_conversions.h" #include "components/crash/core/common/crash_key.h" #include "skia/ext/font_utils.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include "third_party/skia/include/core/SkFontMgr.h" #include "third_party/skia/include/core/SkStream.h" #include "third_party/skia/include/core/SkTypeface.h" @@ -45,11 +45,11 @@ } // Converts SkData to a hb_blob_t. -HbScoped<hb_blob_t> MakeBlob(sk_sp<SkData> data) { +hb::unique_ptr<hb_blob_t> MakeBlob(sk_sp<SkData> data) { if (!data || !base::IsValueInRangeForNumericType<unsigned int, size_t>(data->size())) - return nullptr; - return HbScoped<hb_blob_t>( + return hb::unique_ptr<hb_blob_t>(nullptr); + return hb::unique_ptr<hb_blob_t>( hb_blob_create(static_cast<const char*>(data->data()), static_cast<unsigned int>(data->size()), HB_MEMORY_MODE_READONLY, nullptr, nullptr)); @@ -72,8 +72,9 @@ family_name.c_str()); int ttc_index = 0; sk_sp<SkData> data = StreamToData(typeface->openStream(&ttc_index)); - HbScoped<hb_face_t> face(hb_face_create(MakeBlob(data).get(), ttc_index)); - HbScoped<hb_subset_input_t> input(hb_subset_input_create_or_fail()); + hb::unique_ptr<hb_face_t> face( + hb_face_create(MakeBlob(data).get(), ttc_index)); + hb::unique_ptr<hb_subset_input_t> input(hb_subset_input_create_or_fail()); if (!face || !input) { return nullptr; } @@ -102,14 +103,16 @@ hb_set_add(skip_subset, HB_TAG('G', 'S', 'U', 'B')); hb_set_add(skip_subset, HB_TAG('G', 'P', 'O', 'S')); - HbScoped<hb_face_t> subset_face(hb_subset_or_fail(face.get(), input.get())); + hb::unique_ptr<hb_face_t> subset_face( + hb_subset_or_fail(face.get(), input.get())); if (!subset_face) { return nullptr; } // Store the correct collection index for the subsetted font. const int final_ttc_index = hb_face_get_index(subset_face.get()); - HbScoped<hb_blob_t> subset_blob(hb_face_reference_blob(subset_face.get())); + hb::unique_ptr<hb_blob_t> subset_blob( + hb_face_reference_blob(subset_face.get())); if (!subset_blob) { return nullptr; } diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 88cef3c..ae88e5a 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn @@ -1683,7 +1683,6 @@ "//third_party/blink/renderer/platform/wtf", "//third_party/ced", "//third_party/emoji-segmenter", - "//third_party/harfbuzz-ng:hb_scoped_util", "//third_party/icu", "//third_party/libyuv", "//third_party/one_euro_filter", diff --git a/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc b/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc index 7c7057b..d43668f1 100644 --- a/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc +++ b/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc @@ -7,10 +7,10 @@ // Include HarfBuzz to have a cross-platform way to retrieve table tags without // having to rely on the platform being able to instantiate this font format. #include <hb.h> +#include <hb-cplusplus.hh> #include "base/sys_byteorder.h" #include "third_party/blink/renderer/platform/wtf/vector.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include "third_party/skia/include/core/SkTypeface.h" namespace blink { @@ -27,7 +27,8 @@ const unsigned int kMinCOLRHeaderSize = 14; if (table_tags.size() && table_tags.Contains(kCOLRTag) && table_tags.Contains(HB_TAG('C', 'P', 'A', 'L'))) { - HbScoped<hb_blob_t> table_blob(hb_face_reference_table(face, kCOLRTag)); + hb::unique_ptr<hb_blob_t> table_blob( + hb_face_reference_table(face, kCOLRTag)); if (hb_blob_get_length(table_blob.get()) < kMinCOLRHeaderSize) return FontFormatCheck::COLRVersion::kNoCOLR; @@ -51,11 +52,11 @@ } // namespace FontFormatCheck::FontFormatCheck(sk_sp<SkData> sk_data) { - HbScoped<hb_blob_t> font_blob( + hb::unique_ptr<hb_blob_t> font_blob( hb_blob_create(reinterpret_cast<const char*>(sk_data->bytes()), base::checked_cast<unsigned>(sk_data->size()), HB_MEMORY_MODE_READONLY, nullptr, nullptr)); - HbScoped<hb_face_t> face(hb_face_create(font_blob.get(), 0)); + hb::unique_ptr<hb_face_t> face(hb_face_create(font_blob.get(), 0)); unsigned table_count = 0; table_count = hb_face_get_table_tags(face.get(), 0, nullptr, nullptr); diff --git a/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc b/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc index 5e6d1f2..73b984a 100644 --- a/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc +++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc @@ -5,10 +5,10 @@ // clang-format off #include <hb.h> #include <hb-aat.h> +#include <hb-cplusplus.hh> // clang-format on #include "third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" namespace blink { @@ -146,9 +146,9 @@ hb_face_t* const hb_face = hb_font_get_face(harfbuzz_face_->GetScaledFont()); - HbScoped<hb_blob_t> morx_blob( + hb::unique_ptr<hb_blob_t> morx_blob( hb_face_reference_table(hb_face, HB_TAG('m', 'o', 'r', 'x'))); - HbScoped<hb_blob_t> mort_blob( + hb::unique_ptr<hb_blob_t> mort_blob( hb_face_reference_table(hb_face, HB_TAG('m', 'o', 'r', 't'))); // TODO(crbug.com/911149): Use hb_aat_layout_has_substitution() for diff --git a/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc b/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc index 86c289c..98cbd7a 100644 --- a/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc +++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc @@ -6,11 +6,11 @@ #include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include "third_party/skia/include/core/SkStream.h" // clang-format off #include <hb.h> +#include <hb-cplusplus.hh> #include <hb-ot.h> // clang-format on @@ -28,7 +28,7 @@ if (!typeface || !typeface->getTableSize(kCpalTag)) return absl::nullopt; - HbScoped<hb_face_t> face(HbFaceFromSkTypeface(typeface)); + hb::unique_ptr<hb_face_t> face(HbFaceFromSkTypeface(typeface)); if (!face || !hb_ot_color_has_palettes(face.get())) return absl::nullopt; @@ -49,7 +49,7 @@ absl::optional<uint16_t> OpenTypeCpalLoo Vector<Color> OpenTypeCpalLookup::RetrieveColorRecords( sk_sp<SkTypeface> typeface, unsigned palette_index) { - HbScoped<hb_face_t> face(HbFaceFromSkTypeface(typeface)); + hb::unique_ptr<hb_face_t> face(HbFaceFromSkTypeface(typeface)); if (!face) { return Vector<Color>(); diff --git a/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc b/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc index ebab0fa8..4ecd886 100644 --- a/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc +++ b/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc @@ -4,12 +4,12 @@ #include "third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include "third_party/skia/include/core/SkStream.h" #include "third_party/skia/include/core/SkTypeface.h" // clang-format off #include <hb.h> +#include <hb-cplusplus.hh> #include <hb-ot.h> // clang-format on @@ -23,11 +23,11 @@ return output; sk_sp<SkData> sk_data = SkData::MakeFromStream(stream.get(), stream->getLength()); - HbScoped<hb_blob_t> blob( + hb::unique_ptr<hb_blob_t> blob( hb_blob_create(reinterpret_cast<const char*>(sk_data->bytes()), base::checked_cast<unsigned>(sk_data->size()), HB_MEMORY_MODE_READONLY, nullptr, nullptr)); - HbScoped<hb_face_t> face(hb_face_create(blob.get(), 0)); + hb::unique_ptr<hb_face_t> face(hb_face_create(blob.get(), 0)); unsigned axes_count = hb_ot_var_get_axis_count(face.get()); std::unique_ptr<hb_ot_var_axis_info_t[]> axes = std::make_unique<hb_ot_var_axis_info_t[]>(axes_count); diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc index b4bb5a3..b6ee0a8f 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc @@ -32,6 +32,7 @@ // clang-format off #include <hb.h> +#include <hb-cplusplus.hh> #include <hb-ot.h> // clang-format on @@ -52,7 +53,6 @@ #include "third_party/blink/renderer/platform/wtf/hash_map.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" #include "third_party/blink/renderer/platform/wtf/text/character_names.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include "third_party/skia/include/core/SkPaint.h" #include "third_party/skia/include/core/SkPath.h" #include "third_party/skia/include/core/SkPoint.h" @@ -203,7 +203,7 @@ const hb_codepoint_t kInvalidCodepoint = static_cast<hb_codepoint_t>(-1); hb_codepoint_t space = kInvalidCodepoint; - HbScoped<hb_set_t> glyphs(hb_set_create()); + hb::unique_ptr<hb_set_t> glyphs(hb_set_create()); // Check whether computing is needed and compute for gpos/gsub. if (features & kKerning && @@ -391,8 +391,8 @@ } // TODO(yosin): We should move |CreateFace()| to "harfbuzz_font_cache.cc". -static HbScoped<hb_face_t> CreateFace(FontPlatformData* platform_data) { - HbScoped<hb_face_t> face; +static hb::unique_ptr<hb_face_t> CreateFace(FontPlatformData* platform_data) { + hb::unique_ptr<hb_face_t> face; sk_sp<SkTypeface> typeface = sk_ref_sp(platform_data->Typeface()); CHECK(typeface); @@ -402,8 +402,8 @@ // Fallback to table copies if there is no in-memory access. if (!face) { - face.reset(hb_face_create_for_tables(HarfBuzzSkiaGetTable, typeface.get(), - nullptr)); + face = hb::unique_ptr<hb_face_t>(hb_face_create_for_tables( + HarfBuzzSkiaGetTable, typeface.get(), nullptr)); } DCHECK(face); @@ -415,7 +415,7 @@ static scoped_refptr<HarfBuzzFontData> CreateHarfBuzzFontData( hb_face_t* face, SkTypeface* typeface) { - HbScoped<hb_font_t> ot_font(hb_font_create(face)); + hb::unique_ptr<hb_font_t> ot_font(hb_font_create(face)); hb_ot_font_set_funcs(ot_font.get()); int axis_count = typeface->getVariationDesignPosition(nullptr, 0); @@ -445,7 +445,7 @@ FontPlatformData* platform_data) { const auto& result = font_map_.insert(platform_data->UniqueID(), nullptr); if (result.is_new_entry) { - HbScoped<hb_face_t> face = CreateFace(platform_data); + hb::unique_ptr<hb_face_t> face = CreateFace(platform_data); result.stored_value->value = CreateHarfBuzzFontData(face.get(), platform_data->Typeface()); } diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h index cbfb1c15..eb0dcb75 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h @@ -38,9 +38,9 @@ #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/ref_counted.h" #include "third_party/blink/renderer/platform/wtf/text/character_names.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include <hb.h> +#include <hb-cplusplus.hh> namespace blink { diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc index 4561bc9..a2d2eb1d 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc @@ -16,9 +16,8 @@ } // namespace namespace blink { - -HbScoped<hb_face_t> HbFaceFromSkTypeface(sk_sp<SkTypeface> typeface) { - HbScoped<hb_face_t> return_face(nullptr); +hb::unique_ptr<hb_face_t> HbFaceFromSkTypeface(sk_sp<SkTypeface> typeface) { + hb::unique_ptr<hb_face_t> return_face(nullptr); int ttc_index = 0; // Have openStream() write the ttc index of this typeface within the stream to @@ -28,7 +27,7 @@ if (tf_stream && tf_stream->getMemoryBase()) { const void* tf_memory = tf_stream->getMemoryBase(); size_t tf_size = tf_stream->getLength(); - HbScoped<hb_blob_t> face_blob(hb_blob_create( + hb::unique_ptr<hb_blob_t> face_blob(hb_blob_create( reinterpret_cast<const char*>(tf_memory), base::checked_cast<unsigned int>(tf_size), HB_MEMORY_MODE_READONLY, tf_stream.release(), DeleteTypefaceStream)); @@ -38,7 +37,8 @@ // See https://github.com/harfbuzz/harfbuzz/issues/248 . unsigned int num_hb_faces = hb_face_count(face_blob.get()); if (0 < num_hb_faces && static_cast<unsigned>(ttc_index) < num_hb_faces) { - return_face.reset(hb_face_create(face_blob.get(), ttc_index)); + return_face = + hb::unique_ptr<hb_face_t>(hb_face_create(face_blob.get(), ttc_index)); } } return return_face; diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h index 8817f06..f00d6f2 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h @@ -8,9 +8,8 @@ #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/skia/include/core/SkTypeface.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" - #include <hb.h> +#include <hb-cplusplus.hh> namespace blink { @@ -25,7 +24,7 @@ // from copying all font tables on Mac into newly allocated memory, causing a // potentially quite large allocations (in the megabytes range). See the // implementation of SkTypeface_Mac::onOpenStream. -PLATFORM_EXPORT HbScoped<hb_face_t> HbFaceFromSkTypeface( +PLATFORM_EXPORT hb::unique_ptr<hb_face_t> HbFaceFromSkTypeface( sk_sp<SkTypeface> typeface); } // namespace blink diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc index 763f3a3..c50910df 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc @@ -5,12 +5,11 @@ #include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h" #include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h" #include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" namespace blink { HbFontCacheEntry::HbFontCacheEntry(hb_font_t* font) - : hb_font_(HbScoped<hb_font_t>(font)), + : hb_font_(hb::unique_ptr<hb_font_t>(font)), hb_font_data_(std::make_unique<HarfBuzzFontData>()) {} HbFontCacheEntry::~HbFontCacheEntry() = default; diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h index 1b0accf..eaedd0b 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h @@ -7,9 +7,9 @@ #include "third_party/blink/renderer/platform/fonts/font_metrics.h" #include "third_party/blink/renderer/platform/fonts/unicode_range_set.h" -#include "third_party/harfbuzz-ng/utils/hb_scoped.h" #include <hb.h> +#include <hb-cplusplus.hh> #include <memory> @@ -39,7 +39,7 @@ class HbFontCacheEntry : public RefCount private: explicit HbFontCacheEntry(hb_font_t* font); - HbScoped<hb_font_t> hb_font_; + hb::unique_ptr<hb_font_t> hb_font_; std::unique_ptr<HarfBuzzFontData> hb_font_data_; }; diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h index caf5d49..0d4b6f9 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h @@ -5,6 +5,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FONT_DATA_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FONT_DATA_H_ +#include <hb-cplusplus.hh> + #include "base/check_op.h" #include "third_party/blink/renderer/platform/fonts/font_platform_data.h" #include "third_party/blink/renderer/platform/fonts/opentype/open_type_vertical_data.h" @@ -81,7 +83,7 @@ return vertical_data_; } - HbScoped<hb_font_t> unscaled_font_; + hb::unique_ptr<hb_font_t> unscaled_font_; SkFont font_; // Capture these scaled fallback metrics from FontPlatformData so that a diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn index 522e164d..4b64e1b 100644 --- a/third_party/harfbuzz-ng/BUILD.gn +++ b/third_party/harfbuzz-ng/BUILD.gn @@ -41,6 +41,7 @@ "src/src/hb-blob.h", "src/src/hb-buffer.h", "src/src/hb-common.h", + "src/src/hb-cplusplus.hh", "src/src/hb-deprecated.h", "src/src/hb-face.h", "src/src/hb-font.h", @@ -409,11 +410,6 @@ } } -source_set("hb_scoped_util") { - sources = [ "utils/hb_scoped.h" ] - deps = [ "//third_party:freetype_harfbuzz" ] -} - # Not all checkouts have a //base directory. if (build_with_chromium) { fuzzer_test("hb_shape_fuzzer") { diff --git a/third_party/harfbuzz-ng/utils/hb_scoped.h b/third_party/harfbuzz-ng/utils/hb_scoped.h deleted file mode 100644 index 887f6b90..0000000 --- a/third_party/harfbuzz-ng/utils/hb_scoped.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_ -#define THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_ - -// clang-format off -#include <hb.h> -#include <hb-subset.h> -// clang-format on - -#include <memory> -#include <type_traits> - -template <typename T> -struct always_false : std::false_type {}; - -template <class T> -struct HbSpecializedDeleter { - inline void operator()(T* obj) { - static_assert(always_false<T>::value, - "HbScoped is only allowed for HarfBuzz types that have a " - "deleter specialization."); - } -}; - -// Defines a scoped pointer type HbScoped based on std::unique_ptr, using the -// corresponsing HarfBuzz destructors to commonly used public HarfBuzz types. -// The interface of HbScoped is the same as that of std::unique_ptr. -// -// void MyFunction() { -// HbScoped<hb_blob_t> scoped_harfbuzz_blob( -// hb_blob_create(mydata, mylength)); -// -// DoSomethingWithBlob(scoped_harfbuzz_blob.get()); -// } -// -// When |scoped_harfbuzz_buffer| goes out of scope, hb_blob_destroy() is called -// for the hb_blob_t* created from hb_blob_create(). -template <class T> -using HbScoped = std::unique_ptr<T, HbSpecializedDeleter<T>>; - -#define SPECIALIZED_DELETER_FOR_HARFBUZZ_TYPE(TYPE, DESTRUCTOR) \ - template <> \ - struct HbSpecializedDeleter<TYPE> { \ - inline void operator()(TYPE* obj) { DESTRUCTOR(obj); } \ - }; - -#define HB_TYPE_DESTRUCTOR_PAIRS_REPEAT(F) \ - F(hb_blob_t, hb_blob_destroy) \ - F(hb_buffer_t, hb_buffer_destroy) \ - F(hb_face_t, hb_face_destroy) \ - F(hb_font_t, hb_font_destroy) \ - F(hb_set_t, hb_set_destroy) \ - F(hb_subset_input_t, hb_subset_input_destroy) - -HB_TYPE_DESTRUCTOR_PAIRS_REPEAT(SPECIALIZED_DELETER_FOR_HARFBUZZ_TYPE) - -#endif // THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor