[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kbreakout] src/qml: Simply the font size calculation for TextItem and get rid of the flickering of
From: Viranch Mehta <viranch.mehta () gmail ! com>
Date: 2013-03-28 21:47:30
Message-ID: 20130328214730.5C0B1A604F () git ! kde ! org
[Download RAW message or body]
Git commit 30463d589e3b1dc36b07f1ac7fe7c33aaafb9b38 by Viranch Mehta.
Committed on 28/03/2013 at 22:46.
Pushed by viranch into branch 'master'.
Simply the font size calculation for TextItem and get rid of the flickering of text
M +19 -35 src/qml/TextItem.qml
http://commits.kde.org/kbreakout/30463d589e3b1dc36b07f1ac7fe7c33aaafb9b38
diff --git a/src/qml/TextItem.qml b/src/qml/TextItem.qml
index d242dbe..a15dea3 100644
--- a/src/qml/TextItem.qml
+++ b/src/qml/TextItem.qml
@@ -33,47 +33,31 @@ CanvasItem {
color: "white"
}
- onTextChanged: fontTimerTrigger.restart();
+ onTextChanged: updateFontSize();
+ Component.onCompleted: updateTimer.start();
- // assign largest font size and start the timer to update
- // font size to fit text
- function updateFontSize() {
- fontSize = 72/m_scale;
- fontTimer.start();
- }
-
- // do not update font size more frequently than once in 100ms
Timer {
- id: fontTimerTrigger
- interval: 100
- onTriggered: {
- if (!fontTimer.running)
- updateFontSize();
- }
+ id: updateTimer
+ interval: 1
+ onTriggered: updateFontSize();
}
- // check font size every 1ms; if text does not fit, decrease the font size
- // stop the timer, if text fits
- Timer {
- id: fontTimer
- interval: 1
- repeat: true
- onTriggered: {
- var w = item.width*0.8;
- var h = item.height;
- if (textItem.width > w || textItem.height > h) {
- var size = Math.min(w * fontSize / textItem.width, h * fontSize / textItem.height);
- size = Math.floor(size);
- if (size == fontSize) {
- stop();
- opacity = 1;
- } else {
- fontSize = size;
- }
+ function updateFontSize() {
+ opacity = 0;
+ fontSize = 72/m_scale;
+
+ var w = item.width*0.8;
+ var h = item.height;
+ while (textItem.width > w || textItem.height > h) {
+ var size = Math.min(w * fontSize / textItem.width, h * fontSize / textItem.height);
+ size = Math.floor(size);
+ if (size == fontSize) {
+ break;
} else {
- stop();
- opacity = 1;
+ fontSize = size;
}
}
+
+ opacity = 1;
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic