mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 02:14:43 +00:00
Bug 1355931 - move ScaledFont::VariationSetting into separate header for sharing with thebes. r=jrmuizel
MozReview-Commit-ID: 4UThWTMCuz9
This commit is contained in:
parent
28471864af
commit
bfa3b7a714
@ -12,6 +12,7 @@
|
||||
#include "Matrix.h"
|
||||
#include "Quaternion.h"
|
||||
#include "UserData.h"
|
||||
#include "FontVariation.h"
|
||||
#include <vector>
|
||||
|
||||
// GenericRefCountedBase allows us to hold on to refcounted objects of any type
|
||||
@ -770,11 +771,6 @@ public:
|
||||
*/
|
||||
virtual void GetGlyphDesignMetrics(const uint16_t* aGlyphIndices, uint32_t aNumGlyphs, GlyphMetrics* aGlyphMetrics) = 0;
|
||||
|
||||
struct VariationSetting {
|
||||
uint32_t mTag;
|
||||
float mValue;
|
||||
};
|
||||
|
||||
typedef void (*FontInstanceDataOutput)(const uint8_t* aData, uint32_t aLength, void* aBaton);
|
||||
|
||||
virtual bool GetFontInstanceData(FontInstanceDataOutput, void *) { return false; }
|
||||
|
26
gfx/2d/FontVariation.h
Normal file
26
gfx/2d/FontVariation.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* -*- Mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef MOZILLA_GFX_FONTVARIATION_H_
|
||||
#define MOZILLA_GFX_FONTVARIATION_H_
|
||||
|
||||
namespace mozilla {
|
||||
namespace gfx {
|
||||
|
||||
// An OpenType variation tag and value pair
|
||||
struct FontVariation
|
||||
{
|
||||
uint32_t mTag;
|
||||
float mValue;
|
||||
|
||||
bool operator==(const FontVariation& aOther) const {
|
||||
return mTag == aOther.mTag && mValue == aOther.mValue;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace gfx
|
||||
} // namespace mozilla
|
||||
|
||||
#endif /* MOZILLA_GFX_FONTVARIATION_H_ */
|
@ -238,7 +238,7 @@ static void CollectVariationSetting(const void *key, const void *value, void *co
|
||||
{
|
||||
auto keyPtr = static_cast<const CFTypeRef>(key);
|
||||
auto valuePtr = static_cast<const CFTypeRef>(value);
|
||||
auto vpp = static_cast<ScaledFont::VariationSetting**>(context);
|
||||
auto vpp = static_cast<FontVariation**>(context);
|
||||
if (CFGetTypeID(keyPtr) == CFNumberGetTypeID() &&
|
||||
CFGetTypeID(valuePtr) == CFNumberGetTypeID()) {
|
||||
uint64_t t;
|
||||
@ -331,7 +331,7 @@ ScaledFontMac::GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton)
|
||||
{
|
||||
// Collect any variation settings that were incorporated into the CTFont.
|
||||
uint32_t variationCount = 0;
|
||||
VariationSetting* variations = nullptr;
|
||||
FontVariation* variations = nullptr;
|
||||
// Avoid calling potentially buggy variation APIs on pre-Sierra macOS
|
||||
// versions (see bug 1331683)
|
||||
if (nsCocoaFeatures::OnSierraOrLater()) {
|
||||
@ -340,8 +340,8 @@ ScaledFontMac::GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton)
|
||||
if (dict) {
|
||||
CFIndex count = CFDictionaryGetCount(dict);
|
||||
if (count > 0) {
|
||||
variations = new VariationSetting[count];
|
||||
VariationSetting* vPtr = variations;
|
||||
variations = new FontVariation[count];
|
||||
FontVariation* vPtr = variations;
|
||||
CFDictionaryApplyFunction(dict, CollectVariationSetting, &vPtr);
|
||||
variationCount = vPtr - variations;
|
||||
}
|
||||
@ -350,7 +350,7 @@ ScaledFontMac::GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton)
|
||||
}
|
||||
}
|
||||
|
||||
aCb(reinterpret_cast<uint8_t*>(variations), variationCount * sizeof(VariationSetting), aBaton);
|
||||
aCb(reinterpret_cast<uint8_t*>(variations), variationCount * sizeof(FontVariation), aBaton);
|
||||
delete[] variations;
|
||||
|
||||
return true;
|
||||
@ -358,7 +358,7 @@ ScaledFontMac::GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton)
|
||||
|
||||
static CFDictionaryRef
|
||||
CreateVariationDictionaryOrNull(CGFontRef aCGFont, uint32_t aVariationCount,
|
||||
const ScaledFont::VariationSetting* aVariations)
|
||||
const FontVariation* aVariations)
|
||||
{
|
||||
// Avoid calling potentially buggy variation APIs on pre-Sierra macOS
|
||||
// versions (see bug 1331683)
|
||||
@ -460,7 +460,7 @@ CreateVariationDictionaryOrNull(CGFontRef aCGFont, uint32_t aVariationCount,
|
||||
CGFontRef
|
||||
UnscaledFontMac::CreateCGFontWithVariations(CGFontRef aFont,
|
||||
uint32_t aVariationCount,
|
||||
const ScaledFont::VariationSetting* aVariations)
|
||||
const FontVariation* aVariations)
|
||||
{
|
||||
MOZ_ASSERT(aVariationCount > 0);
|
||||
MOZ_ASSERT(aVariations);
|
||||
@ -480,9 +480,9 @@ UnscaledFontMac::CreateScaledFont(Float aGlyphSize,
|
||||
uint32_t aInstanceDataLength)
|
||||
{
|
||||
uint32_t variationCount =
|
||||
aInstanceDataLength / sizeof(ScaledFont::VariationSetting);
|
||||
const ScaledFont::VariationSetting* variations =
|
||||
reinterpret_cast<const ScaledFont::VariationSetting*>(aInstanceData);
|
||||
aInstanceDataLength / sizeof(FontVariation);
|
||||
const FontVariation* variations =
|
||||
reinterpret_cast<const FontVariation*>(aInstanceData);
|
||||
|
||||
CGFontRef fontRef = mFont;
|
||||
if (variationCount > 0) {
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
static CGFontRef
|
||||
CreateCGFontWithVariations(CGFontRef aFont,
|
||||
uint32_t aVariationCount,
|
||||
const ScaledFont::VariationSetting* aVariations);
|
||||
const FontVariation* aVariations);
|
||||
|
||||
private:
|
||||
CGFontRef mFont;
|
||||
|
@ -26,6 +26,7 @@ EXPORTS.mozilla.gfx += [
|
||||
'DrawEventRecorder.h',
|
||||
'DrawTargetTiled.h',
|
||||
'Filters.h',
|
||||
'FontVariation.h',
|
||||
'Helpers.h',
|
||||
'HelpersCairo.h',
|
||||
'IterableArena.h',
|
||||
|
@ -7,16 +7,8 @@
|
||||
#ifndef GFX_FONT_VARIATIONS_H
|
||||
#define GFX_FONT_VARIATIONS_H
|
||||
|
||||
// An OpenType variation tag and value pair
|
||||
struct gfxFontVariation {
|
||||
uint32_t mTag;
|
||||
float mValue;
|
||||
};
|
||||
#include "mozilla/gfx/FontVariation.h"
|
||||
|
||||
inline bool
|
||||
operator==(const gfxFontVariation& a, const gfxFontVariation& b)
|
||||
{
|
||||
return (a.mTag == b.mTag) && (a.mValue == b.mValue);
|
||||
}
|
||||
typedef mozilla::gfx::FontVariation gfxFontVariation;
|
||||
|
||||
#endif
|
||||
|
@ -41,13 +41,11 @@ gfxMacFont::gfxMacFont(const RefPtr<UnscaledFontMac>& aUnscaledFont,
|
||||
mIsValid = false;
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(sizeof(ScaledFont::VariationSetting) == sizeof(gfxFontVariation));
|
||||
mCGFont =
|
||||
UnscaledFontMac::CreateCGFontWithVariations(
|
||||
baseFont,
|
||||
aFontStyle->variationSettings.Length(),
|
||||
reinterpret_cast<const ScaledFont::VariationSetting*>(
|
||||
aFontStyle->variationSettings.Elements()));
|
||||
aFontStyle->variationSettings.Elements());
|
||||
if (!mCGFont) {
|
||||
::CFRetain(baseFont);
|
||||
mCGFont = baseFont;
|
||||
|
Loading…
Reference in New Issue
Block a user