blob: 0b8956c949c0ad5639772ad6450511bf5613a531 [file] [log] [blame]
// Copyright 2015 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_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_SHAPE_RESULT_TEST_INFO_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_SHAPE_RESULT_TEST_INFO_H_
#include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.h"
#include "third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include <hb.h>
namespace blink {
class PLATFORM_EXPORT ShapeResultTestInfo : public ShapeResult {
public:
unsigned NumberOfRunsForTesting() const;
ShapeResult::RunInfo& RunInfoForTesting(unsigned run_index) const;
bool RunInfoForTesting(unsigned run_index,
unsigned& start_index,
unsigned& num_glyphs,
hb_script_t&) const;
bool RunInfoForTesting(unsigned run_index,
unsigned& start_index,
unsigned& num_characters,
unsigned& num_glyphs,
hb_script_t&) const;
uint16_t GlyphForTesting(unsigned run_index, unsigned glyph_index) const;
float AdvanceForTesting(unsigned run_index, unsigned glyph_index) const;
SimpleFontData* FontDataForTesting(unsigned run_index) const;
Vector<unsigned> CharacterIndexesForTesting() const;
};
class PLATFORM_EXPORT ShapeResultBloberizerTestInfo {
STATIC_ONLY(ShapeResultBloberizerTestInfo);
public:
static const SimpleFontData* PendingRunFontData(
const ShapeResultBloberizer& bloberizer) {
return bloberizer.pending_font_data_;
}
static CanvasRotationInVertical PendingBlobRotation(
const ShapeResultBloberizer& bloberizer) {
return bloberizer.pending_canvas_rotation_;
}
static const Vector<Glyph, 1024>& PendingRunGlyphs(
const ShapeResultBloberizer& bloberizer) {
return bloberizer.pending_glyphs_;
}
static const Vector<float, 1024>& PendingRunOffsets(
const ShapeResultBloberizer& bloberizer) {
return bloberizer.pending_offsets_;
}
static bool HasPendingRunVerticalOffsets(
const ShapeResultBloberizer& bloberizer) {
return bloberizer.HasPendingVerticalOffsets();
}
static size_t PendingBlobRunCount(const ShapeResultBloberizer& bloberizer) {
return bloberizer.builder_run_count_;
}
static size_t CommittedBlobCount(const ShapeResultBloberizer& bloberizer) {
return bloberizer.blobs_.size();
}
};
struct PLATFORM_EXPORT ShapeResultTestGlyphInfo {
unsigned character_index;
Glyph glyph;
float advance;
};
void PLATFORM_EXPORT AddGlyphInfo(void* context,
unsigned character_index,
Glyph,
FloatSize glyph_offset,
float advance,
bool is_horizontal,
CanvasRotationInVertical,
const SimpleFontData*);
void PLATFORM_EXPORT ComputeGlyphResults(const ShapeResult&,
Vector<ShapeResultTestGlyphInfo>*);
bool PLATFORM_EXPORT
CompareResultGlyphs(const Vector<ShapeResultTestGlyphInfo>& test,
const Vector<ShapeResultTestGlyphInfo>& reference,
unsigned reference_start,
unsigned num_glyphs);
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_SHAPE_RESULT_TEST_INFO_H_