Commit Graph

86 Commits

Author SHA1 Message Date
Eskil Abrahamsen Blomfeldt
e443d88501 Support gamma correction of text on GL
If the SRGB framebuffer extension in GL is available, we can support
gamma correction of text with a gamma of 2.1. On Mac this is
sufficient for gamma correcting subpixel antialiased text. Gray
antialiasing should not be gamma corrected on Mac.

On Windows, the user can potentially set the gamma value to anything
between 1.0 and 2.2 (or something like that). We support anything
that resembles 1.0 closely enough by pushing the text out without
any correction (like before). We also support anything that resembles
2.1 (the gamma hardcoded in GL's SRGB extension) by turning on the
extension before blending the text. In between the two, we'll use
gray antialiasing to avoid differing too much from the raster engine
(which is our reference in this.)

For gray antialiasing on Windows, we use a constant gamma of 2.3 which
has been determined by experimentation. Since this is close enough to
2.1 we do gamma correction with SRGB extension.

The distance limit of 0.2 is determined by some experimentation.

Reviewed-by: Samuel
(cherry picked from commit 79ba7cceca5e4029876ace2121edd25b08ae14ce)
2011-05-03 16:50:01 +02:00
Eskil Abrahamsen Blomfeldt
ac4af55972 Make pixel size a qreal in QRawFont
The pixel size in the font engines is already a floating point value.
For maximum flexibility, we should expose this in the public API.

Task-number: QTBUG-18817
Reviewed-by: Jiang Jiang
(cherry picked from commit ac9e63b58533a3215106ed9da82cff3a3e3dda3a)
2011-05-02 10:13:32 +02:00
Dmitry Zelenkovsky
f26c4ba80d Support more items for QTextCharFormat::VerticalAlignment enum for custom text objects.
* QTextCharFormat::AlignNormal - support text format descent, place text object bottom on (baseline - descent).
 * QTextCharFormat::AlignBottom - place text object bottom on baseline.
 * QTextCharFormat::AlignTop - Still not supported.
 * Any other vertical alignment is mapped QTextCharFormat::AlignBottom.

Add new enum AlignBaseline for custom inline objects to take into account font baseline.

Merge-request: 2578
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
(cherry picked from commit ee9455ed2a83084692d969c398ecb91bcd4fc33a)
2011-05-02 09:53:25 +02:00
Jiang Jiang
774527dd1e Use maximum ascent/descent/leading from fallback fonts in shaping
When shaping a QScriptItem with a multi font engine, currently we
only take the ascent/descent/leading from the primary (first) font
engine in that multi font engine, however, subsequent engines used
during shaping may have larger ascent/descent/leading, disregarding
them may cause clipping issues in some cases.

It's fixed by checking each font engine used in the shaping process
and take the maximum value instead of the first one. On ATSUI we
merely make it compile.

Task-number: QTBUG-16719
Reviewed-by: Eskil
(cherry picked from commit c501403cb5a0c9ec21b00e0c2f640ae85566e0cf)
2011-04-29 11:02:25 +02:00
Jiang Jiang
bbbfc9b0eb Another ugly hack to make bidi cursor work with Core Text
If the text is wrapped with LRE/LRO/RLE/RLO override/embed marks,
Core Text in Mac OS X 10.5 doesn't produce an empty glyph at the
beginning of the glyphs (while it does in Mac OS X 10.6), thus
we need to prepend an empty glyph here, otherwise cursor position
calculation will consider the first two characters as a ligature
of the same glyph.

Reviewed-by: Eskil
(cherry picked from commit a36ac6c34bafa801c2c30d76f59e4a3594efc4d5)
2011-04-29 11:02:24 +02:00
Jiang Jiang
d64460fffb Make sure layoutData exist before checking for string direction
Otherwise accessing that through QTextEngine::alignLine may cause crash.

Reviewed-by: Samuel Rødal
(cherry picked from commit dcdb62c3d1a76d951c4b65bc1b1bd930e2ad14ec)
2011-04-29 11:02:24 +02:00
Jiang Jiang
044e7602ae Take leading space width into account for painting and selection
When painting horizontally centered RTL text and selection with
trailing spaces, we need to take that space width into account
because line.textAdvance doesn't include it.

Task-number: QTBUG-18612
Reviewed-by: Eskil
(cherry picked from commit 224226727f07e8940e0d3131fe7587b11cc4a6ca)
2011-04-29 11:02:24 +02:00
Jiang Jiang
d623257584 Remove extra comma at the end of enum list
It fails compilerwarnings test.

Reviewed-by: TrustMe
(cherry picked from commit 1e847c00dcf4948b8892d0a552576e1d3ea554b9)
2011-04-29 11:02:24 +02:00
Jiang Jiang
0d32728af2 Don't transform glyph positions for Core Graphics paint engine
Since it already transformed text positions based on transform matrix
on QPainter.

Reviewed-by: Eskil
(cherry picked from commit b86c9120710bf1481df5f6541618169a82fd65b8)
2011-04-29 11:02:24 +02:00
Jiang Jiang
a7b6f4c8a5 Turn on HarfBuzz support for Mac/Cocoa
It's possible to enable HarfBuzz text layout on Mac by either:

- Set QT_ENABLE_HARFBUZZ environment variable when running a Qt
  app.

- configure with -harfbuzz to build Qt, then HarfBuzz support
  will be turned on by default.

HarfBuzz will only be used when the font explicitly requested
is supported by HarfBuzz (aka. TrueType/OpenType font), other
fonts (AAT fonts) will still be handled by Core Text.

Using HarfBuzz for text layout will hopefully solve most tricky
complex text shaping bugs on Mac.

Task-number: QTBUG-17728
Reviewed-by: Eskil
2011-04-29 11:02:23 +02:00
Jiang Jiang
0f7cba14f6 Support visual cursor movement for BIDI text
Bidi input can in some contexts be more intuitive if the cursor
works in visual way: pressing left arrow key always make cursor
move one character to the left regardless the language of text,
pressing right arrow key always make cursor move to the right.
It is also the behavior of Mac OS X. Based on the above reason
and requests from Symbian we implemented this support for visual
movement in BIDI text. 3 public properties are added to
QTextDocument, QTextLayout and QLineEdit respectively:

- QTextDocument::defaultCursorMoveStyle can be used to control
  the cursor behavior in all widgets based on QTextDocument,
  like QTextEdit, QPlainTextEdit, etc. When set to QTextCursor::
  Visual, it will enable visual movement for all the cursors in
  the corresponding text edit. Default is QTextCursor::Logical.

- QTextLayout::cursorMoveStyle is used for low-level cursor
  manipulation. When set to Visual, it will enable visual movement
  behavior for all the cursor related methods, including cursorToX,
  xToCursor and drawCursor. Default is Logical.

- QLineEdit::cursorMoveStyle is used to control cursor movement
  behavior in QLineEdit. Default is Logical.:

Task-number: QTBUG-13859
Reviewed-by: Eskil
(cherry picked from commit c480dd641f5d22d1ee72cb27bf39e24c6df65658)
2011-04-29 11:02:23 +02:00
Jiang Jiang
028aa80d70 Disable tst_QPixmap::onlyNullPixmapsOutsideGuiThread on Mac
No need to check it anymore after the switch to raster engine.

Reviewed-by: Eskil
(cherry picked from commit e004701bd7ba9e4a7cd5ac1bf784829feae16cae)
2011-04-29 11:02:23 +02:00
Eskil Abrahamsen Blomfeldt
e99aa8b20c Make sure QFont's resolve mask is copied on compilers with C++0x support
The QFont consists of a d pointer and a resolve mask, and they should
both be copied in the assignment operator.

Task-number: QTBUG-18921
Done-by: Friedemann Kleint
(cherry picked from commit cb5e526c6023237c36aac3446a0a18288f39f3a9)
2011-04-29 10:12:27 +02:00
Jiang Jiang
8c90fb22c4 Fix glyph position issue with fallback fonts
Task-number: QTBUG-18933
Reviewed-by: Eskil
(cherry picked from commit 18fcbf7ae41504324cd453ba9b9655f3e94f6495)
2011-04-29 10:09:13 +02:00
Eskil Abrahamsen Blomfeldt
b2db259a32 Fix crash in raster on X11 when text contains unsupported characters
We would assume the font engine was a FT engine and do a static cast
here, which would cause a crash if the box engine was in use instead.

Task-number: QTBUG-17443
Reviewed-by: Samuel
(cherry picked from commit c9c54682bcd23598ac7a8db3b10e9f18c978e268)
2011-04-29 09:05:26 +02:00
Eskil Abrahamsen Blomfeldt
544babaaf9 doc: Minor cleanup in QGlyphs docs
Just a minor clean-up in the QGlyphs docs. Mainly to try to trigger
CI.

Reviewed-by: TrustMe
(cherry picked from commit 774b5b8c6a627fc90fb7382bc907db5d2e8193bf)
2011-04-29 08:55:03 +02:00
Eskil Abrahamsen Blomfeldt
064d54b2b0 doc: Simplify language in QGlyphs docs
Mainly to trigger CI.

Reviewed-by: TrustMe
(cherry picked from commit 1a1683c2d57debbb3e7f3ae6001eb2c8685dca02)
2011-04-29 08:54:41 +02:00
Gunnar Sletta
7e4abe3a5f Merge branch 'qtquick2' of scm.dev.nokia.troll.no:qt/qtbase-staging into qtquick2 2011-04-28 15:08:33 +02:00
Gunnar Sletta
514641bed5 QT += declarative implies += opengl too, so hardcode it to make stuff work 2011-04-28 15:07:51 +02:00
Eskil Abrahamsen Blomfeldt
07fa0ccfc4 Make QtQuick2 compile on QPA
Moved the logic to set pixel size into the font engines to avoid
making the platform plugin interface too complex, and added a function
in QPA to make an isolated font engine based on font data. Currently
none of the QPA back-ends supports it, but it compiles and spits out
a warning if you try to create a QRawFont from data there. This isn't
used in QtQuick2 anyway.

Reviewed-by: Jiang Jiang
2011-04-28 11:01:04 +02:00
axis
9e57cd5e6a Merged master into qtquick2. 2011-04-27 14:34:19 +02:00
Qt by Nokia
eae8fb8599 Initial import from qtquick2.
Branched from the monolithic repo, Qt qtquick2 branch, at commit
a4a585d2ee907746682846ae6e8a48e19deef469
2011-04-27 14:33:44 +02:00
axis
106c57c238 Add .gitignore to each module 2011-04-27 12:06:07 +02:00
Prasanth Ullattil
055a45e61d Fix the target for QtUiTools debug on Mac 2011-04-27 12:06:04 +02:00
Marius Storm-Olsen
0389278105 Only run JSC benchmarks if access to the source code
When modularized, the benchmark test case might not have access
to the JavaScriptCore source code. So, make sure the test case
still compiles in this case.
2011-04-27 12:06:04 +02:00
Marius Storm-Olsen
57e47f1c7e Remove not needed .pri include 2011-04-27 12:06:04 +02:00
Liang Qi
d5622b287e Add tst_headersclean for each module 2011-04-27 12:06:03 +02:00
Liang Qi
cc47cce747 Modularized tst_compilerwarnings 2011-04-27 12:06:03 +02:00
Liang Qi
6a1d5f8723 Modularized tst_bic and add some helper functions for global test 2011-04-27 12:06:03 +02:00
axis
2e1af58417 Introduced the QT.<module>.plugins variable to module profiles. 2011-04-27 12:06:02 +02:00
axis
0cdec327f2 Fixed maketestselftest after guiapplauncher was made a global test. 2011-04-27 12:06:02 +02:00
axis
74511a84ee Removed examples and demos that are no longer in qtbase. 2011-04-27 12:06:02 +02:00
axis
cdf6ce6adb Removed reference to linguist test, which is now in qttools. 2011-04-27 12:06:01 +02:00
axis
b5989f6867 Adapted guiapplauncher test to modularized Qt.
Now it reads the test cases from text files in each repository
instead.
2011-04-27 12:06:01 +02:00
axis
30be61219d Fixed syncqt generation of bin path.
Now it points to QtBase's bin directory, in the case of developer
builds. This makes it easier to develop modules together without
having to install them first.
2011-04-27 12:06:01 +02:00
Prasanth Ullattil
574e7e44d3 q3tl.h is copied to qalgorithms autotest directory 2011-04-27 12:06:01 +02:00
axis
bd025379c8 Fixed "make check" target for qtbase.
It was caused by a missing "tests" target.
2011-04-27 12:06:00 +02:00
axis
afa1807c40 Added QT.<module>.imports support to module profiles. 2011-04-27 12:06:00 +02:00
Prasanth Ullattil
a3feb69d4c Removed uic3 autotest from qtbase 2011-04-27 12:06:00 +02:00
Prasanth Ullattil
d6805e71ff Load the sync.profile after setting the variables. 2011-04-27 12:06:00 +02:00
Marius Storm-Olsen
ac1fee88d2 Remove moved examples/demos 2011-04-27 12:05:59 +02:00
Marius Storm-Olsen
d383f9f8bc Build examples and demos in qtbase 2011-04-27 12:05:59 +02:00
Marius Storm-Olsen
bd06459179 Make qmake respect <subdir>.CONFIG = no_default_install
It already respects no_default_target
2011-04-27 12:05:58 +02:00
Prasanth Ullattil
88dd54405f Temporarily pointing QT_MODULE_LIB_BASE to qtbase/lib
This has to changed when we start to generate the module binaries
in their respective  lib/bin folders.
2011-04-27 12:05:58 +02:00
Marius Storm-Olsen
2a5e47832b Properly detect qmodule.pri 2011-04-27 12:05:58 +02:00
Prasanth Ullattil
d7ce3d25bc Avoid recursively including the same arch.pri file 2011-04-27 12:05:57 +02:00
axis
8e4fc361a5 Made sure syncqt gets called correctly even if it is not in the PATH. 2011-04-27 12:05:57 +02:00
axis
59db0a203d Changed path references to ActiveQt. 2011-04-27 12:05:56 +02:00
Prasanth Ullattil
3bfa70fef9 Include headers.pri from the last path in MODULE_INCLUDES 2011-04-27 12:05:55 +02:00
Prasanth Ullattil
b88c6fbcfe Use the MODULE_LIBS instead of QMAKE_LIBDIR_QT for frameworks. 2011-04-27 12:05:55 +02:00