Krita Source Code Documentation
Loading...
Searching...
No Matches
CssQmlUnitConverter.cpp File Reference
#include "CssQmlUnitConverter.h"
#include <QVariant>
#include <KoUnit.h>
#include <KoSvgText.h>
#include <KoSvgTextProperties.h>
#include <lager/KoSvgTextPropertiesModel.h>
#include <KLocalizedString>

Go to the source code of this file.

Classes

struct  CssQmlUnitConverter::Private
 

Functions

qreal metricsMultiplier (const CssQmlUnitConverter::UserUnits type, const KoSvgText::FontMetrics metrics, const qreal fontSize, const qreal percentageReference)
 

Variables

const qreal koUnitFactor = 1/72.0
 
const QMap< KoUnit::Type, CssQmlUnitConverter::UserUnitskoUnitMap
 

Function Documentation

◆ metricsMultiplier()

qreal metricsMultiplier ( const CssQmlUnitConverter::UserUnits type,
const KoSvgText::FontMetrics metrics,
const qreal fontSize,
const qreal percentageReference )

Definition at line 336 of file CssQmlUnitConverter.cpp.

336 {
337 const qreal multiplier = fontSize / metrics.fontSize;
338 if (type == CssQmlUnitConverter::Em) {
339 return fontSize;
340 } else if (type == CssQmlUnitConverter::Ex) {
341 return metrics.xHeight * multiplier;
342 } else if (type == CssQmlUnitConverter::Cap) {
343 return metrics.capHeight * multiplier;
344 } else if (type == CssQmlUnitConverter::Ch) {
345 return metrics.zeroAdvance * multiplier;
346 } else if (type == CssQmlUnitConverter::Ic) {
347 return metrics.ideographicAdvance * multiplier;
348 } else if (type == CssQmlUnitConverter::Lh) {
349 return (metrics.ascender - metrics.descender + metrics.lineGap) * multiplier;
350 } else if (type == CssQmlUnitConverter::Lines) {
351 return (metrics.ascender - metrics.descender) * multiplier;
352 } else if (type == CssQmlUnitConverter::Spaces) {
353 return metrics.spaceAdvance * multiplier;
354 } else if (type == CssQmlUnitConverter::Percentage) {
355 return percentageReference;
356 }
357 return 1.0;
358}
@ Ic
average full-width advance
@ Lines
Used by lineHeight.
@ Ch
average proportional advance
qint32 xHeight
height of X, defaults to 0.5 fontsize.
Definition KoSvgText.h:334
qint32 lineGap
additional linegap between consecutive lines.
Definition KoSvgText.h:341
qint32 zeroAdvance
Advance of the character '0', CSS Unit 'ch', defaults to 0.5 em in horizontal and 1....
Definition KoSvgText.h:330
qint32 ideographicAdvance
Advance of the character '水' (U+6C34), CSS Unit ic, defaults to 1 em.
Definition KoSvgText.h:332
qint32 fontSize
Currently set size, CSS unit 'em'.
Definition KoSvgText.h:329
qint32 descender
distance for origin to bottom.
Definition KoSvgText.h:340
qint32 ascender
distance from origin to top.
Definition KoSvgText.h:339
qint32 capHeight
Height of capital letters, defaults to ascender.
Definition KoSvgText.h:335
qint32 spaceAdvance
Advance of the character ' ', used by tabs.
Definition KoSvgText.h:331

References KoSvgText::FontMetrics::ascender, CssQmlUnitConverter::Cap, KoSvgText::FontMetrics::capHeight, CssQmlUnitConverter::Ch, KoSvgText::FontMetrics::descender, CssQmlUnitConverter::Em, CssQmlUnitConverter::Ex, KoSvgText::FontMetrics::fontSize, CssQmlUnitConverter::Ic, KoSvgText::FontMetrics::ideographicAdvance, CssQmlUnitConverter::Lh, KoSvgText::FontMetrics::lineGap, CssQmlUnitConverter::Lines, CssQmlUnitConverter::Percentage, KoSvgText::FontMetrics::spaceAdvance, CssQmlUnitConverter::Spaces, KoSvgText::FontMetrics::xHeight, and KoSvgText::FontMetrics::zeroAdvance.

Variable Documentation

◆ koUnitFactor

const qreal koUnitFactor = 1/72.0

Definition at line 42 of file CssQmlUnitConverter.cpp.

◆ koUnitMap