summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/font/Feature.cxx7
-rw-r--r--vcl/source/font/FeatureCollector.cxx8
2 files changed, 12 insertions, 3 deletions
diff --git a/vcl/source/font/Feature.cxx b/vcl/source/font/Feature.cxx
index 2516da2bc4c0..4be8152d4bc7 100644
--- a/vcl/source/font/Feature.cxx
+++ b/vcl/source/font/Feature.cxx
@@ -100,10 +100,12 @@ FeatureDefinition::FeatureDefinition()
FeatureDefinition::FeatureDefinition(uint32_t nCode, OUString const& rDescription,
FeatureParameterType eType,
- std::vector<FeatureParameter> const& rEnumParameters)
+ std::vector<FeatureParameter> const& rEnumParameters,
+ uint32_t nDefault)
: m_sDescription(rDescription)
, m_pDescriptionID(nullptr)
, m_nCode(nCode)
+ , m_nDefault(nDefault)
, m_eType(eType)
, m_aEnumParameters(rEnumParameters)
{
@@ -114,6 +116,7 @@ FeatureDefinition::FeatureDefinition(uint32_t nCode, const char* pDescriptionID,
: m_pDescriptionID(pDescriptionID)
, m_sNumericPart(rNumericPart)
, m_nCode(nCode)
+ , m_nDefault(0)
, m_eType(FeatureParameterType::BOOL)
{
}
@@ -122,6 +125,7 @@ FeatureDefinition::FeatureDefinition(uint32_t nCode, const char* pDescriptionID,
std::vector<FeatureParameter> aEnumParameters)
: m_pDescriptionID(pDescriptionID)
, m_nCode(nCode)
+ , m_nDefault(0)
, m_eType(FeatureParameterType::ENUM)
, m_aEnumParameters(std::move(aEnumParameters))
{
@@ -157,6 +161,7 @@ FeatureParameterType FeatureDefinition::getType() const { return m_eType; }
FeatureDefinition::operator bool() const { return m_nCode != 0; }
+uint32_t FeatureDefinition::getDefault() const { return m_nDefault; }
} // end font namespace
} // end vcl namespace
diff --git a/vcl/source/font/FeatureCollector.cxx b/vcl/source/font/FeatureCollector.cxx
index 7e5f8fa8c632..ed110ccbf073 100644
--- a/vcl/source/font/FeatureCollector.cxx
+++ b/vcl/source/font/FeatureCollector.cxx
@@ -27,6 +27,8 @@ bool FeatureCollector::collectGraphite()
gr_uint16 nUILanguage = gr_uint16(m_eLanguageType);
gr_uint16 nNumberOfFeatures = gr_face_n_fref(grFace);
+ gr_feature_val* pfeatureValues
+ = gr_face_featureval_for_lang(grFace, 0); // shame we don't know which lang
for (gr_uint16 i = 0; i < nNumberOfFeatures; ++i)
{
@@ -36,6 +38,7 @@ bool FeatureCollector::collectGraphite()
if (nFeatureCode == 0) // illegal feature code - skip
continue;
+ gr_uint16 nValue = gr_fref_feature_value(pFeatureRef, pfeatureValues);
gr_uint32 nLabelLength = 0;
void* pLabel = gr_fref_label(pFeatureRef, &nUILanguage, gr_utf8, &nLabelLength);
OUString sLabel(OUString::createFromAscii(static_cast<char*>(pLabel)));
@@ -52,7 +55,8 @@ bool FeatureCollector::collectGraphite()
void* pValueLabel = gr_fref_value_label(pFeatureRef, j, &nUILanguage, gr_utf8,
&nValueLabelLength);
OUString sValueLabel(OUString::createFromAscii(static_cast<char*>(pValueLabel)));
- aParameters.emplace_back(sal_uInt32(j), sValueLabel);
+ gr_uint16 nParamValue = gr_fref_value(pFeatureRef, j);
+ aParameters.emplace_back(sal_uInt32(nParamValue), sValueLabel);
gr_label_destroy(pValueLabel);
}
@@ -72,7 +76,7 @@ bool FeatureCollector::collectGraphite()
vcl::font::FeatureType::Graphite);
vcl::font::Feature& rFeature = m_rFontFeatures.back();
rFeature.m_aDefinition = vcl::font::FeatureDefinition(
- nFeatureCode, sLabel, eFeatureParameterType, aParameters);
+ nFeatureCode, sLabel, eFeatureParameterType, aParameters, sal_uInt32(nValue));
}
}
return true;