diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/font/Feature.cxx | 7 | ||||
-rw-r--r-- | vcl/source/font/FeatureCollector.cxx | 8 |
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; |