mirror of
https://github.com/tumic0/QtPBFImagePlugin.git
synced 2024-11-24 03:35:54 +01:00
Improved text bounding rect estimation
This commit is contained in:
parent
3ea8ce64a7
commit
0dd83979cf
@ -6,10 +6,10 @@
|
||||
#define FLAGS (Qt::AlignCenter | Qt::TextWordWrap | Qt::TextDontClip)
|
||||
|
||||
static QRectF exactBoundingRect(const QString &str, const QFont &font,
|
||||
int maxTextWidth)
|
||||
const Text::Properties &prop)
|
||||
{
|
||||
QFontMetrics fm(font);
|
||||
int limit = font.pixelSize() * maxTextWidth;
|
||||
int limit = font.pixelSize() * prop.maxWidth;
|
||||
// Italic fonts overflow the computed bounding rect, so reduce it
|
||||
// a little bit.
|
||||
if (font.italic())
|
||||
@ -25,10 +25,13 @@ static QRectF exactBoundingRect(const QString &str, const QFont &font,
|
||||
}
|
||||
|
||||
static QRectF fuzzyBoundingRect(const QString &str, const QFont &font,
|
||||
int maxTextWidth)
|
||||
const Text::Properties &prop)
|
||||
{
|
||||
int limit = font.pixelSize() * maxTextWidth;
|
||||
qreal cw = font.pixelSize() * 0.6;
|
||||
int limit = font.pixelSize() * prop.maxWidth;
|
||||
qreal acw = (prop.transform == Text::Uppercase) ? 0.66 : 0.55;
|
||||
qreal cw = font.pixelSize() * acw;
|
||||
if (font.bold())
|
||||
acw *= 1.1;
|
||||
qreal lh = font.pixelSize() * 1.25;
|
||||
int width = 0, lines = 0;
|
||||
|
||||
@ -69,7 +72,7 @@ static QRectF fuzzyBoundingRect(const QString &str, const QFont &font,
|
||||
QRectF TextPointItem::computeTextRect(BoundingRectFunction brf) const
|
||||
{
|
||||
QRectF iconRect = _icon.isNull() ? QRectF() : _icon.rect();
|
||||
QRectF textRect = brf(text(), _font, _properties.maxWidth);
|
||||
QRectF textRect = brf(text(), _font, _properties);
|
||||
|
||||
switch (_properties.anchor) {
|
||||
case Text::Center:
|
||||
|
@ -20,7 +20,8 @@ public:
|
||||
void setPen(const QPen &pen) {_pen = pen;}
|
||||
|
||||
private:
|
||||
typedef QRectF (*BoundingRectFunction)(const QString &, const QFont &, int);
|
||||
typedef QRectF (*BoundingRectFunction)(const QString &, const QFont &,
|
||||
const Text::Properties &);
|
||||
QRectF computeTextRect(BoundingRectFunction brf) const;
|
||||
|
||||
QPointF _pos;
|
||||
|
Loading…
Reference in New Issue
Block a user