Merge "Merge master into api_changes" into refs/staging/api_changes
This commit is contained in:
commit
425b38ef95
4
.gitignore
vendored
4
.gitignore
vendored
@ -172,6 +172,10 @@ src/3rdparty/webkit/WebCore/mocinclude.tmp
|
||||
src/3rdparty/webkit/includes.txt
|
||||
src/3rdparty/webkit/includes2.txt
|
||||
|
||||
# generated files in configure.exe bootstrapping
|
||||
tools/configure/configure.intermediate.manifest
|
||||
tools/configure/configure_pch.pch
|
||||
|
||||
# Symlinks generated by configure
|
||||
tools/qvfb/qvfbhdr.h
|
||||
tools/qvfb/qlock_p.h
|
||||
|
@ -55,29 +55,29 @@
|
||||
#undef sparc
|
||||
#undef unknown
|
||||
#if defined(Q_PROCESSOR_ALPHA)
|
||||
alpha
|
||||
Architecture: alpha
|
||||
#elif defined(Q_PROCESSOR_ARM)
|
||||
arm
|
||||
Architecture: arm
|
||||
#elif defined(Q_PROCESSOR_AVR32)
|
||||
avr32
|
||||
Architecture: avr32
|
||||
#elif defined(Q_PROCESSOR_BLACKFIN)
|
||||
bfin
|
||||
Architecture: bfin
|
||||
#elif defined(Q_PROCESSOR_X86_32)
|
||||
i386
|
||||
Architecture: i386
|
||||
#elif defined(Q_PROCESSOR_X86_64)
|
||||
x86_64
|
||||
Architecture: x86_64
|
||||
#elif defined(Q_PROCESSOR_IA64)
|
||||
ia64
|
||||
Architecture: ia64
|
||||
#elif defined(Q_PROCESSOR_MIPS)
|
||||
mips
|
||||
Architecture: mips
|
||||
#elif defined(Q_PROCESSOR_POWER)
|
||||
power
|
||||
Architecture: power
|
||||
#elif defined(Q_PROCESSOR_S390)
|
||||
s390
|
||||
Architecture: s390
|
||||
#elif defined(Q_PROCESSOR_SH)
|
||||
sh
|
||||
Architecture: sh
|
||||
#elif defined(Q_PROCESSOR_SPARC)
|
||||
sparc
|
||||
Architecture: sparc
|
||||
#else
|
||||
unknown
|
||||
Architecture: unknown
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
CONFIG -= qt debug_and_release
|
||||
# Detect target by preprocessing a file that uses Q_PROCESSOR_* macros from qprocessordetection.h
|
||||
COMMAND = $$QMAKE_CXX $$QMAKE_CXXFLAGS -E $$PWD/arch.cpp
|
||||
# 'false' as second argument to system() prevents qmake from stripping newlines
|
||||
COMPILER_ARCH = $$system($$COMMAND, false)
|
||||
# system function converts newline in output into spaces
|
||||
COMPILER_ARCH = $$system($$COMMAND)
|
||||
# Message back to configure so that it can set QT_ARCH and QT_HOST_ARCH
|
||||
message($$COMPILER_ARCH)
|
||||
|
@ -58,5 +58,8 @@ int main(int, char **)
|
||||
|
||||
xcb_connection_t *connection = xcb_connect("", &primaryScreen);
|
||||
|
||||
// This won't compile unless libxcb >= 1.5 which defines XCB_ATOM_PRIMARY.
|
||||
int xcbAtomPrimary = XCB_ATOM_PRIMARY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -9,7 +9,12 @@ cat >>bsymbolic_functions.c << EOF
|
||||
int main() { return 0; }
|
||||
EOF
|
||||
|
||||
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
|
||||
if [ "$VERBOSE" = "yes" ] ; then
|
||||
echo $COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c
|
||||
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
|
||||
else
|
||||
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
|
||||
fi
|
||||
rm -f bsymbolic_functions.c libtest.so
|
||||
|
||||
# done
|
||||
|
@ -25,6 +25,7 @@ __global void blah();
|
||||
EOF
|
||||
|
||||
if [ "$VERBOSE" = "yes" ] ; then
|
||||
echo $COMPILER -c $CMDLINE fvisibility.c
|
||||
$COMPILER -c $CMDLINE fvisibility.c && FVISIBILITY_SUPPORT=yes
|
||||
else
|
||||
$COMPILER -c $CMDLINE fvisibility.c >/dev/null 2>&1 && FVISIBILITY_SUPPORT=yes
|
||||
|
@ -49,6 +49,7 @@ templates for common STL container classes.
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <cstddef>
|
||||
|
||||
// something mean to see if the compiler and C++ standard lib are good enough
|
||||
template<class K, class T>
|
||||
|
259
configure
vendored
259
configure
vendored
@ -679,8 +679,7 @@ CFG_OPENVG=auto
|
||||
CFG_OPENVG_LC_INCLUDES=no
|
||||
CFG_OPENVG_SHIVA=auto
|
||||
CFG_OPENVG_ON_OPENGL=auto
|
||||
CFG_EGL=no
|
||||
CFG_EGL_GLES_INCLUDES=no
|
||||
CFG_EGL=auto
|
||||
CFG_SSE=auto
|
||||
CFG_FONTCONFIG=auto
|
||||
CFG_LIBFREETYPE=auto
|
||||
@ -708,6 +707,7 @@ CFG_XINPUT=runtime
|
||||
CFG_XKB=auto
|
||||
CFG_XCB=auto
|
||||
CFG_XCB_LIMITED=yes
|
||||
CFG_EGLFS=auto
|
||||
CFG_LIBUDEV=auto
|
||||
CFG_OBSOLETE_WAYLAND=no
|
||||
CFG_EVDEV=auto
|
||||
@ -739,6 +739,8 @@ CFG_NAS=no
|
||||
CFG_ACCESSIBILITY=auto
|
||||
CFG_IWMMXT=no
|
||||
CFG_NEON=auto
|
||||
CFG_MIPS_DSP=yes
|
||||
CFG_MIPS_DSPR2=yes
|
||||
CFG_CLOCK_GETTIME=auto
|
||||
CFG_CLOCK_MONOTONIC=auto
|
||||
CFG_MREMAP=auto
|
||||
@ -893,7 +895,7 @@ while [ "$#" -gt 0 ]; do
|
||||
VAL=no
|
||||
;;
|
||||
#Qt style yes options
|
||||
-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-xcb|-nis|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-debug-and-release|-exceptions|-harfbuzz|-prefix-install|-silent|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-phonon-backend|-audio-backend|-declarative-debug|-javascript-jit|-rpath|-force-pkg-config|-icu|-force-asserts|-testcocoon)
|
||||
-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-xcb|-eglfs|-nis|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-debug-and-release|-exceptions|-harfbuzz|-prefix-install|-silent|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-phonon-backend|-audio-backend|-declarative-debug|-javascript-jit|-rpath|-force-pkg-config|-icu|-force-asserts|-testcocoon)
|
||||
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
|
||||
VAL=yes
|
||||
;;
|
||||
@ -1165,9 +1167,6 @@ while [ "$#" -gt 0 ]; do
|
||||
[ "$VAL" = "yes" ] || [ "$VAL" = "no" ] ||
|
||||
[ "$VAL" = "es2" ]; then
|
||||
CFG_OPENGL="$VAL"
|
||||
if [ "$VAL" = "es2" ]; then
|
||||
CFG_EGL="yes"
|
||||
fi
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
@ -1175,9 +1174,6 @@ while [ "$#" -gt 0 ]; do
|
||||
openvg)
|
||||
if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
|
||||
CFG_OPENVG="$VAL"
|
||||
if [ "$CFG_EGL" = "no" ] && [ "$VAL" != "no" ]; then
|
||||
CFG_EGL=auto
|
||||
fi
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
@ -1548,6 +1544,20 @@ while [ "$#" -gt 0 ]; do
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
;;
|
||||
mips_dsp)
|
||||
if [ "$VAL" = "no" ]; then
|
||||
CFG_MIPS_DSP="$VAL"
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
;;
|
||||
mips_dspr2)
|
||||
if [ "$VAL" = "no" ]; then
|
||||
CFG_MIPS_DSPR2="$VAL"
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
;;
|
||||
reduce-relocations)
|
||||
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
|
||||
CFG_REDUCE_RELOCATIONS="$VAL"
|
||||
@ -1654,6 +1664,13 @@ while [ "$#" -gt 0 ]; do
|
||||
wayland)
|
||||
CFG_OBSOLETE_WAYLAND=yes
|
||||
;;
|
||||
eglfs)
|
||||
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
|
||||
CFG_EGLFS="$VAL"
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
;;
|
||||
libudev)
|
||||
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
|
||||
CFG_LIBUDEV="$VAL"
|
||||
@ -2600,8 +2617,13 @@ if [ "$CFG_SEPARATE_DEBUG_INFO" != "no" ] && [ "$CFG_SHARED" = "yes" ]; then
|
||||
fi
|
||||
|
||||
# auto-detect -fvisibility support
|
||||
if [ "$CFG_REDUCE_EXPORTS" = "auto" ]; then
|
||||
if [ "$CFG_REDUCE_EXPORTS" != "no" ]; then
|
||||
if "$unixtests/fvisibility.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
|
||||
if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then
|
||||
echo "-reduce-exports was requested but this compiler does not support it"
|
||||
echo "Re-run configure with -v for more information"
|
||||
exit 1
|
||||
fi
|
||||
CFG_REDUCE_EXPORTS=no
|
||||
else
|
||||
CFG_REDUCE_EXPORTS=yes
|
||||
@ -2611,6 +2633,11 @@ fi
|
||||
# detect the availability of the -Bsymbolic-functions linker optimization
|
||||
if [ "$CFG_REDUCE_RELOCATIONS" != "no" ]; then
|
||||
if "$unixtests/bsymbolic_functions.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
|
||||
if [ "$CFG_REDUCE_RELOCATIONS" = "yes" ]; then
|
||||
echo "-reduce-relocations was requested but this compiler does not support it"
|
||||
echo "Re-run configure with -v for more information"
|
||||
exit 1
|
||||
fi
|
||||
CFG_REDUCE_RELOCATIONS=no
|
||||
else
|
||||
CFG_REDUCE_RELOCATIONS=yes
|
||||
@ -2869,6 +2896,14 @@ if [ "$OPT_HELP" = "yes" ]; then
|
||||
XCBN=" "
|
||||
fi
|
||||
|
||||
if [ "$CFG_EGLFS" = "no" ]; then
|
||||
EGLFSY=" "
|
||||
EGLFSN="*"
|
||||
else
|
||||
EGLFSY="*"
|
||||
EGLFSN=" "
|
||||
fi
|
||||
|
||||
if [ "$CFG_XINPUT2" = "no" ]; then
|
||||
X2Y=" "
|
||||
X2N="*"
|
||||
@ -3074,6 +3109,8 @@ cat << EOF
|
||||
-no-sse4.2.......... Do not compile with use of SSE4.2 instructions.
|
||||
-no-avx ............ Do not compile with use of AVX instructions.
|
||||
-no-neon ........... Do not compile with use of NEON instructions.
|
||||
-no-mips_dsp ....... Do not compile with use of MIPS DSP instructions.
|
||||
-no-mips_dspr2 ..... Do not compile with use of MIPS DSP rev2 instructions.
|
||||
|
||||
-qtnamespace <name> Wraps all Qt library code in 'namespace <name> {...}'.
|
||||
-qtlibinfix <infix> Renames all libQt*.so to libQt*<infix>.so.
|
||||
@ -3191,6 +3228,9 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
|
||||
$XCBN -no-xcb ............ Do not compile Xcb (X protocol C-language Binding) support.
|
||||
$XCBY -xcb ............... Compile Xcb support.
|
||||
|
||||
$EGLFSN -no-eglfs .......... Do not compile EGLFS (EGL Full Screen/Single Surface) support.
|
||||
$EGLFSY -eglfs ............. Compile EGLFS support.
|
||||
|
||||
EOF
|
||||
|
||||
fi # X11
|
||||
@ -3309,12 +3349,6 @@ Qt/X11 only:
|
||||
-system-nas-sound .. Use NAS libaudio from the operating system.
|
||||
See http://radscan.com/nas.html
|
||||
|
||||
-egl ............... Use EGL instead of GLX to manage contexts.
|
||||
When building for desktop OpenGL, this option will
|
||||
make Qt use EGL to manage contexts rather than the
|
||||
GLX, which is the default. Note: For OpenGL ES, EGL
|
||||
is always used.
|
||||
|
||||
-no-opengl ......... Do not support OpenGL.
|
||||
+ -opengl <api> ...... Enable OpenGL support.
|
||||
With no parameter, this will auto-detect the "best"
|
||||
@ -3899,11 +3933,12 @@ fi # Build qmake
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Use config.tests/arch/arch.pro to has the compiler tell us what the target architecture is
|
||||
CFG_ARCH=`"$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -e "s,^Project MESSAGE: ,," -e "s,^#.*$,,g" | grep -v "^$"`
|
||||
CFG_ARCH=`"$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
|
||||
|
||||
[ -z "$CFG_ARCH" ] && CFG_ARCH="unknown"
|
||||
if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
|
||||
# Do the same test again, using the host compiler
|
||||
CFG_HOST_ARCH=`"$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -e "s,^Project MESSAGE: ,," -e "s,^#.*$,,g" | grep -v "^$"`
|
||||
CFG_HOST_ARCH=`"$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9]*\).*,\1,p'`
|
||||
[ -z "$CFG_HOST_ARCH" ] && CFG_HOST_ARCH="unknown"
|
||||
else
|
||||
# not cross compiling, host == target
|
||||
@ -4030,6 +4065,20 @@ elif [ "$CFG_ARCH" != "arm" ]; then
|
||||
CFG_NEON=no
|
||||
fi
|
||||
|
||||
# detect mips_dsp support
|
||||
if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSP}" = "yes" ]; then
|
||||
CFG_MIPS_DSP=yes
|
||||
else
|
||||
CFG_MIPS_DSP=no
|
||||
fi
|
||||
|
||||
# detect mips_dspr2 support
|
||||
if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSPR2}" = "yes" ]; then
|
||||
CFG_MIPS_DSPR2=yes
|
||||
else
|
||||
CFG_MIPS_DSPR2=no
|
||||
fi
|
||||
|
||||
[ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
|
||||
|
||||
# detect zlib
|
||||
@ -4103,6 +4152,14 @@ if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
|
||||
CFG_ACCESSIBILITY=yes
|
||||
fi
|
||||
|
||||
if [ "$CFG_EGLFS" = "yes" ]; then
|
||||
if [ "$CFG_EGL" = "no" ]; then
|
||||
echo "The EGLFS plugin requires EGL support and cannot be built"
|
||||
exit 101
|
||||
fi
|
||||
CFG_EGL=yes
|
||||
fi
|
||||
|
||||
# auto-detect SQL-modules support
|
||||
for _SQLDR in $CFG_SQL_AVAILABLE; do
|
||||
case $_SQLDR in
|
||||
@ -4570,9 +4627,6 @@ if [ "$PLATFORM_X11" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then
|
||||
CFG_OPENGL=desktop
|
||||
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
|
||||
CFG_OPENGL=es2
|
||||
if [ "$CFG_EGL" = "no" ]; then
|
||||
CFG_EGL=auto
|
||||
fi
|
||||
else
|
||||
if [ "$CFG_OPENGL" = "yes" ]; then
|
||||
echo "All the OpenGL functionality tests failed!"
|
||||
@ -4723,33 +4777,6 @@ if [ "$PLATFORM_X11" = "yes" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# auto-detect FontConfig support
|
||||
if [ "$CFG_FONTCONFIG" != "no" ]; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
|
||||
QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
|
||||
QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
|
||||
else
|
||||
QT_CFLAGS_FONTCONFIG=
|
||||
QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
|
||||
fi
|
||||
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
|
||||
CFG_FONTCONFIG=yes
|
||||
QMakeVar set QMAKE_CFLAGS_X11 "$QT_CFLAGS_FONTCONFIG \$\$QMAKE_CFLAGS_X11"
|
||||
QMakeVar set QMAKE_LIBS_X11 "$QT_LIBS_FONTCONFIG \$\$QMAKE_LIBS_X11"
|
||||
CFG_LIBFREETYPE=system
|
||||
else
|
||||
if [ "$CFG_FONTCONFIG" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
|
||||
echo "FontConfig support cannot be enabled due to functionality tests!"
|
||||
echo " Turn on verbose messaging (-v) to $0 to see the final report."
|
||||
echo " If you believe this message is in error you may use the continue"
|
||||
echo " switch (-continue) to $0 to continue."
|
||||
exit 101
|
||||
else
|
||||
CFG_FONTCONFIG=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# auto-detect Session Management support
|
||||
if [ "$CFG_SM" = "auto" ]; then
|
||||
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/sm "Session Management" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
|
||||
@ -4898,6 +4925,33 @@ if [ "$PLATFORM_X11" = "yes" ]; then
|
||||
fi
|
||||
fi # X11
|
||||
|
||||
# auto-detect FontConfig support
|
||||
if [ "$CFG_FONTCONFIG" != "no" ]; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
|
||||
QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
|
||||
QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
|
||||
else
|
||||
QT_CFLAGS_FONTCONFIG=
|
||||
QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
|
||||
fi
|
||||
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
|
||||
CFG_FONTCONFIG=yes
|
||||
QMakeVar set QMAKE_CFLAGS_X11 "$QT_CFLAGS_FONTCONFIG \$\$QMAKE_CFLAGS_X11"
|
||||
QMakeVar set QMAKE_LIBS_X11 "$QT_LIBS_FONTCONFIG \$\$QMAKE_LIBS_X11"
|
||||
CFG_LIBFREETYPE=system
|
||||
else
|
||||
if [ "$CFG_FONTCONFIG" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
|
||||
echo "FontConfig support cannot be enabled due to functionality tests!"
|
||||
echo " Turn on verbose messaging (-v) to $0 to see the final report."
|
||||
echo " If you believe this message is in error you may use the continue"
|
||||
echo " switch (-continue) to $0 to continue."
|
||||
exit 101
|
||||
else
|
||||
CFG_FONTCONFIG=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$BUILD_ON_MAC" = "yes" ]; then
|
||||
if [ "$CFG_PHONON" != "no" ]; then
|
||||
@ -4914,7 +4968,6 @@ if [ "$BUILD_ON_MAC" = "yes" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
# auto-detect OpenGL support (es2 = OpenGL ES 2.x)
|
||||
if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
|
||||
@ -4984,6 +5037,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
|
||||
# Save these for a check later
|
||||
ORIG_CFG_XCB="$CFG_XCB"
|
||||
ORIG_CFG_EGLFS="$CFG_EGLFS"
|
||||
|
||||
if [ "$CFG_LIBUDEV" != "no" ]; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then
|
||||
@ -5041,7 +5095,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
fi
|
||||
|
||||
if [ "$CFG_XCB" != "no" ]; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists xcb 2>/dev/null; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then
|
||||
QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`"
|
||||
QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`"
|
||||
fi
|
||||
@ -5101,6 +5155,31 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
QMAKE_DEFINES_XCB=QT_NO_XCB_XKB
|
||||
fi
|
||||
|
||||
# EGL Support
|
||||
if [ "$CFG_EGL" != "no" ]; then
|
||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists egl 2>/dev/null; then
|
||||
QMAKE_INCDIR_EGL=`$PKG_CONFIG --cflags-only-I egl 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
|
||||
QMAKE_LIBS_EGL=`$PKG_CONFIG --libs egl 2>/dev/null`
|
||||
QMAKE_CFLAGS_EGL=`$PKG_CONFIG --cflags egl 2>/dev/null`
|
||||
QMakeVar set QMAKE_INCDIR_EGL "$QMAKE_INCDIR_EGL"
|
||||
QMakeVar set QMAKE_LIBS_EGL "$QMAKE_LIBS_EGL"
|
||||
fi # detect EGL support
|
||||
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/qpa/egl" "EGL" $L_FLAGS $I_FLAGS $l_FLAGS $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then
|
||||
CFG_EGL=yes
|
||||
elif [ "$CFG_EGL" = "yes" ]; then
|
||||
echo " The EGL functionality test failed; EGL is required by some QPA plugins to manage contexts & surfaces."
|
||||
echo " You might need to modify the include and library search paths by editing"
|
||||
echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in ${XQMAKESPEC}."
|
||||
exit 1
|
||||
else
|
||||
CFG_EGL=no
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CFG_EGLFS" != "no" ]; then
|
||||
CFG_EGLFS="$CFG_EGL"
|
||||
fi
|
||||
|
||||
if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
|
||||
QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
|
||||
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
|
||||
@ -5116,13 +5195,13 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM_QPA" = "yes" ] && [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ]; then
|
||||
if [ "$CFG_XCB" = "no" ]; then
|
||||
if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ]; then
|
||||
if [ "$QPA_PLATFORM_GUARD" = "yes" ] &&
|
||||
( [ "$ORIG_CFG_XCB" = "auto" ] ); then
|
||||
( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] ); then
|
||||
echo "No QPA platform plugin enabled!"
|
||||
echo " If you really want to build without a QPA platform plugin you must pass"
|
||||
echo " -no-xcb. Doing this will produce a Qt that"
|
||||
echo " cannot run GUI applications."
|
||||
echo " -no-xcb and -no-eglfs to configure. Doing this will"
|
||||
echo " produce a Qt that cannot run GUI applications."
|
||||
echo " The dependencies needed for xcb to build are listed in"
|
||||
echo " src/plugins/platforms/xcb/README"
|
||||
exit 1
|
||||
@ -5132,35 +5211,6 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
|
||||
fi
|
||||
|
||||
EGL_VARIANT=none
|
||||
# EGL Support
|
||||
if [ "$PLATFORM_X11" = "yes" ]; then
|
||||
if [ "$CFG_EGL" != "no" ]; then
|
||||
# detect EGL support
|
||||
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/egl" "EGL (EGL/egl.h)" $L_FLAGS $I_FLAGS $l_FLAGS; then
|
||||
# EGL specified by QMAKE_*_EGL, included with <EGL/egl.h>
|
||||
EGL_VARIANT=regular
|
||||
CFG_EGL=yes
|
||||
fi
|
||||
|
||||
if [ "$EGL_VARIANT" = "none" ]; then
|
||||
if [ "$CFG_EGL" = "yes" ]; then
|
||||
echo "The EGL functionality test failed!"
|
||||
echo " EGL is required for OpenGL ES to manage contexts & surfaces."
|
||||
echo " You might need to modify the include and library search paths by editing"
|
||||
echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in"
|
||||
echo " ${XQMAKESPEC}."
|
||||
exit 1
|
||||
fi
|
||||
CFG_EGL=no
|
||||
# If QtOpenGL would be built against OpenGL ES, disable it as we can't to that if EGL is missing
|
||||
if [ "$CFG_OPENGL" = "es2" ]; then
|
||||
CFG_OPENGL=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
[ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_PHONON" != "no" ] && CFG_PHONON="yes"
|
||||
|
||||
# freetype support
|
||||
@ -5413,7 +5463,7 @@ if [ "$CFG_MAC_DWARF2" = "yes" ]; then
|
||||
fi
|
||||
|
||||
# Detect the default arch (x86 or x86_64) on Mac OS X
|
||||
if [ "$BUILD_ON_MAC" = "yes" ]; then
|
||||
if [ "$BUILD_ON_MAC" = "yes" ] && [ "$QT_CROSS_COMPILE" = "no" ]; then
|
||||
DEFAULT_ARCH=
|
||||
case `file "${outpath}/bin/qmake"` in
|
||||
*i?86)
|
||||
@ -5448,19 +5498,18 @@ else
|
||||
QT_CONFIG="$QT_CONFIG accessibility"
|
||||
fi
|
||||
|
||||
# egl stuff does not belong in lighthouse, but rather in plugins
|
||||
if [ "$PLATFORM_QPA" = "yes" ]; then
|
||||
CFG_EGL="no"
|
||||
# enable egl
|
||||
if [ "$CFG_EGL" = "yes" ]; then
|
||||
QT_CONFIG="$QT_CONFIG egl"
|
||||
else
|
||||
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
|
||||
fi
|
||||
|
||||
# enable egl
|
||||
if [ "$CFG_EGL" = "no" ]; then
|
||||
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
|
||||
# enable eglfs
|
||||
if [ "$CFG_EGLFS" = "yes" ]; then
|
||||
QT_CONFIG="$QT_CONFIG eglfs"
|
||||
else
|
||||
QT_CONFIG="$QT_CONFIG egl"
|
||||
if [ "$CFG_EGL_GLES_INCLUDES" = "yes" ]; then
|
||||
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_GLES_EGL"
|
||||
fi
|
||||
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGLFS"
|
||||
fi
|
||||
|
||||
# enable openvg
|
||||
@ -5565,6 +5614,10 @@ fi
|
||||
[ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx"
|
||||
[ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt"
|
||||
[ "$CFG_NEON" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG neon"
|
||||
if [ "$CFG_ARCH" = "mips" ]; then
|
||||
[ "$CFG_MIPS_DSP" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dsp"
|
||||
[ "$CFG_MIPS_DSPR2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dspr2"
|
||||
fi
|
||||
if [ "$CFG_CLOCK_GETTIME" = "yes" ]; then
|
||||
QT_CONFIG="$QT_CONFIG clock-gettime"
|
||||
fi
|
||||
@ -5719,7 +5772,7 @@ fi
|
||||
[ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS"
|
||||
[ '!' -z "$l_FLAGS" ] && QMakeVar add LIBS "$l_FLAGS"
|
||||
|
||||
if [ "$PLATFORM_MAC" = "yes" ]; then
|
||||
if [ "$PLATFORM_MAC" = "yes" ] && [ "$QT_CROSS_COMPILE" = "no" ]; then
|
||||
if [ "$CFG_RPATH" = "yes" ]; then
|
||||
QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname"
|
||||
# set the default rpath to the library installation directory
|
||||
@ -6519,6 +6572,9 @@ elif [ "$CFG_ARCH" = "arm" ]; then
|
||||
echo "iWMMXt support ......... ${CFG_IWMMXT}"
|
||||
echo "NEON support ........... ${CFG_NEON}"
|
||||
fi
|
||||
if [ "$CFG_ARCH" = "mips" ]; then
|
||||
echo "MIPS_DSP/MIPS_DSPR2..... ${CFG_MIPS_DSP}/${CFG_MIPS_DSPR2}"
|
||||
fi
|
||||
echo "IPv6 ifname support .... $CFG_IPV6IFNAME"
|
||||
echo "getaddrinfo support .... $CFG_GETADDRINFO"
|
||||
echo "getifaddrs support ..... $CFG_GETIFADDRS"
|
||||
@ -6552,13 +6608,7 @@ elif [ "$CFG_OPENGL" = "es2" ]; then
|
||||
else
|
||||
echo "OpenGL support ......... no"
|
||||
fi
|
||||
if [ "$CFG_EGL" != "no" ]; then
|
||||
if [ "$CFG_EGL_GLES_INCLUDES" = "yes" ]; then
|
||||
echo "EGL support ............ yes <GLES/egl.h>"
|
||||
else
|
||||
echo "EGL support ............ yes <EGL/egl.h>"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CFG_OPENVG" ]; then
|
||||
if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then
|
||||
echo "OpenVG support ......... ShivaVG"
|
||||
@ -6614,6 +6664,7 @@ echo "Xrender support ........ $CFG_XRENDER"
|
||||
if [ "$XPLATFORM_MAEMO" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
|
||||
echo "XInput2 support ........ $CFG_XINPUT2"
|
||||
fi
|
||||
echo "EGLFS support .......... $CFG_EGLFS"
|
||||
echo
|
||||
|
||||
# complain about not being able to use dynamic plugins if we are using a static build
|
||||
@ -6964,6 +7015,10 @@ fi'`
|
||||
|
||||
[ -f "$outpath/config.status" ] && rm -f "$outpath/config.status"
|
||||
echo "#!/bin/sh" > "$outpath/config.status"
|
||||
[ -n "$PKG_CONFIG_SYSROOT_DIR" ] && \
|
||||
echo "export PKG_CONFIG_SYSROOT_DIR=$PKG_CONFIG_SYSROOT_DIR" >> "$outpath/config.status"
|
||||
[ -n "$PKG_CONFIG_LIBDIR" ] && \
|
||||
echo "export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR" >> "$outpath/config.status"
|
||||
echo "if [ \"\$#\" -gt 0 ]; then" >> "$outpath/config.status"
|
||||
echo " $CONFIG_STATUS \"\$@\"" >> "$outpath/config.status"
|
||||
echo "else" >> "$outpath/config.status"
|
||||
|
@ -15,7 +15,6 @@ SUBDIRS = \
|
||||
effects \
|
||||
graphicsview \
|
||||
ipc \
|
||||
itemviews \
|
||||
layouts \
|
||||
linguist \
|
||||
mainwindows \
|
||||
@ -25,9 +24,13 @@ SUBDIRS = \
|
||||
sql \
|
||||
tools \
|
||||
tutorials \
|
||||
widgets \
|
||||
touch \
|
||||
gestures
|
||||
|
||||
!contains(QT_CONFIG, no-widgets) {
|
||||
SUBDIRS += widgets \
|
||||
itemviews
|
||||
}
|
||||
}
|
||||
wince*|embedded|x11:!contains(QT_CONFIG, no-gui): SUBDIRS += embedded
|
||||
|
||||
|
@ -3,7 +3,7 @@ SUBDIRS = \
|
||||
factorial \
|
||||
pingpong
|
||||
|
||||
!contains(QT_CONFIG, no-gui) {
|
||||
!contains(QT_CONFIG, no-widgets) {
|
||||
SUBDIRS += \
|
||||
eventtransitions \
|
||||
rogue \
|
||||
|
@ -7,7 +7,7 @@
|
||||
# as it's on by default in qcc (and has an analogous -nopipe option)
|
||||
#
|
||||
|
||||
QMAKE_CFLAGS +=
|
||||
QMAKE_CFLAGS += -Wno-psabi
|
||||
QMAKE_CFLAGS_DEPS += -M
|
||||
QMAKE_CFLAGS_WARN_ON += -Wall -W
|
||||
QMAKE_CFLAGS_WARN_OFF += -w
|
||||
|
@ -1,4 +1,4 @@
|
||||
QT += xml uilib
|
||||
QT += xml
|
||||
!isEmpty(QT.script.name): QT += script
|
||||
!isEmpty(QT.designer.name): QT += designer
|
||||
qt:load(qt)
|
||||
|
@ -144,7 +144,7 @@ defineTest(installTestHelperApp) {
|
||||
subPath = $${subInstall}.path
|
||||
win32: extension = .exe
|
||||
$$subTarget = $${2}/$${3}$${extension}
|
||||
$$subFiles = $${1}$${extension}
|
||||
$$subFiles = $${OUT_PWD}/$${1}$${extension}
|
||||
$$subPath = $${target.path}/$${2}
|
||||
$$subConfig += no_check_exist executable
|
||||
INSTALLS += $${subInstall}
|
||||
|
@ -39,7 +39,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "../linux-g++/qplatformdefs.h"
|
||||
#include "../linux-arm-gnueabi-g++/qplatformdefs.h"
|
||||
|
||||
#define QT_GUI_DOUBLE_CLICK_RADIUS 20
|
||||
#define QT_GUI_DRAG_DISTANCE 16
|
||||
|
@ -1,14 +1,6 @@
|
||||
#
|
||||
# qmake configuration for linux-icc
|
||||
#
|
||||
# Written for Intel C++ Compiler versions 10.x for GNU/Linux
|
||||
#
|
||||
# Note: Some of the remarks from the Intel compiler are disabled (even
|
||||
# with 'warn_on' specified):
|
||||
#
|
||||
# warning #654: overloaded virtual function "T::f" is only partially overridden in class "U"
|
||||
# warning #1572: floating-point equality and inequality comparisons are unreliable
|
||||
#
|
||||
|
||||
MAKEFILE_GENERATOR = UNIX
|
||||
TARGET_PLATFORM = unix
|
||||
@ -104,5 +96,5 @@ QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
|
||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
|
||||
|
||||
include(../common/unix.conf)
|
||||
include(../common/linux.conf)
|
||||
load(qt_config)
|
||||
|
24999
src/3rdparty/fonts/5x7.bdf
vendored
24999
src/3rdparty/fonts/5x7.bdf
vendored
File diff suppressed because it is too large
Load Diff
75535
src/3rdparty/fonts/6x13.bdf
vendored
75535
src/3rdparty/fonts/6x13.bdf
vendored
File diff suppressed because it is too large
Load Diff
1
src/3rdparty/fonts/COPYING.Cursor
vendored
1
src/3rdparty/fonts/COPYING.Cursor
vendored
@ -1 +0,0 @@
|
||||
Copyright (c) 2000 XFree86, Inc.
|
19
src/3rdparty/fonts/COPYING.Helvetica
vendored
19
src/3rdparty/fonts/COPYING.Helvetica
vendored
@ -1,19 +0,0 @@
|
||||
Copyright 1984-1989, 1994 Adobe Systems Incorporated.
|
||||
Copyright 1988, 1994 Digital Equipment Corporation.
|
||||
|
||||
Adobe is a trademark of Adobe Systems Incorporated which may be
|
||||
registered in certain jurisdictions.
|
||||
Permission to use these trademarks is hereby granted only in
|
||||
association with the images described in this file.
|
||||
|
||||
Permission to use, copy, modify, distribute and sell this software
|
||||
and its documentation for any purpose and without fee is hereby
|
||||
granted, provided that the above copyright notices appear in all
|
||||
copies and that both those copyright notices and this permission
|
||||
notice appear in supporting documentation, and that the names of
|
||||
Adobe Systems and Digital Equipment Corporation not be used in
|
||||
advertising or publicity pertaining to distribution of the software
|
||||
without specific, written prior permission. Adobe Systems and
|
||||
Digital Equipment Corporation make no representations about the
|
||||
suitability of this software for any purpose. It is provided "as
|
||||
is" without express or implied warranty.
|
16
src/3rdparty/fonts/COPYING.Utopia
vendored
16
src/3rdparty/fonts/COPYING.Utopia
vendored
@ -1,16 +0,0 @@
|
||||
Permission to use, reproduce, display and distribute the listed typefaces
|
||||
is hereby granted, provided that the Adobe Copyright notice appears in all
|
||||
whole and partial copies of the software and that the following trademark
|
||||
symbol and attribution appear in all unmodified copies of the software:
|
||||
|
||||
Copyright (c) 1989 Adobe Systems Incorporated
|
||||
Utopia (R)
|
||||
Utopia is a registered trademark of Adobe Systems Incorporated
|
||||
|
||||
The Adobe typefaces (Type 1 font program, bitmaps and Adobe Font Metric
|
||||
files) donated are:
|
||||
|
||||
Utopia Regular
|
||||
Utopia Italic
|
||||
Utopia Bold
|
||||
Utopia Bold Italic
|
42
src/3rdparty/fonts/COPYRIGHT.BH
vendored
42
src/3rdparty/fonts/COPYRIGHT.BH
vendored
@ -1,42 +0,0 @@
|
||||
Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font
|
||||
instruction code copyright (c) 2001 by URW++ GmbH. All Rights
|
||||
Reserved. Luxi is a registered trademark of Bigelow & Holmes Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of these Fonts and associated documentation files (the "Font
|
||||
Software"), to deal in the Font Software, including without
|
||||
limitation the rights to use, copy, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Font Software, and to permit
|
||||
persons to whom the Font Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice
|
||||
shall be included in all copies of one or more of the Font Software.
|
||||
|
||||
The Font Software may not be modified, altered, or added to, and in
|
||||
particular the designs of glyphs or characters in the Fonts may not
|
||||
be modified nor may additional glyphs or characters be added to the
|
||||
Fonts. This License becomes null and void when the Fonts or Font
|
||||
Software have been modified.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
||||
BIGELOW & HOLMES INC. OR URW++ GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
|
||||
INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT
|
||||
SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Bigelow & Holmes
|
||||
Inc. and URW++ GmbH. shall not be used in advertising or otherwise to
|
||||
promote the sale, use or other dealings in this Font Software without
|
||||
prior written authorization from Bigelow & Holmes Inc. and URW++ GmbH.
|
||||
|
||||
For further information, contact:
|
||||
|
||||
info@urwpp.de
|
||||
or
|
||||
design@bigelowandholmes.com
|
11
src/3rdparty/fonts/COPYRIGHT.Charter
vendored
11
src/3rdparty/fonts/COPYRIGHT.Charter
vendored
@ -1,11 +0,0 @@
|
||||
(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
|
||||
|
||||
You are hereby granted permission under all Bitstream propriety rights
|
||||
to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
|
||||
Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
|
||||
for any purpose and without restriction; provided, that this notice is
|
||||
left intact on all copies of such fonts and that Bitstream's trademark
|
||||
is acknowledged as shown below on all unmodified copies of the 4 Charter
|
||||
Type 1 fonts.
|
||||
|
||||
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
|
11
src/3rdparty/fonts/COPYRIGHT.Courier
vendored
11
src/3rdparty/fonts/COPYRIGHT.Courier
vendored
@ -1,11 +0,0 @@
|
||||
(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
|
||||
|
||||
You are hereby granted permission under all Bitstream propriety rights
|
||||
to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
|
||||
Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
|
||||
for any purpose and without restriction; provided, that this notice is
|
||||
left intact on all copies of such fonts and that Bitstream's trademark
|
||||
is acknowledged as shown below on all unmodified copies of the 4 Charter
|
||||
Type 1 fonts.
|
||||
|
||||
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
|
98
src/3rdparty/fonts/COPYRIGHT.DejaVu
vendored
98
src/3rdparty/fonts/COPYRIGHT.DejaVu
vendored
@ -1,98 +0,0 @@
|
||||
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below)
|
||||
|
||||
Bitstream Vera Fonts Copyright
|
||||
------------------------------
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
|
||||
a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of the fonts accompanying this license ("Fonts") and associated
|
||||
documentation files (the "Font Software"), to reproduce and distribute the
|
||||
Font Software, including without limitation the rights to use, copy, merge,
|
||||
publish, distribute, and/or sell copies of the Font Software, and to permit
|
||||
persons to whom the Font Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice shall
|
||||
be included in all copies of one or more of the Font Software typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in particular
|
||||
the designs of glyphs or characters in the Fonts may be modified and
|
||||
additional glyphs or characters may be added to the Fonts, only if the fonts
|
||||
are renamed to names not containing either the words "Bitstream" or the word
|
||||
"Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts or Font
|
||||
Software that has been modified and is distributed under the "Bitstream
|
||||
Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but no
|
||||
copy of one or more of the Font Software typefaces may be sold by itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
|
||||
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
|
||||
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
|
||||
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
|
||||
FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome
|
||||
Foundation, and Bitstream Inc., shall not be used in advertising or
|
||||
otherwise to promote the sale, use or other dealings in this Font Software
|
||||
without prior written authorization from the Gnome Foundation or Bitstream
|
||||
Inc., respectively. For further information, contact: fonts at gnome dot
|
||||
org.
|
||||
|
||||
Arev Fonts Copyright
|
||||
------------------------------
|
||||
|
||||
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the fonts accompanying this license ("Fonts") and
|
||||
associated documentation files (the "Font Software"), to reproduce
|
||||
and distribute the modifications to the Bitstream Vera Font Software,
|
||||
including without limitation the rights to use, copy, merge, publish,
|
||||
distribute, and/or sell copies of the Font Software, and to permit
|
||||
persons to whom the Font Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice
|
||||
shall be included in all copies of one or more of the Font Software
|
||||
typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in
|
||||
particular the designs of glyphs or characters in the Fonts may be
|
||||
modified and additional glyphs or characters may be added to the
|
||||
Fonts, only if the fonts are renamed to names not containing either
|
||||
the words "Tavmjong Bah" or the word "Arev".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts
|
||||
or Font Software that has been modified and is distributed under the
|
||||
"Tavmjong Bah Arev" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but
|
||||
no copy of one or more of the Font Software typefaces may be sold by
|
||||
itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
||||
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of Tavmjong Bah shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other
|
||||
dealings in this Font Software without prior written authorization
|
||||
from Tavmjong Bah. For further information, contact: tavmjong @ free
|
||||
. fr.
|
||||
|
||||
$Id: LICENSE 778 2006-04-20 18:14:24Z moyogo $
|
9
src/3rdparty/fonts/COPYRIGHT.IBM
vendored
9
src/3rdparty/fonts/COPYRIGHT.IBM
vendored
@ -1,9 +0,0 @@
|
||||
IBM Courier - Copyright (c) IBM Corporation 1990, 1991
|
||||
|
||||
You are hereby granted permission under the terms of the IBM/MIT X Consortium
|
||||
Courier Typefont agreement to execute, reproduce, distribute, display, market,
|
||||
sell and otherwise transfer copies of the IBM Courier font to third parties.
|
||||
|
||||
The font is provided "AS IS" without charge. NO WARRANTIES OR INDEMNIFICATION
|
||||
ARE GIVEN, WHETHER EXPRESS OR IMPLIED INCLUDING, BUT LIMITED TO THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
7
src/3rdparty/fonts/COPYRIGHT.Unifont
vendored
7
src/3rdparty/fonts/COPYRIGHT.Unifont
vendored
@ -1,7 +0,0 @@
|
||||
The Unifont font was originally obtained from http://www.czyborra.com/ under
|
||||
the following license:
|
||||
|
||||
All of my works you find here are freeware. You may freely copy, use, quote,
|
||||
modify or redistribute them as long as you properly attribute my contribution
|
||||
and have given a quick thought about whether Roman might perhaps be interested
|
||||
to read what you did with his stuff. Horizontal rules don't apply.
|
124
src/3rdparty/fonts/COPYRIGHT.Vera
vendored
124
src/3rdparty/fonts/COPYRIGHT.Vera
vendored
@ -1,124 +0,0 @@
|
||||
Bitstream Vera Fonts Copyright
|
||||
|
||||
The fonts have a generous copyright, allowing derivative works (as
|
||||
long as "Bitstream" or "Vera" are not in the names), and full
|
||||
redistribution (so long as they are not *sold* by themselves). They
|
||||
can be be bundled, redistributed and sold with any software.
|
||||
|
||||
The fonts are distributed under the following copyright:
|
||||
|
||||
Copyright
|
||||
=========
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
|
||||
Vera is a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the fonts accompanying this license ("Fonts") and associated
|
||||
documentation files (the "Font Software"), to reproduce and distribute
|
||||
the Font Software, including without limitation the rights to use,
|
||||
copy, merge, publish, distribute, and/or sell copies of the Font
|
||||
Software, and to permit persons to whom the Font Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice
|
||||
shall be included in all copies of one or more of the Font Software
|
||||
typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in
|
||||
particular the designs of glyphs or characters in the Fonts may be
|
||||
modified and additional glyphs or characters may be added to the
|
||||
Fonts, only if the fonts are renamed to names not containing either
|
||||
the words "Bitstream" or the word "Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts
|
||||
or Font Software that has been modified and is distributed under the
|
||||
"Bitstream Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but
|
||||
no copy of one or more of the Font Software typefaces may be sold by
|
||||
itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
||||
BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
|
||||
OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
|
||||
SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome
|
||||
Foundation, and Bitstream Inc., shall not be used in advertising or
|
||||
otherwise to promote the sale, use or other dealings in this Font
|
||||
Software without prior written authorization from the Gnome Foundation
|
||||
or Bitstream Inc., respectively. For further information, contact:
|
||||
fonts at gnome dot org.
|
||||
|
||||
Copyright FAQ
|
||||
=============
|
||||
|
||||
1. I don't understand the resale restriction... What gives?
|
||||
|
||||
Bitstream is giving away these fonts, but wishes to ensure its
|
||||
competitors can't just drop the fonts as is into a font sale system
|
||||
and sell them as is. It seems fair that if Bitstream can't make money
|
||||
from the Bitstream Vera fonts, their competitors should not be able to
|
||||
do so either. You can sell the fonts as part of any software package,
|
||||
however.
|
||||
|
||||
2. I want to package these fonts separately for distribution and
|
||||
sale as part of a larger software package or system. Can I do so?
|
||||
|
||||
Yes. A RPM or Debian package is a "larger software package" to begin
|
||||
with, and you aren't selling them independently by themselves.
|
||||
See 1. above.
|
||||
|
||||
3. Are derivative works allowed?
|
||||
Yes!
|
||||
|
||||
4. Can I change or add to the font(s)?
|
||||
Yes, but you must change the name(s) of the font(s).
|
||||
|
||||
5. Under what terms are derivative works allowed?
|
||||
|
||||
You must change the name(s) of the fonts. This is to ensure the
|
||||
quality of the fonts, both to protect Bitstream and Gnome. We want to
|
||||
ensure that if an application has opened a font specifically of these
|
||||
names, it gets what it expects (though of course, using fontconfig,
|
||||
substitutions could still could have occurred during font
|
||||
opening). You must include the Bitstream copyright. Additional
|
||||
copyrights can be added, as per copyright law. Happy Font Hacking!
|
||||
|
||||
6. If I have improvements for Bitstream Vera, is it possible they might get
|
||||
adopted in future versions?
|
||||
|
||||
Yes. The contract between the Gnome Foundation and Bitstream has
|
||||
provisions for working with Bitstream to ensure quality additions to
|
||||
the Bitstream Vera font family. Please contact us if you have such
|
||||
additions. Note, that in general, we will want such additions for the
|
||||
entire family, not just a single font, and that you'll have to keep
|
||||
both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
|
||||
glyphs to the font, they must be stylistically in keeping with Vera's
|
||||
design. Vera cannot become a "ransom note" font. Jim Lyles will be
|
||||
providing a document describing the design elements used in Vera, as a
|
||||
guide and aid for people interested in contributing to Vera.
|
||||
|
||||
7. I want to sell a software package that uses these fonts: Can I do so?
|
||||
|
||||
Sure. Bundle the fonts with your software and sell your software
|
||||
with the fonts. That is the intent of the copyright.
|
||||
|
||||
8. If applications have built the names "Bitstream Vera" into them,
|
||||
can I override this somehow to use fonts of my choosing?
|
||||
|
||||
This depends on exact details of the software. Most open source
|
||||
systems and software (e.g., Gnome, KDE, etc.) are now converting to
|
||||
use fontconfig (see www.fontconfig.org) to handle font configuration,
|
||||
selection and substitution; it has provisions for overriding font
|
||||
names and subsituting alternatives. An example is provided by the
|
||||
supplied local.conf file, which chooses the family Bitstream Vera for
|
||||
"sans", "serif" and "monospace". Other software (e.g., the XFree86
|
||||
core server) has other mechanisms for font substitution.
|
||||
|
59
src/3rdparty/fonts/README.DejaVu
vendored
59
src/3rdparty/fonts/README.DejaVu
vendored
@ -1,59 +0,0 @@
|
||||
DejaVu fonts 2.12 (c)2004-2006 DejaVu fonts team
|
||||
-----------------------------------------------
|
||||
|
||||
The DejaVu fonts are a font family based on the Bitstream Vera Fonts
|
||||
(http://gnome.org/fonts/). Its purpose is to provide a wider range of
|
||||
characters (see status.txt for more information) while maintaining the
|
||||
original look and feel.
|
||||
|
||||
DejaVu fonts are based on Bitstream Vera fonts version 1.10.
|
||||
|
||||
Available fonts (Sans = sans serif, Mono = monospaced):
|
||||
|
||||
DejaVu Sans Mono
|
||||
DejaVu Sans Mono Bold
|
||||
DejaVu Sans Mono Bold Oblique
|
||||
DejaVu Sans Mono Oblique
|
||||
DejaVu Sans
|
||||
DejaVu Sans Bold
|
||||
DejaVu Sans Bold Oblique
|
||||
DejaVu Sans Oblique
|
||||
DejaVu Sans ExtraLight (experimental)
|
||||
DejaVu Serif
|
||||
DejaVu Serif Bold
|
||||
DejaVu Serif Bold Oblique (experimental)
|
||||
DejaVu Serif Oblique (experimental)
|
||||
DejaVu Sans Condensed (experimental)
|
||||
DejaVu Sans Condensed Bold (experimental)
|
||||
DejaVu Sans Condensed Bold Oblique (experimental)
|
||||
DejaVu Sans Condensed Oblique (experimental)
|
||||
DejaVu Serif Condensed (experimental)
|
||||
DejaVu Serif Condensed Bold (experimental)
|
||||
DejaVu Serif Condensed Bold Oblique (experimental)
|
||||
DejaVu Serif Condensed Oblique (experimental)
|
||||
|
||||
All fonts are also available as derivative called DejaVu LGC with support
|
||||
only for Latin, Greek and Cyrillic scripts.
|
||||
|
||||
For license information see LICENSE. What's new is described in NEWS. Known
|
||||
bugs are in BUGS. All authors are mentioned in AUTHORS.
|
||||
|
||||
Fonts are published in source form as SFD files (Spline Font Database from
|
||||
FontForge - http://fontforge.sf.net/) and in compiled form as TTF files
|
||||
(TrueType fonts).
|
||||
|
||||
For more information go to http://dejavu.sourceforge.net/.
|
||||
|
||||
Characters from Arev fonts, Copyright (c) 2006 by Tavmjong Bah:
|
||||
---------------------------
|
||||
U+01ba, U+01bf, U+01f7, U+021c, U+021d, U+0220, U+0222, U+0223,
|
||||
U+02b9, U+02ba, U+02bd, U+02c2, U+02c3, U+02c4, U+02c5, U+02d4,
|
||||
U+02d5, U+02d7, U+02ec, U+02ed, U+02ee, U+0346-034e, U+0360, U+0362,
|
||||
U+03e2-03ef, U+0460-0463, U+0466-0486, U+0488-0489, U+04a8-04a9,
|
||||
U+0500-050f, U+2055-205e, U+20B0, U+20B2-20B3, U+2102, U+210D, U+210f,
|
||||
U+2111, U+2113, U+2115, U+2118-U+211A, U+211c-211d, U+2124,U+2135,
|
||||
U+213C-U+2140, U+2295-2298, U+2308-230b, U+26A2-U+26B1, U+2701-2704,
|
||||
U+2706-2709, U+270c-274b, U+2758-275a, U+2761-2775, U+2780-2794,
|
||||
U+2798-27af, U+27b1-27be, U+fb05-fb06
|
||||
|
||||
$Id: README 1288 2006-11-19 14:22:52Z ben_laenen $
|
2604
src/3rdparty/fonts/helvB08.bdf
vendored
2604
src/3rdparty/fonts/helvB08.bdf
vendored
File diff suppressed because it is too large
Load Diff
2867
src/3rdparty/fonts/helvB10.bdf
vendored
2867
src/3rdparty/fonts/helvB10.bdf
vendored
File diff suppressed because it is too large
Load Diff
3057
src/3rdparty/fonts/helvB12.bdf
vendored
3057
src/3rdparty/fonts/helvB12.bdf
vendored
File diff suppressed because it is too large
Load Diff
3319
src/3rdparty/fonts/helvB14.bdf
vendored
3319
src/3rdparty/fonts/helvB14.bdf
vendored
File diff suppressed because it is too large
Load Diff
3864
src/3rdparty/fonts/helvB18.bdf
vendored
3864
src/3rdparty/fonts/helvB18.bdf
vendored
File diff suppressed because it is too large
Load Diff
4718
src/3rdparty/fonts/helvB24.bdf
vendored
4718
src/3rdparty/fonts/helvB24.bdf
vendored
File diff suppressed because it is too large
Load Diff
2597
src/3rdparty/fonts/helvBO08.bdf
vendored
2597
src/3rdparty/fonts/helvBO08.bdf
vendored
File diff suppressed because it is too large
Load Diff
2863
src/3rdparty/fonts/helvBO10.bdf
vendored
2863
src/3rdparty/fonts/helvBO10.bdf
vendored
File diff suppressed because it is too large
Load Diff
3056
src/3rdparty/fonts/helvBO12.bdf
vendored
3056
src/3rdparty/fonts/helvBO12.bdf
vendored
File diff suppressed because it is too large
Load Diff
3325
src/3rdparty/fonts/helvBO14.bdf
vendored
3325
src/3rdparty/fonts/helvBO14.bdf
vendored
File diff suppressed because it is too large
Load Diff
3853
src/3rdparty/fonts/helvBO18.bdf
vendored
3853
src/3rdparty/fonts/helvBO18.bdf
vendored
File diff suppressed because it is too large
Load Diff
4709
src/3rdparty/fonts/helvBO24.bdf
vendored
4709
src/3rdparty/fonts/helvBO24.bdf
vendored
File diff suppressed because it is too large
Load Diff
2601
src/3rdparty/fonts/helvO08.bdf
vendored
2601
src/3rdparty/fonts/helvO08.bdf
vendored
File diff suppressed because it is too large
Load Diff
2869
src/3rdparty/fonts/helvO10.bdf
vendored
2869
src/3rdparty/fonts/helvO10.bdf
vendored
File diff suppressed because it is too large
Load Diff
3042
src/3rdparty/fonts/helvO12.bdf
vendored
3042
src/3rdparty/fonts/helvO12.bdf
vendored
File diff suppressed because it is too large
Load Diff
3310
src/3rdparty/fonts/helvO14.bdf
vendored
3310
src/3rdparty/fonts/helvO14.bdf
vendored
File diff suppressed because it is too large
Load Diff
3837
src/3rdparty/fonts/helvO18.bdf
vendored
3837
src/3rdparty/fonts/helvO18.bdf
vendored
File diff suppressed because it is too large
Load Diff
4713
src/3rdparty/fonts/helvO24.bdf
vendored
4713
src/3rdparty/fonts/helvO24.bdf
vendored
File diff suppressed because it is too large
Load Diff
2595
src/3rdparty/fonts/helvR08.bdf
vendored
2595
src/3rdparty/fonts/helvR08.bdf
vendored
File diff suppressed because it is too large
Load Diff
2864
src/3rdparty/fonts/helvR10.bdf
vendored
2864
src/3rdparty/fonts/helvR10.bdf
vendored
File diff suppressed because it is too large
Load Diff
3046
src/3rdparty/fonts/helvR12.bdf
vendored
3046
src/3rdparty/fonts/helvR12.bdf
vendored
File diff suppressed because it is too large
Load Diff
3313
src/3rdparty/fonts/helvR14.bdf
vendored
3313
src/3rdparty/fonts/helvR14.bdf
vendored
File diff suppressed because it is too large
Load Diff
3861
src/3rdparty/fonts/helvR18.bdf
vendored
3861
src/3rdparty/fonts/helvR18.bdf
vendored
File diff suppressed because it is too large
Load Diff
4715
src/3rdparty/fonts/helvR24.bdf
vendored
4715
src/3rdparty/fonts/helvR24.bdf
vendored
File diff suppressed because it is too large
Load Diff
1548
src/3rdparty/fonts/micro.bdf
vendored
1548
src/3rdparty/fonts/micro.bdf
vendored
File diff suppressed because it is too large
Load Diff
801998
src/3rdparty/fonts/unifont.bdf
vendored
801998
src/3rdparty/fonts/unifont.bdf
vendored
File diff suppressed because it is too large
Load Diff
9
src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
vendored
9
src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
vendored
@ -1187,13 +1187,14 @@ static HB_Error Load_PairSet ( HB_PairSet* ps,
|
||||
|
||||
for ( n = 0; n < count; n++ )
|
||||
{
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
goto Fail;
|
||||
for ( m = 0; m < record_size; m++ ) {
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
goto Fail;
|
||||
|
||||
for ( m = 0; m < record_size; m++ )
|
||||
*(vr++) = GET_Short();
|
||||
|
||||
FORGET_Frame();
|
||||
FORGET_Frame();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
48
src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
vendored
48
src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
vendored
@ -1302,30 +1302,52 @@ HB_Bool HB_OpenTypePosition(HB_ShaperItem *item, int availableGlyphs, HB_Bool do
|
||||
glyphs[i] = face->buffer->in_string[i].gindex;
|
||||
attributes[i] = face->tmpAttributes[face->buffer->in_string[i].cluster];
|
||||
if (i && face->buffer->in_string[i].cluster == face->buffer->in_string[i-1].cluster)
|
||||
attributes[i].clusterStart = false;
|
||||
attributes[i].clusterStart = false; //FIXME - Shouldn't we otherwise set this to true, rather than leaving it?
|
||||
}
|
||||
item->num_glyphs = face->buffer->in_length;
|
||||
|
||||
if (doLogClusters && face->glyphs_substituted) {
|
||||
// we can't do this for indic, as we pass the stuf in syllables and it's easier to do it in the shaper.
|
||||
unsigned short *logClusters = item->log_clusters;
|
||||
int clusterStart = 0;
|
||||
int oldCi = 0;
|
||||
// #### the reconstruction of the logclusters currently does not work if the original string
|
||||
// contains surrogate pairs
|
||||
|
||||
unsigned short *logClusters = item->log_clusters;
|
||||
int clusterStart = 0;
|
||||
int oldIntermediateIndex = 0;
|
||||
|
||||
// This code makes a mapping, logClusters, between the original utf16 string (item->string) and the final
|
||||
// set of glyphs (in_string).
|
||||
//
|
||||
// The code sets the value of logClusters[i] to the index of in_string containing the glyph that will render
|
||||
// item->string[i].
|
||||
//
|
||||
// This is complicated slightly because in_string[i].cluster is an index to an intermediate
|
||||
// array of glyphs - the array that we were passed as the original value of item->glyphs.
|
||||
// To map from the original string to the intermediate array of glyphs we have tmpLogClusters.
|
||||
//
|
||||
// So we have three groups of indexes:
|
||||
//
|
||||
// i,clusterStart = index to in_length, the final set of glyphs. Also an index to attributes
|
||||
// intermediateIndex = index to the glyphs originally passed in.
|
||||
// stringIndex = index to item->string, the original string.
|
||||
|
||||
int stringIndex = 0;
|
||||
// Iterate over the final set of glyphs...
|
||||
for (unsigned int i = 0; i < face->buffer->in_length; ++i) {
|
||||
int ci = face->buffer->in_string[i].cluster;
|
||||
// DEBUG(" ci[%d] = %d mark=%d, cmb=%d, cs=%d",
|
||||
// i, ci, glyphAttributes[i].mark, glyphAttributes[i].combiningClass, glyphAttributes[i].clusterStart);
|
||||
if (!attributes[i].mark && attributes[i].clusterStart && ci != oldCi) {
|
||||
for (int j = oldCi; j < ci; j++)
|
||||
logClusters[j] = clusterStart;
|
||||
// Get the index into the intermediate string for the start of the cluster of chars
|
||||
int intermediateIndex = face->buffer->in_string[i].cluster;
|
||||
if (intermediateIndex != oldIntermediateIndex) {
|
||||
// We have found the end of the cluster of chars in the intermediate string
|
||||
while (face->tmpLogClusters[stringIndex] < intermediateIndex) {
|
||||
logClusters[stringIndex++] = clusterStart;
|
||||
}
|
||||
clusterStart = i;
|
||||
oldCi = ci;
|
||||
oldIntermediateIndex = intermediateIndex;
|
||||
}
|
||||
}
|
||||
for (int j = oldCi; j < face->length; j++)
|
||||
logClusters[j] = clusterStart;
|
||||
while (stringIndex < face->length) {
|
||||
logClusters[stringIndex++] = clusterStart;
|
||||
}
|
||||
}
|
||||
|
||||
// calulate the advances for the shaped glyphs
|
||||
|
@ -597,6 +597,11 @@
|
||||
#define QT_NO_DATAWIDGETMAPPER
|
||||
#endif
|
||||
|
||||
// QIdentityProxyModel
|
||||
#if !defined(QT_NO_IDENTITYPROXYMODEL) && (defined(QT_NO_PROXYMODEL))
|
||||
#define QT_NO_IDENTITYPROXYMODEL
|
||||
#endif
|
||||
|
||||
// QListWidget
|
||||
#if !defined(QT_NO_LISTWIDGET) && (defined(QT_NO_LISTVIEW))
|
||||
#define QT_NO_LISTWIDGET
|
||||
|
@ -690,6 +690,13 @@ Requires: PROXYMODEL
|
||||
Name: QSortFilterProxyModel
|
||||
SeeAlso: ???
|
||||
|
||||
Feature: IDENTITYPROXYMODEL
|
||||
Description: Supports proxying a source model unmodified.
|
||||
Section: ItemViews
|
||||
Requires: PROXYMODEL
|
||||
Name: QIdentityProxyModel
|
||||
SeeAlso: ???
|
||||
|
||||
Feature: STRINGLISTMODEL
|
||||
Description: Supports a model that supplies strings to views.
|
||||
Section: ItemViews
|
||||
|
@ -217,14 +217,14 @@ QLibraryInfo::isDebugBuild()
|
||||
static const struct {
|
||||
char key[14], value[13];
|
||||
} qtConfEntries[] = {
|
||||
{ "Prefix", "" },
|
||||
{ "Prefix", "." },
|
||||
{ "Documentation", "doc" },
|
||||
{ "Headers", "include" },
|
||||
{ "Libraries", "lib" },
|
||||
{ "Binaries", "bin" },
|
||||
{ "Plugins", "plugins" },
|
||||
{ "Imports", "imports" },
|
||||
{ "Data", "" },
|
||||
{ "Data", "." },
|
||||
{ "Translations", "translations" },
|
||||
{ "Examples", "examples" },
|
||||
{ "Tests", "tests" },
|
||||
@ -232,7 +232,7 @@ static const struct {
|
||||
{ "Sysroot", "" },
|
||||
{ "HostPrefix", "" },
|
||||
{ "HostBinaries", "bin" },
|
||||
{ "HostData", "" },
|
||||
{ "HostData", "." },
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -295,6 +295,12 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
|
||||
|
||||
ret = config->value(key, defaultValue).toString();
|
||||
|
||||
#ifdef QT_BUILD_QMAKE
|
||||
if (ret.isEmpty() && loc == HostPrefixPath)
|
||||
ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key),
|
||||
QLatin1String(qtConfEntries[PrefixPath].value)).toString();
|
||||
#endif
|
||||
|
||||
// expand environment variables in the form $(ENVVAR)
|
||||
int rep;
|
||||
QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
|
||||
@ -309,16 +315,14 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
|
||||
}
|
||||
}
|
||||
|
||||
if (QDir::isRelativePath(ret)) {
|
||||
if (!ret.isEmpty() && QDir::isRelativePath(ret)) {
|
||||
QString baseDir;
|
||||
#ifdef QT_BUILD_QMAKE
|
||||
if (loc == HostPrefixPath || loc == PrefixPath) {
|
||||
// We make the prefix path absolute to the executable's directory.
|
||||
if (loc == HostPrefixPath || loc == PrefixPath || loc == SysrootPath) {
|
||||
// We make the prefix/sysroot path absolute to the executable's directory.
|
||||
// loc == PrefixPath while a sysroot is set would make no sense here.
|
||||
// loc == SysrootPath only makes sense if qmake lives inside the sysroot itself.
|
||||
baseDir = QFileInfo(qmake_libraryInfoFile()).absolutePath();
|
||||
} else if (loc == SysrootPath) {
|
||||
// The sysroot is bare
|
||||
return ret;
|
||||
} else if (loc > SysrootPath && loc <= LastHostPath) {
|
||||
// We make any other host path absolute to the host prefix directory.
|
||||
baseDir = rawLocation(HostPrefixPath);
|
||||
|
@ -717,10 +717,10 @@ void qt_message_output(QtMsgType msgType, const QMessageLogContext &context, con
|
||||
int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
|
||||
_CrtSetReportMode(_CRT_ERROR, reportMode);
|
||||
#if !defined(Q_OS_WINCE)
|
||||
int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, buf);
|
||||
int ret = _CrtDbgReport(_CRT_ERROR, context.file, context.line, QT_VERSION_STR, buf);
|
||||
#else
|
||||
int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(__FILE__),
|
||||
__LINE__, _CRT_WIDE(QT_VERSION_STR),
|
||||
int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(context.file),
|
||||
context.line, _CRT_WIDE(QT_VERSION_STR),
|
||||
reinterpret_cast<const wchar_t *> (
|
||||
QString::fromLatin1(buf).utf16()));
|
||||
#endif
|
||||
|
@ -56,6 +56,13 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
// #define WINQFSW_DEBUG
|
||||
#ifdef WINQFSW_DEBUG
|
||||
# define DEBUG qDebug
|
||||
#else
|
||||
# define DEBUG if (false) qDebug
|
||||
#endif
|
||||
|
||||
QWindowsFileSystemWatcherEngine::Handle::Handle()
|
||||
: handle(INVALID_HANDLE_VALUE), flags(0u)
|
||||
{
|
||||
@ -74,7 +81,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
QStringList *files,
|
||||
QStringList *directories)
|
||||
{
|
||||
// qDebug()<<"Adding"<<paths.count()<<"to existing"<<(files->count() + directories->count())<<"watchers";
|
||||
DEBUG() << "Adding" << paths.count() << "to existing" << (files->count() + directories->count()) << "watchers";
|
||||
QStringList p = paths;
|
||||
QMutableListIterator<QString> it(p);
|
||||
while (it.hasNext()) {
|
||||
@ -101,7 +108,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
continue;
|
||||
}
|
||||
|
||||
// qDebug()<<"Looking for a thread/handle for"<<normalPath;
|
||||
DEBUG() << "Looking for a thread/handle for" << normalPath;
|
||||
|
||||
const QString absolutePath = isDir ? fileInfo.absoluteFilePath() : fileInfo.absolutePath();
|
||||
const uint flags = isDir
|
||||
@ -132,7 +139,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
handle = thread->handleForDir.value(absolutePath);
|
||||
if (handle.handle != INVALID_HANDLE_VALUE && handle.flags == flags) {
|
||||
// found a thread now insert...
|
||||
// qDebug()<<" Found a thread"<<thread;
|
||||
DEBUG() << "Found a thread" << thread;
|
||||
|
||||
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> &h
|
||||
= thread->pathInfoForHandle[handle.handle];
|
||||
@ -151,7 +158,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
|
||||
// no thread found, first create a handle
|
||||
if (handle.handle == INVALID_HANDLE_VALUE || handle.flags != flags) {
|
||||
// qDebug()<<" No thread found";
|
||||
DEBUG() << "No thread found";
|
||||
// Volume and folder paths need a trailing slash for proper notification
|
||||
// (e.g. "c:" -> "c:/").
|
||||
const QString effectiveAbsolutePath =
|
||||
@ -167,8 +174,8 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
foreach(QWindowsFileSystemWatcherEngineThread *thread, threads) {
|
||||
QMutexLocker(&(thread->mutex));
|
||||
if (thread->handles.count() < MAXIMUM_WAIT_OBJECTS) {
|
||||
// qDebug() << " Added handle" << handle.handle << "for" << absolutePath << "to watch" << fileInfo.absoluteFilePath();
|
||||
// qDebug()<< " to existing thread"<<thread;
|
||||
DEBUG() << "Added handle" << handle.handle << "for" << absolutePath << "to watch" << fileInfo.absoluteFilePath()
|
||||
<< "to existing thread " << thread;
|
||||
thread->handles.append(handle.handle);
|
||||
thread->handleForDir.insert(absolutePath, handle);
|
||||
|
||||
@ -186,7 +193,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
|
||||
}
|
||||
if (!found) {
|
||||
QWindowsFileSystemWatcherEngineThread *thread = new QWindowsFileSystemWatcherEngineThread();
|
||||
//qDebug()<<" ###Creating new thread"<<thread<<"("<<(threads.count()+1)<<"threads)";
|
||||
DEBUG() << " ###Creating new thread" << thread << "(" << (threads.count()+1) << "threads)";
|
||||
thread->handles.append(handle.handle);
|
||||
thread->handleForDir.insert(absolutePath, handle);
|
||||
|
||||
@ -215,7 +222,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
|
||||
QStringList *files,
|
||||
QStringList *directories)
|
||||
{
|
||||
// qDebug()<<"removePaths"<<paths;
|
||||
DEBUG() << "removePaths" << paths;
|
||||
QStringList p = paths;
|
||||
QMutableListIterator<QString> it(p);
|
||||
while (it.hasNext()) {
|
||||
@ -224,7 +231,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
|
||||
if (normalPath.endsWith(QLatin1Char('/')) || normalPath.endsWith(QLatin1Char('\\')))
|
||||
normalPath.chop(1);
|
||||
QFileInfo fileInfo(normalPath.toLower());
|
||||
// qDebug()<<"removing"<<normalPath;
|
||||
DEBUG() << "removing" << normalPath;
|
||||
QString absolutePath = fileInfo.absoluteFilePath();
|
||||
QList<QWindowsFileSystemWatcherEngineThread *>::iterator jt, end;
|
||||
end = threads.end();
|
||||
@ -250,7 +257,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
|
||||
directories->removeAll(path);
|
||||
|
||||
if (h.isEmpty()) {
|
||||
// qDebug() << "Closing handle" << handle.handle;
|
||||
DEBUG() << "Closing handle" << handle.handle;
|
||||
FindCloseChangeNotification(handle.handle); // This one might generate a notification
|
||||
|
||||
int indexOfHandle = thread->handles.indexOf(handle.handle);
|
||||
@ -263,7 +270,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
|
||||
it.remove();
|
||||
|
||||
if (thread->handleForDir.isEmpty()) {
|
||||
// qDebug()<<"Stopping thread "<<thread;
|
||||
DEBUG() << "Stopping thread " << thread;
|
||||
locker.unlock();
|
||||
thread->stop();
|
||||
thread->wait();
|
||||
@ -336,7 +343,7 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
forever {
|
||||
QVector<HANDLE> handlesCopy = handles;
|
||||
locker.unlock();
|
||||
// qDebug() << "QWindowsFileSystemWatcherThread"<<this<<"waiting on" << handlesCopy.count() << "handles";
|
||||
DEBUG() << "QWindowsFileSystemWatcherThread" << this << "waiting on" << handlesCopy.count() << "handles";
|
||||
DWORD r = WaitForMultipleObjects(handlesCopy.count(), handlesCopy.constData(), false, INFINITE);
|
||||
locker.relock();
|
||||
do {
|
||||
@ -344,12 +351,11 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
int m = msg;
|
||||
msg = 0;
|
||||
if (m == 'q') {
|
||||
// qDebug() << "thread"<<this<<"told to quit";
|
||||
DEBUG() << "thread" << this << "told to quit";
|
||||
return;
|
||||
}
|
||||
if (m != '@') {
|
||||
qDebug("QWindowsFileSystemWatcherEngine: unknown message '%c' send to thread", char(m));
|
||||
}
|
||||
if (m != '@')
|
||||
DEBUG() << "QWindowsFileSystemWatcherEngine: unknown message sent to thread: " << char(m);
|
||||
break;
|
||||
} else if (r > WAIT_OBJECT_0 && r < WAIT_OBJECT_0 + uint(handlesCopy.count())) {
|
||||
int at = r - WAIT_OBJECT_0;
|
||||
@ -359,10 +365,20 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
// When removing a path, FindCloseChangeNotification might actually fire a notification
|
||||
// for some reason, so we must check if the handle exist in the handles vector
|
||||
if (handles.contains(handle)) {
|
||||
// qDebug()<<"thread"<<this<<"Acknowledged handle:"<<at<<handle;
|
||||
DEBUG() << "thread" << this << "Acknowledged handle:" << at << handle;
|
||||
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> &h = pathInfoForHandle[handle];
|
||||
bool fakeRemove = false;
|
||||
|
||||
if (!FindNextChangeNotification(handle)) {
|
||||
const DWORD error = GetLastError();
|
||||
|
||||
if (error == ERROR_ACCESS_DENIED) {
|
||||
// for directories, our object's handle appears to be woken up when the target of a
|
||||
// watch is deleted, before the watched thing is actually deleted...
|
||||
// anyway.. we're given an error code of ERROR_ACCESS_DENIED in that case.
|
||||
fakeRemove = true;
|
||||
}
|
||||
|
||||
qErrnoWarning(error, "%s", qPrintable(msgFindNextFailed(h)));
|
||||
}
|
||||
QMutableHashIterator<QString, QWindowsFileSystemWatcherEngine::PathInfo> it(h);
|
||||
@ -370,9 +386,12 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo>::iterator x = it.next();
|
||||
QString absolutePath = x.value().absolutePath;
|
||||
QFileInfo fileInfo(x.value().path);
|
||||
// qDebug() << "checking" << x.key();
|
||||
if (!fileInfo.exists()) {
|
||||
// qDebug() << x.key() << "removed!";
|
||||
DEBUG() << "checking" << x.key();
|
||||
|
||||
// i'm not completely sure the fileInfo.exist() check will ever work... see QTBUG-2331
|
||||
// ..however, I'm not completely sure enough to remove it.
|
||||
if (fakeRemove || !fileInfo.exists()) {
|
||||
DEBUG() << x.key() << "removed!";
|
||||
if (x.value().isDir)
|
||||
emit directoryChanged(x.value().path, true);
|
||||
else
|
||||
@ -381,7 +400,7 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
|
||||
// close the notification handle if the directory has been removed
|
||||
if (h.isEmpty()) {
|
||||
// qDebug() << "Thread closing handle" << handle;
|
||||
DEBUG() << "Thread closing handle" << handle;
|
||||
FindCloseChangeNotification(handle); // This one might generate a notification
|
||||
|
||||
int indexOfHandle = handles.indexOf(handle);
|
||||
@ -392,11 +411,11 @@ void QWindowsFileSystemWatcherEngineThread::run()
|
||||
// h is now invalid
|
||||
}
|
||||
} else if (x.value().isDir) {
|
||||
// qDebug() << x.key() << "directory changed!";
|
||||
DEBUG() << x.key() << "directory changed!";
|
||||
emit directoryChanged(x.value().path, false);
|
||||
x.value() = fileInfo;
|
||||
} else if (x.value() != fileInfo) {
|
||||
// qDebug() << x.key() << "file changed!";
|
||||
DEBUG() << x.key() << "file changed!";
|
||||
emit fileChanged(x.value().path, false);
|
||||
x.value() = fileInfo;
|
||||
}
|
||||
|
@ -267,6 +267,48 @@ QString QStandardPaths::findExecutable(const QString &executableName, const QStr
|
||||
an empty QString if no relevant location can be found.
|
||||
*/
|
||||
|
||||
#ifndef Q_OS_MAC
|
||||
QString QStandardPaths::displayName(StandardLocation type)
|
||||
{
|
||||
switch (type) {
|
||||
case DesktopLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Desktop");
|
||||
case DocumentsLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Documents");
|
||||
case FontsLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Fonts");
|
||||
case ApplicationsLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Applications");
|
||||
case MusicLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Music");
|
||||
case MoviesLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Movies");
|
||||
case PicturesLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Pictures");
|
||||
case TempLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Temporary Directory");
|
||||
case HomeLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Home");
|
||||
case DataLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Application Data");
|
||||
case CacheLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Cache");
|
||||
case GenericDataLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Shared Data");
|
||||
case RuntimeLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Runtime");
|
||||
case ConfigLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Configuration");
|
||||
case GenericCacheLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Shared Cache");
|
||||
case DownloadLocation:
|
||||
return QCoreApplication::translate("QStandardPaths", "Download");
|
||||
}
|
||||
// not reached
|
||||
return QString();
|
||||
}
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_STANDARDPATHS
|
||||
|
@ -173,12 +173,6 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
|
||||
return dirs;
|
||||
}
|
||||
|
||||
QString QStandardPaths::displayName(StandardLocation type)
|
||||
{
|
||||
Q_UNUSED(type);
|
||||
return QString();
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_STANDARDPATHS
|
||||
|
@ -53,6 +53,16 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static void appendOrganizationAndApp(QString &path)
|
||||
{
|
||||
const QString org = QCoreApplication::organizationName();
|
||||
if (!org.isEmpty())
|
||||
path += QLatin1Char('/') + org;
|
||||
const QString appName = QCoreApplication::applicationName();
|
||||
if (!appName.isEmpty())
|
||||
path += QLatin1Char('/') + appName;
|
||||
}
|
||||
|
||||
QString QStandardPaths::writableLocation(StandardLocation type)
|
||||
{
|
||||
switch (type) {
|
||||
@ -67,12 +77,8 @@ QString QStandardPaths::writableLocation(StandardLocation type)
|
||||
QString xdgCacheHome = QFile::decodeName(qgetenv("XDG_CACHE_HOME"));
|
||||
if (xdgCacheHome.isEmpty())
|
||||
xdgCacheHome = QDir::homePath() + QLatin1String("/.cache");
|
||||
if (type == QStandardPaths::CacheLocation) {
|
||||
if (!QCoreApplication::organizationName().isEmpty())
|
||||
xdgCacheHome += QLatin1Char('/') + QCoreApplication::organizationName();
|
||||
if (!QCoreApplication::applicationName().isEmpty())
|
||||
xdgCacheHome += QLatin1Char('/') + QCoreApplication::applicationName();
|
||||
}
|
||||
if (type == QStandardPaths::CacheLocation)
|
||||
appendOrganizationAndApp(xdgCacheHome);
|
||||
return xdgCacheHome;
|
||||
}
|
||||
case DataLocation:
|
||||
@ -81,12 +87,8 @@ QString QStandardPaths::writableLocation(StandardLocation type)
|
||||
QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
|
||||
if (xdgDataHome.isEmpty())
|
||||
xdgDataHome = QDir::homePath() + QLatin1String("/.local/share");
|
||||
if (type == QStandardPaths::DataLocation) {
|
||||
if (!QCoreApplication::organizationName().isEmpty())
|
||||
xdgDataHome += QLatin1Char('/') + QCoreApplication::organizationName();
|
||||
if (!QCoreApplication::applicationName().isEmpty())
|
||||
xdgDataHome += QLatin1Char('/') + QCoreApplication::applicationName();
|
||||
}
|
||||
if (type == QStandardPaths::DataLocation)
|
||||
appendOrganizationAndApp(xdgDataHome);
|
||||
return xdgDataHome;
|
||||
}
|
||||
case ConfigLocation:
|
||||
@ -229,36 +231,55 @@ QString QStandardPaths::writableLocation(StandardLocation type)
|
||||
return path;
|
||||
}
|
||||
|
||||
static QStringList xdgDataDirs()
|
||||
{
|
||||
QStringList dirs;
|
||||
// http://standards.freedesktop.org/basedir-spec/latest/
|
||||
QString xdgDataDirsEnv = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
|
||||
if (xdgDataDirsEnv.isEmpty()) {
|
||||
dirs.append(QString::fromLatin1("/usr/local/share"));
|
||||
dirs.append(QString::fromLatin1("/usr/share"));
|
||||
} else {
|
||||
dirs = xdgDataDirsEnv.split(QLatin1Char(':'));
|
||||
}
|
||||
return dirs;
|
||||
}
|
||||
|
||||
QStringList QStandardPaths::standardLocations(StandardLocation type)
|
||||
{
|
||||
QStringList dirs;
|
||||
if (type == ConfigLocation) {
|
||||
switch (type) {
|
||||
case ConfigLocation:
|
||||
{
|
||||
// http://standards.freedesktop.org/basedir-spec/latest/
|
||||
QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS"));
|
||||
const QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS"));
|
||||
if (xdgConfigDirs.isEmpty())
|
||||
dirs.append(QString::fromLatin1("/etc/xdg"));
|
||||
else
|
||||
dirs = xdgConfigDirs.split(QLatin1Char(':'));
|
||||
} else if (type == GenericDataLocation) {
|
||||
// http://standards.freedesktop.org/basedir-spec/latest/
|
||||
QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
|
||||
if (xdgConfigDirs.isEmpty()) {
|
||||
dirs.append(QString::fromLatin1("/usr/local/share"));
|
||||
dirs.append(QString::fromLatin1("/usr/share"));
|
||||
} else
|
||||
dirs = xdgConfigDirs.split(QLatin1Char(':'));
|
||||
}
|
||||
break;
|
||||
case GenericDataLocation:
|
||||
dirs = xdgDataDirs();
|
||||
break;
|
||||
case ApplicationsLocation:
|
||||
dirs = xdgDataDirs();
|
||||
for (int i = 0; i < dirs.count(); ++i)
|
||||
dirs[i].append(QLatin1String("/applications"));
|
||||
break;
|
||||
case DataLocation:
|
||||
dirs = xdgDataDirs();
|
||||
for (int i = 0; i < dirs.count(); ++i)
|
||||
appendOrganizationAndApp(dirs[i]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const QString localDir = writableLocation(type);
|
||||
dirs.prepend(localDir);
|
||||
return dirs;
|
||||
}
|
||||
|
||||
QString QStandardPaths::displayName(StandardLocation type)
|
||||
{
|
||||
Q_UNUSED(type);
|
||||
return QString();
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_STANDARDPATHS
|
||||
|
@ -206,12 +206,6 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
|
||||
return dirs;
|
||||
}
|
||||
|
||||
QString QStandardPaths::displayName(StandardLocation type)
|
||||
{
|
||||
Q_UNUSED(type);
|
||||
return QString();
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_STANDARDPATHS
|
||||
|
@ -241,14 +241,6 @@ bool Entry::operator ==(const QString &key) const
|
||||
return (shallowKey() == key);
|
||||
}
|
||||
|
||||
bool Entry::operator >=(const QString &key) const
|
||||
{
|
||||
if (value.latinKey)
|
||||
return (shallowLatin1Key() >= key);
|
||||
else
|
||||
return (shallowKey() >= key);
|
||||
}
|
||||
|
||||
bool Entry::operator ==(const Entry &other) const
|
||||
{
|
||||
if (value.latinKey) {
|
||||
|
@ -620,15 +620,24 @@ public:
|
||||
|
||||
bool operator ==(const QString &key) const;
|
||||
inline bool operator !=(const QString &key) const { return !operator ==(key); }
|
||||
bool operator >=(const QString &key) const;
|
||||
inline bool operator >=(const QString &key) const;
|
||||
|
||||
bool operator ==(const Entry &other) const;
|
||||
bool operator >=(const Entry &other) const;
|
||||
};
|
||||
|
||||
inline bool Entry::operator >=(const QString &key) const
|
||||
{
|
||||
if (value.latinKey)
|
||||
return (shallowLatin1Key() >= key);
|
||||
else
|
||||
return (shallowKey() >= key);
|
||||
}
|
||||
|
||||
inline bool operator <(const QString &key, const Entry &e)
|
||||
{ return e >= key; }
|
||||
|
||||
|
||||
class Header {
|
||||
public:
|
||||
qle_uint tag; // 'qbjs'
|
||||
@ -735,7 +744,15 @@ public:
|
||||
|
||||
Data *clone(Base *b, int reserve = 0)
|
||||
{
|
||||
int size = sizeof(Header) + b->size + reserve;
|
||||
int size = sizeof(Header) + b->size;
|
||||
if (ref.load() == 1 && alloc >= size + reserve)
|
||||
return this;
|
||||
|
||||
if (reserve) {
|
||||
if (reserve < 128)
|
||||
reserve = 128;
|
||||
size = qMax(size + reserve, size *2);
|
||||
}
|
||||
char *raw = (char *)malloc(size);
|
||||
Q_CHECK_PTR(raw);
|
||||
memcpy(raw + sizeof(Header), b, b->size);
|
||||
|
@ -75,6 +75,7 @@ public:
|
||||
KeyRelease = 7, // key released
|
||||
FocusIn = 8, // keyboard focus received
|
||||
FocusOut = 9, // keyboard focus lost
|
||||
FocusAboutToChange = 23, // keyboard focus is about to be lost
|
||||
Enter = 10, // mouse enters widget
|
||||
Leave = 11, // mouse leaves widget
|
||||
Paint = 12, // paint widget
|
||||
|
@ -4091,6 +4091,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
|
||||
{
|
||||
if (!sender || !signal || !slotObj || !senderMetaObject) {
|
||||
qWarning("QObject::connect: invalid null parametter");
|
||||
if (slotObj && !slotObj->ref.deref())
|
||||
delete slotObj;
|
||||
return QMetaObject::Connection();
|
||||
}
|
||||
int signal_index = -1;
|
||||
@ -4098,6 +4100,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
|
||||
senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args);
|
||||
if (signal_index < 0 || signal_index >= QMetaObjectPrivate::get(senderMetaObject)->signalCount) {
|
||||
qWarning("QObject::connect: signal not found in %s", senderMetaObject->className());
|
||||
if (!slotObj->ref.deref())
|
||||
delete slotObj;
|
||||
return QMetaObject::Connection(0);
|
||||
}
|
||||
int signalOffset, methodOffset;
|
||||
@ -4117,8 +4121,11 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
|
||||
(*connectionLists)[signal_index].first;
|
||||
|
||||
while (c2) {
|
||||
if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot))
|
||||
if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot)) {
|
||||
if (!slotObj->ref.deref())
|
||||
delete slotObj;
|
||||
return QMetaObject::Connection();
|
||||
}
|
||||
c2 = c2->nextConnectionList;
|
||||
}
|
||||
}
|
||||
|
@ -282,7 +282,8 @@ QString QMimeType::comment() const
|
||||
QStringList languageList;
|
||||
languageList << QLocale::system().name();
|
||||
languageList << QLocale::system().uiLanguages();
|
||||
Q_FOREACH (const QString &lang, languageList) {
|
||||
Q_FOREACH (const QString &language, languageList) {
|
||||
const QString lang = language == QLatin1String("C") ? QLatin1String("en_US") : language;
|
||||
const QString comm = d->localeComments.value(lang);
|
||||
if (!comm.isEmpty())
|
||||
return comm;
|
||||
|
@ -46,13 +46,6 @@
|
||||
|
||||
#include "qglobal.h"
|
||||
|
||||
#ifndef QT_NO_SYSTEMLOCALE
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QSystemLocale;
|
||||
static QSystemLocale *QSystemLocale_globalSystemLocale();
|
||||
QT_END_NAMESPACE
|
||||
#endif
|
||||
|
||||
#include "qplatformdefs.h"
|
||||
|
||||
#include "qdatastream.h"
|
||||
@ -78,7 +71,13 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
#ifndef QT_NO_SYSTEMLOCALE
|
||||
static QSystemLocale *_systemLocale = 0;
|
||||
Q_GLOBAL_STATIC_WITH_ARGS(QSystemLocale, QSystemLocale_globalSystemLocale, (true))
|
||||
class QSystemLocaleSingleton: public QSystemLocale
|
||||
{
|
||||
public:
|
||||
QSystemLocaleSingleton() : QSystemLocale(true) {}
|
||||
};
|
||||
|
||||
Q_GLOBAL_STATIC(QSystemLocaleSingleton, QSystemLocale_globalSystemLocale)
|
||||
static QLocalePrivate *system_lp = 0;
|
||||
Q_GLOBAL_STATIC(QLocalePrivate, globalLocalePrivate)
|
||||
#endif
|
||||
|
@ -122,7 +122,7 @@ public:
|
||||
|
||||
private:
|
||||
QSystemLocale(bool);
|
||||
friend QSystemLocale *QSystemLocale_globalSystemLocale();
|
||||
friend class QSystemLocaleSingleton;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "qdatetime.h"
|
||||
#include "qstringlist.h"
|
||||
#include "qvariant.h"
|
||||
#include "qreadwritelock.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -57,29 +58,13 @@ struct QSystemLocaleData
|
||||
,lc_monetary(QLocale::C)
|
||||
,lc_messages(QLocale::C)
|
||||
{
|
||||
QByteArray all = qgetenv("LC_ALL");
|
||||
QByteArray numeric = all.isEmpty() ? qgetenv("LC_NUMERIC") : all;
|
||||
QByteArray time = all.isEmpty() ? qgetenv("LC_TIME") : all;
|
||||
QByteArray monetary = all.isEmpty() ? qgetenv("LC_MONETARY") : all;
|
||||
lc_messages_var = all.isEmpty() ? qgetenv("LC_MESSAGES") : all;
|
||||
lc_measurement_var = all.isEmpty() ? qgetenv("LC_MEASUREMENT") : all;
|
||||
QByteArray lang = qgetenv("LANG");
|
||||
if (lang.isEmpty())
|
||||
lang = QByteArray("C");
|
||||
if (numeric.isEmpty())
|
||||
numeric = lang;
|
||||
if (monetary.isEmpty())
|
||||
monetary = lang;
|
||||
if (lc_messages_var.isEmpty())
|
||||
lc_messages_var = lang;
|
||||
if (lc_measurement_var.isEmpty())
|
||||
lc_measurement_var = lang;
|
||||
lc_numeric = QLocale(QString::fromLatin1(numeric));
|
||||
lc_time = QLocale(QString::fromLatin1(time));
|
||||
lc_monetary = QLocale(QString::fromLatin1(monetary));
|
||||
lc_messages = QLocale(QString::fromLatin1(lc_messages_var));
|
||||
readEnvironment();
|
||||
}
|
||||
|
||||
void readEnvironment();
|
||||
|
||||
QReadWriteLock lock;
|
||||
|
||||
QLocale lc_numeric;
|
||||
QLocale lc_time;
|
||||
QLocale lc_monetary;
|
||||
@ -87,10 +72,43 @@ struct QSystemLocaleData
|
||||
QByteArray lc_messages_var;
|
||||
QByteArray lc_measurement_var;
|
||||
};
|
||||
|
||||
void QSystemLocaleData::readEnvironment()
|
||||
{
|
||||
QWriteLocker locker(&lock);
|
||||
|
||||
QByteArray all = qgetenv("LC_ALL");
|
||||
QByteArray numeric = all.isEmpty() ? qgetenv("LC_NUMERIC") : all;
|
||||
QByteArray time = all.isEmpty() ? qgetenv("LC_TIME") : all;
|
||||
QByteArray monetary = all.isEmpty() ? qgetenv("LC_MONETARY") : all;
|
||||
lc_messages_var = all.isEmpty() ? qgetenv("LC_MESSAGES") : all;
|
||||
lc_measurement_var = all.isEmpty() ? qgetenv("LC_MEASUREMENT") : all;
|
||||
QByteArray lang = qgetenv("LANG");
|
||||
if (lang.isEmpty())
|
||||
lang = QByteArray("C");
|
||||
if (numeric.isEmpty())
|
||||
numeric = lang;
|
||||
if (time.isEmpty())
|
||||
time = lang;
|
||||
if (monetary.isEmpty())
|
||||
monetary = lang;
|
||||
if (lc_messages_var.isEmpty())
|
||||
lc_messages_var = lang;
|
||||
if (lc_measurement_var.isEmpty())
|
||||
lc_measurement_var = lang;
|
||||
lc_numeric = QLocale(QString::fromLatin1(numeric));
|
||||
lc_time = QLocale(QString::fromLatin1(time));
|
||||
lc_monetary = QLocale(QString::fromLatin1(monetary));
|
||||
lc_messages = QLocale(QString::fromLatin1(lc_messages_var));
|
||||
}
|
||||
|
||||
|
||||
Q_GLOBAL_STATIC(QSystemLocaleData, qSystemLocaleData)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_SYSTEMLOCALE
|
||||
|
||||
QLocale QSystemLocale::fallbackLocale() const
|
||||
{
|
||||
QByteArray lang = qgetenv("LC_ALL");
|
||||
@ -104,6 +122,14 @@ QLocale QSystemLocale::fallbackLocale() const
|
||||
QVariant QSystemLocale::query(QueryType type, QVariant in) const
|
||||
{
|
||||
QSystemLocaleData *d = qSystemLocaleData();
|
||||
|
||||
if (type == LocaleChanged) {
|
||||
d->readEnvironment();
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QReadLocker locker(&d->lock);
|
||||
|
||||
const QLocale &lc_numeric = d->lc_numeric;
|
||||
const QLocale &lc_time = d->lc_time;
|
||||
const QLocale &lc_monetary = d->lc_monetary;
|
||||
@ -216,6 +242,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
|
||||
return lc_messages.quoteString(in.value<QStringRef>(), QLocale::AlternateQuotation);
|
||||
case ListToSeparatedString:
|
||||
return lc_messages.createSeparatedList(in.value<QStringList>());
|
||||
case LocaleChanged:
|
||||
Q_ASSERT(false);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -320,12 +320,6 @@ static inline uint detectProcessorFeatures()
|
||||
return features;
|
||||
}
|
||||
|
||||
#elif defined(__ia64__)
|
||||
static inline uint detectProcessorFeatures()
|
||||
{
|
||||
return MMX|SSE|SSE2;
|
||||
}
|
||||
|
||||
#else
|
||||
static inline uint detectProcessorFeatures()
|
||||
{
|
||||
|
@ -122,11 +122,11 @@ static inline int qt_find_latin1_string(const QChar *hay, int size, const QLatin
|
||||
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
|
||||
const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
|
||||
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
|
||||
const QLatin1String &needle, Qt::CaseSensitivity cs);
|
||||
QLatin1String needle, Qt::CaseSensitivity cs);
|
||||
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
|
||||
const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
|
||||
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
|
||||
const QLatin1String &needle, Qt::CaseSensitivity cs);
|
||||
QLatin1String needle, Qt::CaseSensitivity cs);
|
||||
|
||||
// Unicode case-insensitive comparison
|
||||
static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const ushort *be)
|
||||
@ -2753,7 +2753,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity
|
||||
int QString::lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
|
||||
{
|
||||
return qt_last_index_of(unicode(), size(), ch, from, cs);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 4.8
|
||||
@ -8988,7 +8988,7 @@ static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
|
||||
}
|
||||
|
||||
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
|
||||
const QLatin1String &needle, Qt::CaseSensitivity cs)
|
||||
QLatin1String needle, Qt::CaseSensitivity cs)
|
||||
{
|
||||
if (!haystack)
|
||||
return !needle.latin1();
|
||||
@ -9039,7 +9039,7 @@ static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
|
||||
|
||||
|
||||
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
|
||||
const QLatin1String &needle, Qt::CaseSensitivity cs)
|
||||
QLatin1String needle, Qt::CaseSensitivity cs)
|
||||
{
|
||||
if (!haystack)
|
||||
return !needle.latin1();
|
||||
|
@ -29,6 +29,7 @@ HEADERS += \
|
||||
tools/qmargins.h \
|
||||
tools/qcontiguouscache.h \
|
||||
tools/qpodlist_p.h \
|
||||
tools/qpair.h \
|
||||
tools/qpoint.h \
|
||||
tools/qqueue.h \
|
||||
tools/qrect.h \
|
||||
|
@ -124,19 +124,23 @@ void QDBusMarshaller::append(const QString &arg)
|
||||
inline void QDBusMarshaller::append(const QDBusObjectPath &arg)
|
||||
{
|
||||
QByteArray data = arg.path().toUtf8();
|
||||
if (!ba && data.isEmpty())
|
||||
if (!ba && data.isEmpty()) {
|
||||
error(QLatin1String("Invalid object path passed in arguments"));
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
|
||||
} else {
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
|
||||
}
|
||||
}
|
||||
|
||||
inline void QDBusMarshaller::append(const QDBusSignature &arg)
|
||||
{
|
||||
QByteArray data = arg.signature().toUtf8();
|
||||
if (!ba && data.isEmpty())
|
||||
if (!ba && data.isEmpty()) {
|
||||
error(QLatin1String("Invalid signature passed in arguments"));
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
|
||||
} else {
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
|
||||
}
|
||||
}
|
||||
|
||||
inline void QDBusMarshaller::append(const QDBusUnixFileDescriptor &arg)
|
||||
|
@ -268,16 +268,16 @@ QT_BEGIN_NAMESPACE
|
||||
row's header, has been changed.
|
||||
\value TableRowHeaderChanged A table row header has been changed.
|
||||
\value TableSummaryChanged The summary of a table has been changed.
|
||||
\value TextAttributeChanged
|
||||
\value TextCaretMoved The caret has moved in an editable widget.
|
||||
\omitvalue TextAttributeChanged
|
||||
\omitvalue TextCaretMoved The caret has moved in an editable widget.
|
||||
The caret represents the cursor position in an editable
|
||||
widget with the input focus.
|
||||
\value TextColumnChanged A text column has been changed.
|
||||
\value TextInserted Text has been inserted into an editable widget.
|
||||
\value TextRemoved Text has been removed from an editable widget.
|
||||
\value TextSelectionChanged The selected text has changed in an editable widget.
|
||||
\value TextUpdated The text has been update in an editable widget.
|
||||
\value ValueChanged The QAccessible::Value of an object has changed.
|
||||
\omitvalue TextInserted Text has been inserted into an editable widget.
|
||||
\omitvalue TextRemoved Text has been removed from an editable widget.
|
||||
\omitvalue TextSelectionChanged The selected text has changed in an editable widget.
|
||||
\omitvalue TextUpdated The text has been update in an editable widget.
|
||||
\omitvalue ValueChanged The QAccessible::Value of an object has changed.
|
||||
\value VisibleDataChanged
|
||||
|
||||
The values for this enum are defined to be the same as those defined in the
|
||||
@ -648,7 +648,8 @@ void QAccessible::setRootObject(QObject *object)
|
||||
void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
|
||||
{
|
||||
Q_ASSERT(object);
|
||||
QAccessibleEvent ev(reason, object, child);
|
||||
|
||||
QAccessibleEvent ev(object, reason);
|
||||
updateAccessibility(&ev);
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,9 @@ public:
|
||||
ParentChanged = 0x800F,
|
||||
HelpChanged = 0x80A0,
|
||||
DefaultActionChanged = 0x80B0,
|
||||
AcceleratorChanged = 0x80C0
|
||||
AcceleratorChanged = 0x80C0,
|
||||
|
||||
InvalidEvent
|
||||
};
|
||||
|
||||
// 64 bit enums seem hard on some platforms (windows...)
|
||||
@ -432,10 +434,19 @@ class Q_GUI_EXPORT QAccessibleEvent
|
||||
{
|
||||
Q_DISABLE_COPY(QAccessibleEvent)
|
||||
public:
|
||||
inline QAccessibleEvent(QAccessible::Event typ, QObject *obj, int chld = -1)
|
||||
: m_type(typ), m_object(obj), m_child(chld)
|
||||
inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
|
||||
: m_type(typ), m_object(obj), m_child(-1)
|
||||
{
|
||||
Q_ASSERT(obj);
|
||||
// All events below have a subclass of QAccessibleEvent.
|
||||
// Use the subclass, since it's expected that it's possible to cast to that.
|
||||
Q_ASSERT(m_type != QAccessible::ValueChanged);
|
||||
Q_ASSERT(m_type != QAccessible::StateChanged);
|
||||
Q_ASSERT(m_type != QAccessible::TextCaretMoved);
|
||||
Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
|
||||
Q_ASSERT(m_type != QAccessible::TextInserted);
|
||||
Q_ASSERT(m_type != QAccessible::TextRemoved);
|
||||
Q_ASSERT(m_type != QAccessible::TextUpdated);
|
||||
}
|
||||
|
||||
virtual ~QAccessibleEvent()
|
||||
@ -443,12 +454,13 @@ public:
|
||||
|
||||
QAccessible::Event type() const { return m_type; }
|
||||
QObject *object() const { return m_object; }
|
||||
|
||||
void setChild(int chld) { m_child = chld; }
|
||||
int child() const { return m_child; }
|
||||
|
||||
QAccessibleInterface *accessibleInterface() const;
|
||||
|
||||
protected:
|
||||
|
||||
QAccessible::Event m_type;
|
||||
QObject *m_object;
|
||||
int m_child;
|
||||
@ -457,9 +469,11 @@ protected:
|
||||
class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleStateChangeEvent(QAccessible::State state, QObject *obj, int chld = -1)
|
||||
: QAccessibleEvent(QAccessible::StateChanged, obj, chld), m_changedStates(state)
|
||||
{}
|
||||
inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
|
||||
: QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
|
||||
{
|
||||
m_type = QAccessible::StateChanged;
|
||||
}
|
||||
|
||||
QAccessible::State changedStates() const {
|
||||
return m_changedStates;
|
||||
@ -469,6 +483,133 @@ protected:
|
||||
QAccessible::State m_changedStates;
|
||||
};
|
||||
|
||||
// Update the cursor and optionally the selection.
|
||||
class Q_GUI_EXPORT QAccessibleTextCursorEvent : public QAccessibleEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleTextCursorEvent(QObject *obj, int cursorPos)
|
||||
: QAccessibleEvent(obj, QAccessible::InvalidEvent)
|
||||
, m_cursorPosition(cursorPos)
|
||||
{
|
||||
m_type = QAccessible::TextCaretMoved;
|
||||
}
|
||||
|
||||
void setCursorPosition(int position) { m_cursorPosition = position; }
|
||||
int cursorPosition() const { return m_cursorPosition; }
|
||||
|
||||
protected:
|
||||
int m_cursorPosition;
|
||||
};
|
||||
|
||||
// Updates the cursor position simultaneously. By default the cursor is set to the end of the selection.
|
||||
class Q_GUI_EXPORT QAccessibleTextSelectionEvent : public QAccessibleTextCursorEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleTextSelectionEvent(QObject *obj, int start, int end)
|
||||
: QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
|
||||
, m_selectionStart(start), m_selectionEnd(end)
|
||||
{
|
||||
m_type = QAccessible::TextSelectionChanged;
|
||||
}
|
||||
|
||||
void setSelection(int start, int end) {
|
||||
m_selectionStart = start;
|
||||
m_selectionEnd = end;
|
||||
}
|
||||
|
||||
int selectionStart() const { return m_selectionStart; }
|
||||
int selectionEnd() const { return m_selectionEnd; }
|
||||
|
||||
protected:
|
||||
int m_selectionStart;
|
||||
int m_selectionEnd;
|
||||
};
|
||||
|
||||
class Q_GUI_EXPORT QAccessibleTextInsertEvent : public QAccessibleTextCursorEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleTextInsertEvent(QObject *obj, int position, const QString &text)
|
||||
: QAccessibleTextCursorEvent(obj, position + text.length())
|
||||
, m_position(position), m_text(text)
|
||||
{
|
||||
m_type = QAccessible::TextInserted;
|
||||
}
|
||||
|
||||
QString textInserted() const {
|
||||
return m_text;
|
||||
}
|
||||
int changePosition() const {
|
||||
return m_position;
|
||||
}
|
||||
|
||||
protected:
|
||||
int m_position;
|
||||
QString m_text;
|
||||
};
|
||||
|
||||
class Q_GUI_EXPORT QAccessibleTextRemoveEvent : public QAccessibleTextCursorEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleTextRemoveEvent(QObject *obj, int position, const QString &text)
|
||||
: QAccessibleTextCursorEvent(obj, position)
|
||||
, m_position(position), m_text(text)
|
||||
{
|
||||
m_type = QAccessible::TextRemoved;
|
||||
}
|
||||
|
||||
QString textRemoved() const {
|
||||
return m_text;
|
||||
}
|
||||
int changePosition() const {
|
||||
return m_position;
|
||||
}
|
||||
|
||||
protected:
|
||||
int m_position;
|
||||
QString m_text;
|
||||
};
|
||||
|
||||
class Q_GUI_EXPORT QAccessibleTextUpdateEvent : public QAccessibleTextCursorEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleTextUpdateEvent(QObject *obj, int position, const QString &oldText, const QString &text)
|
||||
: QAccessibleTextCursorEvent(obj, position + text.length())
|
||||
, m_position(position), m_oldText(oldText), m_text(text)
|
||||
{
|
||||
m_type = QAccessible::TextUpdated;
|
||||
}
|
||||
QString textRemoved() const {
|
||||
return m_oldText;
|
||||
}
|
||||
QString textInserted() const {
|
||||
return m_text;
|
||||
}
|
||||
int changePosition() const {
|
||||
return m_position;
|
||||
}
|
||||
|
||||
protected:
|
||||
int m_position;
|
||||
QString m_oldText;
|
||||
QString m_text;
|
||||
};
|
||||
|
||||
class Q_GUI_EXPORT QAccessibleValueChangeEvent : public QAccessibleEvent
|
||||
{
|
||||
public:
|
||||
inline QAccessibleValueChangeEvent(QObject *obj, const QVariant &val)
|
||||
: QAccessibleEvent(obj, QAccessible::InvalidEvent)
|
||||
, m_value(val)
|
||||
{
|
||||
m_type = QAccessible::ValueChanged;
|
||||
}
|
||||
|
||||
void setValue(const QVariant & val) { m_value= val; }
|
||||
QVariant value() const { return m_value; }
|
||||
|
||||
protected:
|
||||
QVariant m_value;
|
||||
};
|
||||
|
||||
#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
|
||||
Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
|
||||
|
@ -151,4 +151,24 @@ win32:!contains(QT_CONFIG, directwrite) {
|
||||
sse2: SOURCES += $$SSE2_SOURCES
|
||||
ssse3: SOURCES += $$SSSE3_SOURCES
|
||||
iwmmxt: SOURCES += $$IWMMXT_SOURCES
|
||||
}
|
||||
}
|
||||
|
||||
mips_dsp:*-g++* {
|
||||
DEFINES += QT_HAVE_MIPS_DSP
|
||||
HEADERS += $$MIPS_DSP_HEADERS
|
||||
|
||||
DRAWHELPER_MIPS_DSP_ASM_FILES = $$MIPS_DSP_ASM
|
||||
mips_dspr2 {
|
||||
DEFINES += QT_HAVE_MIPS_DSPR2
|
||||
DRAWHELPER_MIPS_DSP_ASM_FILES += $$MIPS_DSPR2_ASM
|
||||
}
|
||||
mips_dsp_compiler.commands = $$QMAKE_CXX -c
|
||||
mips_dsp_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
|
||||
mips_dsp_compiler.dependency_type = TYPE_C
|
||||
mips_dsp_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
|
||||
mips_dsp_compiler.input = DRAWHELPER_MIPS_DSP_ASM_FILES MIPS_DSP_SOURCES
|
||||
mips_dsp_compiler.variable_out = OBJECTS
|
||||
mips_dsp_compiler.name = compiling[mips_dsp] ${QMAKE_FILE_IN}
|
||||
silent:mips_dsp_compiler.commands = @echo compiling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_compiler.commands
|
||||
QMAKE_EXTRA_COMPILERS += mips_dsp_compiler
|
||||
}
|
||||
|
@ -1698,6 +1698,7 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace
|
||||
|
||||
The tentative commit string is what the preedit string is expected to be committed as.
|
||||
The string can be used within the editor to trigger code that reacts on text changes such as validators.
|
||||
\deprecated
|
||||
*/
|
||||
void QInputMethodEvent::setTentativeCommitString(const QString &tentativeCommitString)
|
||||
{
|
||||
@ -1758,6 +1759,7 @@ void QInputMethodEvent::setTentativeCommitString(const QString &tentativeCommitS
|
||||
|
||||
Returns the text as which preedit string is expected to be committed as.
|
||||
The string can be used within the editor to trigger code that reacts on text changes such as validators.
|
||||
\deprecated
|
||||
|
||||
\sa setTentativeCommitString()
|
||||
*/
|
||||
|
@ -444,7 +444,7 @@ public:
|
||||
QInputMethodEvent();
|
||||
QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes);
|
||||
void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0);
|
||||
void setTentativeCommitString(const QString &tentativeCommitString);
|
||||
QT_DEPRECATED void setTentativeCommitString(const QString &tentativeCommitString);
|
||||
|
||||
inline const QList<Attribute> &attributes() const { return attrs; }
|
||||
inline const QString &preeditString() const { return preedit; }
|
||||
@ -452,7 +452,7 @@ public:
|
||||
inline const QString &commitString() const { return commit; }
|
||||
inline int replacementStart() const { return replace_from; }
|
||||
inline int replacementLength() const { return replace_length; }
|
||||
inline const QString &tentativeCommitString() const { return tentativeCommit; }
|
||||
QT_DEPRECATED inline const QString &tentativeCommitString() const { return tentativeCommit; }
|
||||
|
||||
QInputMethodEvent(const QInputMethodEvent &other);
|
||||
|
||||
|
@ -475,7 +475,6 @@ QWindow *QGuiApplication::topLevelAt(const QPoint &pos)
|
||||
/*!
|
||||
\property QGuiApplication::platformName
|
||||
\brief The name of the underlying platform plugin.
|
||||
\since 5.0
|
||||
*/
|
||||
|
||||
QString QGuiApplication::platformName()
|
||||
@ -503,10 +502,14 @@ static void init_platform(const QString &pluginArgument, const QString &platform
|
||||
const QString defaultPlatform = QLatin1String("cocoa");
|
||||
#elif defined (Q_OS_WIN)
|
||||
const QString defaultPlatform = QLatin1String("windows");
|
||||
#elif defined (Q_OS_QNX)
|
||||
const QString defaultPlatform = QLatin1String("qnx");
|
||||
#elif !defined (QT_NO_XCB)
|
||||
const QString defaultPlatform = QLatin1String("xcb");
|
||||
#elif !defined (QT_NO_WAYLAND)
|
||||
const QString defaultPlatform = QLatin1String("wayland");
|
||||
#elif !defined (QT_NO_EGLFS)
|
||||
const QString defaultPlatform = QLatin1String("eglfs");
|
||||
#else
|
||||
const QString defaultPlatform = QLatin1String("minimal");
|
||||
#endif
|
||||
@ -1143,13 +1146,20 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le
|
||||
void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e)
|
||||
{
|
||||
QWindow *previous = QGuiApplicationPrivate::focus_window;
|
||||
QGuiApplicationPrivate::focus_window = e->activated.data();
|
||||
QWindow *newFocus = e->activated.data();
|
||||
|
||||
if (previous == QGuiApplicationPrivate::focus_window)
|
||||
if (previous == newFocus)
|
||||
return;
|
||||
|
||||
QObject *previousFocusObject = previous ? previous->focusObject() : 0;
|
||||
|
||||
if (previous) {
|
||||
QFocusEvent focusAboutToChange(QEvent::FocusAboutToChange);
|
||||
QCoreApplication::sendSpontaneousEvent(previous, &focusAboutToChange);
|
||||
}
|
||||
|
||||
QGuiApplicationPrivate::focus_window = newFocus;
|
||||
|
||||
if (previous) {
|
||||
QFocusEvent focusOut(QEvent::FocusOut);
|
||||
QCoreApplication::sendSpontaneousEvent(previous, &focusOut);
|
||||
@ -1944,8 +1954,6 @@ void QGuiApplication::restoreOverrideCursor()
|
||||
#endif// QT_NO_CURSOR
|
||||
|
||||
/*!
|
||||
\since 5.0
|
||||
|
||||
Returns the application's style hints.
|
||||
|
||||
The style hints encapsulate a set of platform dependent properties
|
||||
@ -1999,8 +2007,6 @@ QInputMethod *QGuiApplication::inputMethod() const
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 5.0
|
||||
|
||||
returns the input panel.
|
||||
|
||||
The input panel returns properties about the state and position of
|
||||
@ -2015,7 +2021,6 @@ QInputPanel *QGuiApplication::inputPanel() const
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 4.5
|
||||
\fn void QGuiApplication::fontDatabaseChanged()
|
||||
|
||||
This signal is emitted when application fonts are loaded or removed.
|
||||
|
@ -215,7 +215,7 @@ void QInputMethod::hide()
|
||||
|
||||
\sa show(), hide()
|
||||
*/
|
||||
bool QInputMethod::visible() const
|
||||
bool QInputMethod::isVisible() const
|
||||
{
|
||||
Q_D(const QInputMethod);
|
||||
QPlatformInputContext *ic = d->platformInputContext();
|
||||
|
@ -62,7 +62,7 @@ class Q_GUI_EXPORT QInputMethod : public QObject
|
||||
Q_PROPERTY(QObject *inputItem READ inputItem WRITE setInputItem NOTIFY inputItemChanged)
|
||||
Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged)
|
||||
Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged)
|
||||
Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
|
||||
Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
|
||||
Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged)
|
||||
Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
|
||||
Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged)
|
||||
@ -89,7 +89,11 @@ public:
|
||||
ContextMenu
|
||||
};
|
||||
|
||||
bool visible() const;
|
||||
#if QT_DEPRECATED_SINCE(5,0)
|
||||
QT_DEPRECATED bool visible() const { return isVisible(); }
|
||||
#endif
|
||||
|
||||
bool isVisible() const;
|
||||
void setVisible(bool visible);
|
||||
|
||||
bool isAnimating() const;
|
||||
|
@ -524,6 +524,7 @@ QPalette::QPalette()
|
||||
} else {
|
||||
init();
|
||||
qt_palette_from_color(*this, Qt::black);
|
||||
resolve_mask = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -578,7 +578,6 @@ void QScreenPrivate::updatePrimaryOrientation()
|
||||
|
||||
\warning In general, grabbing an area outside the screen is not
|
||||
safe. This depends on the underlying window system.
|
||||
\since 5.0
|
||||
*/
|
||||
|
||||
QPixmap QScreen::grabWindow(WId window, int x, int y, int w, int h) const
|
||||
|
@ -224,7 +224,6 @@ QWindow::SurfaceType QWindow::surfaceType() const
|
||||
/*!
|
||||
\property QWindow::visible
|
||||
\brief whether the window is visible or not
|
||||
\since 5.0
|
||||
|
||||
This property controls the visibility of the window in the windowing system.
|
||||
|
||||
@ -496,7 +495,6 @@ Qt::WindowType QWindow::windowType() const
|
||||
/*!
|
||||
\property QWindow::windowTitle
|
||||
\brief the window's title in the windowing system
|
||||
\since 5.0
|
||||
|
||||
The window title might appear in the title area of the window decorations,
|
||||
depending on the windowing system and the window flags. It might also
|
||||
@ -625,7 +623,6 @@ bool QWindow::isActive() const
|
||||
|
||||
/*!
|
||||
\property QWindow::contentOrientation
|
||||
\since 5.0
|
||||
\brief the orientation of the window's contents
|
||||
|
||||
This is a hint to the window manager in case it needs to display
|
||||
@ -945,25 +942,21 @@ void QWindow::setGeometry(const QRect &rect)
|
||||
|
||||
/*!
|
||||
\property QWindow::x
|
||||
\since 5.0
|
||||
\brief the x position of the window's geometry
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property QWindow::y
|
||||
\since 5.0
|
||||
\brief the y position of the window's geometry
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property QWindow::width
|
||||
\since 5.0
|
||||
\brief the width of the window's geometry
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property QWindow::height
|
||||
\since 5.0
|
||||
\brief the height of the window's geometry
|
||||
*/
|
||||
|
||||
|
@ -226,7 +226,7 @@ void QWindowSystemInterface::handleWheelEvent(QWindow *w, const QPointF & local,
|
||||
void QWindowSystemInterface::handleWheelEvent(QWindow *tlw, ulong timestamp, const QPointF & local, const QPointF & global, int d, Qt::Orientation o, Qt::KeyboardModifiers mods)
|
||||
{
|
||||
QPoint point = (o == Qt::Vertical) ? QPoint(0, d) : QPoint(d, 0);
|
||||
handleWheelEvent(tlw, timestamp, local, global, point, point, mods);
|
||||
handleWheelEvent(tlw, timestamp, local, global, QPoint(), point, mods);
|
||||
}
|
||||
|
||||
void QWindowSystemInterface::handleWheelEvent(QWindow *w, const QPointF & local, const QPointF & global, QPoint pixelDelta, QPoint angleDelta, Qt::KeyboardModifiers mods)
|
||||
|
@ -109,4 +109,9 @@ NEON_SOURCES += painting/qdrawhelper_neon.cpp
|
||||
NEON_HEADERS += painting/qdrawhelper_neon_p.h
|
||||
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S
|
||||
|
||||
MIPS_DSP_SOURCES += painting/qdrawhelper_mips_dsp.cpp
|
||||
MIPS_DSP_HEADERS += painting/qdrawhelper_mips_dsp_p.h painting/qt_mips_asm_dsp.h
|
||||
MIPS_DSP_ASM += painting/qdrawhelper_mips_dsp_asm.S
|
||||
MIPS_DSPR2_ASM += painting/qdrawhelper_mips_dspr2_asm.S
|
||||
|
||||
include($$PWD/../../3rdparty/zlib_dependency.pri)
|
||||
|
@ -47,6 +47,9 @@
|
||||
#include <private/qdrawhelper_arm_simd_p.h>
|
||||
#endif
|
||||
#include <private/qdrawhelper_neon_p.h>
|
||||
#ifdef QT_HAVE_MIPS_DSP
|
||||
#include <private/qdrawhelper_mips_dsp_p.h>
|
||||
#endif
|
||||
#include <private/qmath_p.h>
|
||||
#include <qmath.h>
|
||||
|
||||
@ -55,18 +58,6 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
#define MASK(src, a) src = BYTE_MUL(src, a)
|
||||
|
||||
#if defined(Q_OS_IRIX) && defined(Q_CC_GNU) && __GNUC__ == 3 && __GNUC__ < 4 && QT_POINTER_SIZE == 8
|
||||
#define Q_IRIX_GCC3_3_WORKAROUND
|
||||
//
|
||||
// work around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14484
|
||||
//
|
||||
static uint gccBug(uint value) __attribute__((noinline));
|
||||
static uint gccBug(uint value)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
constants and structures
|
||||
*/
|
||||
@ -6057,6 +6048,22 @@ void qInitDrawhelperAsm()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(QT_HAVE_MIPS_DSP)
|
||||
functionForMode_C[QPainter::CompositionMode_SourceOver] = comp_func_SourceOver_asm_mips_dsp;
|
||||
functionForMode_C[QPainter::CompositionMode_Source] = comp_func_Source_mips_dsp;
|
||||
|
||||
qt_memfill32 = qt_memfill32_asm_mips_dsp;
|
||||
|
||||
qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_mips_dsp;
|
||||
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_mips_dsp;
|
||||
qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_mips_dsp;
|
||||
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_mips_dsp;
|
||||
|
||||
destFetchProc[QImage::Format_ARGB32] = qt_destFetchARGB32_mips_dsp;
|
||||
|
||||
destStoreProc[QImage::Format_ARGB32] = qt_destStoreARGB32_mips_dsp;
|
||||
|
||||
#endif // QT_HAVE_MIPS_DSP
|
||||
if (functionForModeSolidAsm) {
|
||||
const int destinationMode = QPainter::CompositionMode_Destination;
|
||||
functionForModeSolidAsm[destinationMode] = functionForModeSolid_C[destinationMode];
|
||||
|
176
src/gui/painting/qdrawhelper_mips_dsp.cpp
Normal file
176
src/gui/painting/qdrawhelper_mips_dsp.cpp
Normal file
@ -0,0 +1,176 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <private/qdrawhelper_p.h>
|
||||
#include <private/qdrawhelper_mips_dsp_p.h>
|
||||
#include <private/qpaintengine_raster_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#if defined(QT_HAVE_MIPS_DSP)
|
||||
|
||||
extern "C" uint INTERPOLATE_PIXEL_255_asm_mips_dsp(uint x, uint a, uint y, uint b);
|
||||
|
||||
extern "C" uint BYTE_MUL_asm_mips_dsp(uint x, uint a);
|
||||
|
||||
extern "C" uint * destfetchARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length);
|
||||
|
||||
extern "C" uint * qt_destStoreARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length);
|
||||
|
||||
#if defined(QT_HAVE_MIPS_DSPR2)
|
||||
|
||||
extern "C" uint INTERPOLATE_PIXEL_255_asm_mips_dspr2(uint x, uint a, uint y, uint b);
|
||||
|
||||
extern "C" uint BYTE_MUL_asm_mips_dspr2(uint x, uint a);
|
||||
|
||||
#endif // QT_HAVE_MIPS_DSPR2
|
||||
|
||||
void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha)
|
||||
|
||||
{
|
||||
#ifdef QT_DEBUG_DRAW
|
||||
fprintf(stdout,
|
||||
"qt_blend_argb32_on_argb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
|
||||
destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
const uint *src = (const uint *) srcPixels;
|
||||
uint *dst = (uint *) destPixels;
|
||||
if (const_alpha == 256) {
|
||||
for (int y=0; y<h; ++y) {
|
||||
for (int x=0; x<w; ++x) {
|
||||
uint s = src[x];
|
||||
if (s >= 0xff000000)
|
||||
dst[x] = s;
|
||||
else if (s != 0)
|
||||
#if !defined(QT_HAVE_MIPS_DSPR2)
|
||||
dst[x] = s + BYTE_MUL_asm_mips_dsp(dst[x], qAlpha(~s));
|
||||
#else
|
||||
dst[x] = s + BYTE_MUL_asm_mips_dspr2(dst[x], qAlpha(~s));
|
||||
#endif
|
||||
}
|
||||
dst = (quint32 *)(((uchar *) dst) + dbpl);
|
||||
src = (const quint32 *)(((const uchar *) src) + sbpl);
|
||||
}
|
||||
} else if (const_alpha != 0) {
|
||||
const_alpha = (const_alpha * 255) >> 8;
|
||||
for (int y=0; y<h; ++y) {
|
||||
for (int x=0; x<w; ++x) {
|
||||
#if !defined(QT_HAVE_MIPS_DSPR2)
|
||||
uint s = BYTE_MUL_asm_mips_dsp(src[x], const_alpha);
|
||||
dst[x] = s + BYTE_MUL_asm_mips_dsp(dst[x], qAlpha(~s));
|
||||
#else
|
||||
uint s = BYTE_MUL_asm_mips_dspr2(src[x], const_alpha);
|
||||
dst[x] = s + BYTE_MUL_asm_mips_dspr2(dst[x], qAlpha(~s));
|
||||
#endif
|
||||
}
|
||||
dst = (quint32 *)(((uchar *) dst) + dbpl);
|
||||
src = (const quint32 *)(((const uchar *) src) + sbpl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha)
|
||||
{
|
||||
#ifdef QT_DEBUG_DRAW
|
||||
fprintf(stdout,
|
||||
"qt_blend_rgb32_on_rgb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
|
||||
destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
if (const_alpha != 256) {
|
||||
qt_blend_argb32_on_argb32_mips_dsp(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
|
||||
return;
|
||||
}
|
||||
|
||||
const uint *src = (const uint *) srcPixels;
|
||||
uint *dst = (uint *) destPixels;
|
||||
int len = w * 4;
|
||||
for (int y=0; y<h; ++y) {
|
||||
memcpy(dst, src, len);
|
||||
dst = (quint32 *)(((uchar *) dst) + dbpl);
|
||||
src = (const quint32 *)(((const uchar *) src) + sbpl);
|
||||
}
|
||||
}
|
||||
|
||||
void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
|
||||
{
|
||||
if (const_alpha == 255) {
|
||||
::memcpy(dest, src, length * sizeof(uint));
|
||||
} else {
|
||||
int ialpha = 255 - const_alpha;
|
||||
for (int i = 0; i < length; ++i) {
|
||||
#if !defined(QT_HAVE_MIPS_DSPR2)
|
||||
dest[i] = INTERPOLATE_PIXEL_255_asm_mips_dsp(src[i], const_alpha, dest[i], ialpha);
|
||||
#else
|
||||
dest[i] = INTERPOLATE_PIXEL_255_asm_mips_dspr2(src[i], const_alpha, dest[i], ialpha);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer,
|
||||
QRasterBuffer *rasterBuffer,
|
||||
int x, int y, int length)
|
||||
{
|
||||
const uint *data = (const uint *)rasterBuffer->scanLine(y) + x;
|
||||
buffer = destfetchARGB32_asm_mips_dsp(buffer, data, length);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y,
|
||||
const uint *buffer, int length)
|
||||
{
|
||||
uint *data = (uint *)rasterBuffer->scanLine(y) + x;
|
||||
qt_destStoreARGB32_asm_mips_dsp(data, buffer, length);
|
||||
}
|
||||
|
||||
#endif // QT_HAVE_MIPS_DSP
|
||||
|
||||
QT_END_NAMESPACE
|
424
src/gui/painting/qdrawhelper_mips_dsp_asm.S
Normal file
424
src/gui/painting/qdrawhelper_mips_dsp_asm.S
Normal file
@ -0,0 +1,424 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qt_mips_asm_dsp.h"
|
||||
|
||||
LEAF_MIPS_DSP(INTERPOLATE_PIXEL_255_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - uint x (First value to multiply)
|
||||
* a1 - uint a (Multiplicator byte for first value)
|
||||
* a2 - uint y (Second value to multiply)
|
||||
* a3 - uint b (Multiplicator byte for second value)
|
||||
*/
|
||||
|
||||
.set reorder
|
||||
li t4, 8388736
|
||||
preceu.ph.qbra t0, a0 /* (x & 0xff00ff) */
|
||||
mul t0, t0, a1 /* (x & 0xff00ff) * a */
|
||||
preceu.ph.qbra t1, a2 /* (y & 0xff00ff) */
|
||||
mul t1, t1, a3 /* (y & 0xff00ff) * b */
|
||||
addu t0, t0, t1 /* (x & 0xff00ff) * a +
|
||||
* (y & 0xff00ff) * b
|
||||
*/
|
||||
preceu.ph.qbla t1, t0 /* (t >> 8) & 0xff00ff */
|
||||
addu t0, t0, t1 /* t + ((t >> 8) & 0xff00ff */
|
||||
addu t0, t0, t4 /* t + ((t >> 8) & 0xff00ff) + 0x800080 */
|
||||
preceu.ph.qbla t0, t0 /* t >> 8 and t&=0xff00ff */
|
||||
preceu.ph.qbla t2, a0 /* (x>>8) & 0xff00ff */
|
||||
mul t2, t2, a1 /* ((x>>8) & 0xff00ff) * a */
|
||||
preceu.ph.qbla t3, a2 /* ((y>>8) & 0xff00ff) */
|
||||
mul t3, t3, a3 /* ((y>>8) & 0xff00ff) * b */
|
||||
addu t2, t2, t3 /* ((x>>8) & 0xff00ff) * a +
|
||||
* ((y >> 8) & 0xff00ff) * b
|
||||
*/
|
||||
preceu.ph.qbla t3, t2 /* (x>>8) & 0xff00ff */
|
||||
addu t2, t2, t3 /* (x>>8) & 0xff00ff) + 0x800080 */
|
||||
addu t2, t2, t4 /* x + ((x>>8) & 0xff00ff) + 0x800080 */
|
||||
and t2, t2, 0xff00ff00
|
||||
or t1, t0, t2
|
||||
move v0, t1
|
||||
j ra
|
||||
|
||||
END(INTERPOLATE_PIXEL_255_asm_mips_dsp)
|
||||
|
||||
LEAF_MIPS_DSP(BYTE_MUL_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - uint x (Value to multiply)
|
||||
* a1 - uint a (Multiplicator byte)
|
||||
*/
|
||||
|
||||
.set reorder
|
||||
replv.ph a1, a1 /* a1 = 0x00a00a */
|
||||
li t4, 8388736 /* t4 = 0x800080 */
|
||||
muleu_s.ph.qbl t0, a0, a1
|
||||
muleu_s.ph.qbr t2, a0, a1
|
||||
preceu.ph.qbla t1, t0
|
||||
addu t0, t0, t1
|
||||
addu t0, t0, t4
|
||||
preceu.ph.qbla t3, t2
|
||||
addu t2, t2, t3
|
||||
addu t2, t2, t4
|
||||
precrq.qb.ph t4, t0, t2
|
||||
move v0, t4
|
||||
j ra
|
||||
|
||||
END(BYTE_MUL_asm_mips_dsp)
|
||||
|
||||
LEAF_MIPS_DSP(destfetchARGB32_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - buffer address (dst)
|
||||
* a1 - data address (src)
|
||||
* a2 - length
|
||||
*/
|
||||
|
||||
beqz a2, 2f
|
||||
move v0, a0 /* just return the address of buffer
|
||||
* for storing returning values */
|
||||
move v0, a0
|
||||
andi t1, a2, 0x1
|
||||
li t7, 8388736 /* t7 = 0x800080 */
|
||||
beqz t1, 1f
|
||||
nop
|
||||
lw t8, 0(a1)
|
||||
addiu a2, a2, -1
|
||||
srl t6, t8, 24 /* t6 = alpha */
|
||||
|
||||
preceu.ph.qbra t0, t8
|
||||
mul t1, t0, t6
|
||||
preceu.ph.qbla t4, t8
|
||||
mul t5, t4, t6
|
||||
|
||||
preceu.ph.qbla t2, t1
|
||||
addq.ph t3, t1, t2
|
||||
addq.ph t3, t3, t7
|
||||
preceu.ph.qbla t1, t3 /* t1 holds R & B blended with alpha
|
||||
* | 0 | dRab | 0 | dBab | */
|
||||
preceu.ph.qbla t2, t5
|
||||
addq.ph t3, t2, t5
|
||||
addq.ph t4, t3, t7
|
||||
preceu.ph.qbla t2, t4 /* t2 holds A & G blended with alpha
|
||||
* | 0 | dAab | 0 | dGab | */
|
||||
andi t2, t2, 255 /* t2 = 0xff */
|
||||
|
||||
sll t0, t6, 24
|
||||
sll t3, t2, 8
|
||||
or t4, t0, t3
|
||||
or t0, t1, t4
|
||||
sw t0, 0(a0)
|
||||
addiu a0, a0, 4
|
||||
addiu a1, a1, 4
|
||||
beqz a2, 2f /* there was only one member */
|
||||
nop
|
||||
1:
|
||||
lw t0, 0(a1) /* t0 = src1 */
|
||||
lw t1, 4(a1) /* t1 = src2 */
|
||||
precrq.qb.ph t4, t0, t1 /* t4 = a1 G1 a2 G2 */
|
||||
preceu.ph.qbra t3, t4 /* t3 = 0 G1 0 G2 */
|
||||
preceu.ph.qbla t2, t4 /* t2 = | 0 | a1 | 0 | a2 | */
|
||||
srl t5, t2, 8
|
||||
or t8, t2, t5 /* t8 = 0 a1 a1 a2 */
|
||||
muleu_s.ph.qbr t5, t8, t3
|
||||
|
||||
addiu a2, a2, -2
|
||||
addiu a1, a1, 8
|
||||
precrq.ph.w t9, t0, t1
|
||||
preceu.ph.qbra t9, t9
|
||||
|
||||
preceu.ph.qbla t6, t5
|
||||
addq.ph t5, t5, t6
|
||||
addq.ph t2, t5, t7
|
||||
muleu_s.ph.qbr t6, t8, t9
|
||||
sll t3, t1, 16
|
||||
packrl.ph t3, t0, t3
|
||||
preceu.ph.qbra t3, t3
|
||||
muleu_s.ph.qbr t8, t8, t3
|
||||
preceu.ph.qbla t3, t6
|
||||
addq.ph t3, t6, t3
|
||||
addq.ph t3, t3, t7
|
||||
preceu.ph.qbla t5, t8
|
||||
addq.ph t5, t8, t5
|
||||
addq.ph t5, t5, t7
|
||||
|
||||
precrq.ph.w t0, t4, t3 /* t0 = | 0 | a1 | 0 | dR1 | */
|
||||
precrq.ph.w t1, t2, t5 /* t1 = | 0 | dG1 | 0 | dB1 | */
|
||||
precrq.qb.ph t6, t0, t1 /* t6 = | a1 | dR1 | dG1 | dB1 | */
|
||||
sll t3, t3, 16
|
||||
sll t5, t5, 16
|
||||
packrl.ph t0, t4, t3
|
||||
packrl.ph t1, t2, t5
|
||||
precrq.qb.ph t8, t0, t1 /* t8 = | a2 | dR2 | dG2 | dB2 | */
|
||||
sw t6, 0(a0)
|
||||
sw t8, 4(a0)
|
||||
bnez a2, 1b
|
||||
addiu a0, a0, 8
|
||||
2:
|
||||
j ra
|
||||
nop
|
||||
|
||||
END(destfetchARGB32_asm_mips_dsp)
|
||||
|
||||
LEAF_MIPS_DSP(qt_memfill32_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - destination address (dst)
|
||||
* a1 - value
|
||||
* a2 - count
|
||||
*/
|
||||
|
||||
beqz a2, 5f
|
||||
nop
|
||||
li t8, 8
|
||||
andi t0, a2, 0x7 /* t0 holds how many counts exceeds 8 */
|
||||
beqzl t0, 2f /* count is multiple of 8 (8, 16, 24, ....) */
|
||||
addiu a2, a2, -8
|
||||
subu a2, a2, t0
|
||||
1:
|
||||
sw a1, 0(a0)
|
||||
addiu t0, t0, -1
|
||||
bnez t0, 1b
|
||||
addiu a0, a0, 4
|
||||
bgeu a2, t8, 2f
|
||||
addiu a2, a2, -8
|
||||
b 5f
|
||||
nop
|
||||
2:
|
||||
beqz a2, 4f
|
||||
nop
|
||||
3:
|
||||
pref 30, 32(a0)
|
||||
addiu a2, a2, -8
|
||||
sw a1, 0( a0)
|
||||
sw a1, 4(a0)
|
||||
sw a1, 8(a0)
|
||||
sw a1, 12(a0)
|
||||
addiu a0, a0, 32
|
||||
sw a1, -16(a0)
|
||||
sw a1, -12(a0)
|
||||
sw a1, -8(a0)
|
||||
bnez a2, 3b
|
||||
sw a1, -4(a0)
|
||||
4:
|
||||
sw a1, 0(a0)
|
||||
sw a1, 4(a0)
|
||||
sw a1, 8(a0)
|
||||
sw a1, 12(a0)
|
||||
addiu a0, a0, 32
|
||||
sw a1, -16(a0)
|
||||
sw a1, -12(a0)
|
||||
sw a1, -8(a0)
|
||||
sw a1, -4(a0)
|
||||
5:
|
||||
jr ra
|
||||
nop
|
||||
|
||||
END(qt_memfill32_asm_mips_dsp)
|
||||
|
||||
LEAF_MIPS_DSP(comp_func_SourceOver_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - uint *dest
|
||||
* a1 - const uint *src
|
||||
* a2 - int length
|
||||
* a3 - uint const_alpha
|
||||
*/
|
||||
|
||||
beqz a2, 5f
|
||||
nop
|
||||
li t8, 0xff
|
||||
li t7, 8388736 /* t7 = 0x800080 */
|
||||
bne a3, t8, 4f
|
||||
nop
|
||||
|
||||
/* part where const_alpha = 255 */
|
||||
b 2f
|
||||
nop
|
||||
1:
|
||||
addiu a0, a0, 4
|
||||
addiu a2, a2, -1
|
||||
beqz a2, 5f
|
||||
nop
|
||||
2:
|
||||
lw t0, 0(a1) /* t0 = s = src[i] */
|
||||
addiu a1, a1, 4
|
||||
nor t1, t0, zero
|
||||
srl t1, t1, 24 /* t1 = ~qAlpha(s) */
|
||||
bnez t1, 3f
|
||||
nop
|
||||
sw t0, 0(a0) /* dst[i] = src[i] */
|
||||
addiu a2, a2, -1
|
||||
bnez a2, 2b
|
||||
addiu a0, a0, 4
|
||||
b 5f
|
||||
nop
|
||||
3:
|
||||
beqz t0, 1b
|
||||
nop
|
||||
|
||||
lw t4, 0(a0)
|
||||
replv.ph t6, t1
|
||||
muleu_s.ph.qbl t2, t4, t6
|
||||
muleu_s.ph.qbr t3, t4, t6
|
||||
addiu a2, a2, -1
|
||||
preceu.ph.qbla t4, t2
|
||||
addq.ph t4, t2, t4
|
||||
addq.ph t4, t4, t7
|
||||
preceu.ph.qbla t5, t3
|
||||
addq.ph t5, t5, t3
|
||||
addq.ph t5, t5, t7
|
||||
precrq.qb.ph t8, t4, t5 /* t8 = | dsA | dsR | dsG | dsB | */
|
||||
addu t8, t0, t8 /* dst[i] =
|
||||
* s + BYTE_MUL(dst[i],~qAlpha(s)) */
|
||||
sw t8, 0(a0)
|
||||
bnez a2, 2b
|
||||
addiu a0, a0, 4
|
||||
b 5f
|
||||
nop
|
||||
4:
|
||||
lw t0, 0(a0) /* t0 - dst[i] "1" */
|
||||
lw t1, 0(a1) /* t1 - src[i] "2" */
|
||||
addiu a1, a1, 4
|
||||
addiu a2, a2, -1
|
||||
replv.ph t6, a3 /* a1 = 0x00a00a */
|
||||
muleu_s.ph.qbl t2, t1, t6
|
||||
muleu_s.ph.qbr t3, t1, t6
|
||||
preceu.ph.qbla t4, t2
|
||||
addq.ph t4, t2, t4
|
||||
addq.ph t4, t4, t7
|
||||
preceu.ph.qbla t5, t3
|
||||
addq.ph t5, t5, t3
|
||||
addq.ph t5, t5, t7
|
||||
precrq.qb.ph t8, t4, t5 /* t8 = | dsA | dsR | dsG | dsB | */
|
||||
|
||||
nor t6, t8, zero
|
||||
srl t6, t6, 24
|
||||
replv.ph t6, t6
|
||||
|
||||
muleu_s.ph.qbl t2, t0, t6
|
||||
muleu_s.ph.qbr t3, t0, t6
|
||||
preceu.ph.qbla t4, t2
|
||||
addq.ph t4, t2, t4
|
||||
addq.ph t4, t4, t7
|
||||
preceu.ph.qbla t5, t3
|
||||
addq.ph t5, t5, t3
|
||||
addq.ph t5, t5, t7
|
||||
precrq.qb.ph t6, t4, t5 /* t6 = | ddA | ddR | ddG | ddB | */
|
||||
|
||||
addu t0, t8, t6
|
||||
sw t0, 0(a0)
|
||||
bnez a2, 4b
|
||||
addiu a0, a0, 4
|
||||
5:
|
||||
jr ra
|
||||
nop
|
||||
|
||||
END(comp_func_SourceOver_asm_mips_dsp)
|
||||
|
||||
LEAF_MIPS_DSP(qt_destStoreARGB32_asm_mips_dsp)
|
||||
/*
|
||||
* a0 - uint * data
|
||||
* a1 - const uint *buffer
|
||||
* a2 - int length
|
||||
*/
|
||||
|
||||
blez a2, 6f
|
||||
move v1, zero
|
||||
li t0, 255
|
||||
lui a3, 0xff
|
||||
j 2f
|
||||
lui t2, 0xff00
|
||||
1:
|
||||
addiu v1, v1, 1
|
||||
sw zero, 0(a0)
|
||||
addiu a1, a1, 4
|
||||
beq v1, a2, 6f
|
||||
addiu a0, a0, 4
|
||||
2:
|
||||
lw v0, 0(a1)
|
||||
srl t3, v0, 0x18
|
||||
beql t3, t0, 5f
|
||||
addiu v1, v1, 1
|
||||
beqz t3, 1b
|
||||
|
||||
srl t1, v0, 0x8
|
||||
andi t1, t1, 0xff
|
||||
|
||||
teq t3, zero, 0x7
|
||||
div zero, a3, t3
|
||||
move t8, t3
|
||||
andi t6, v0, 0xff
|
||||
|
||||
srl t3,v0,0x10
|
||||
andi t3,t3,0xff
|
||||
|
||||
and t5, v0, t2
|
||||
mflo t4
|
||||
|
||||
mult $ac0, t4, t6
|
||||
mult $ac1, t1, t4
|
||||
mul t4, t3, t4
|
||||
|
||||
sltiu t8, t8, 2
|
||||
beqz t8, 3f
|
||||
nop
|
||||
mflo t6, $ac0
|
||||
mflo t1, $ac1
|
||||
sra t6, t6, 0x10
|
||||
sra t1, t1, 0x8
|
||||
b 4f
|
||||
nop
|
||||
3:
|
||||
extr.w t6, $ac0, 0x10
|
||||
extr.w t1, $ac1, 0x8
|
||||
4:
|
||||
and v0, t4, a3
|
||||
or v0, v0, t6
|
||||
or v0, v0, t5
|
||||
andi t1, t1, 0xff00
|
||||
or v0, v0, t1
|
||||
addiu v1, v1, 1
|
||||
5:
|
||||
sw v0, 0(a0)
|
||||
addiu a1, a1, 4
|
||||
bne v1, a2, 2b
|
||||
addiu a0, a0, 4
|
||||
6:
|
||||
jr ra
|
||||
nop
|
||||
|
||||
END(qt_destStoreARGB32_asm_mips_dsp)
|
@ -1,9 +1,9 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the tools applications of the Qt Toolkit.
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
@ -39,61 +39,40 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
pagegenerator.h
|
||||
*/
|
||||
#ifndef QDRAWHELPER_MIPS_P_H
|
||||
#define QDRAWHELPER_MIPS_P_H
|
||||
|
||||
#ifndef PAGEGENERATOR_H
|
||||
#define PAGEGENERATOR_H
|
||||
|
||||
#include <QStack>
|
||||
#include <qtextstream.h>
|
||||
#include "generator.h"
|
||||
#include "location.h"
|
||||
#include <private/qdrawhelper_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QTextCodec;
|
||||
class ClassNode;
|
||||
class InnerNode;
|
||||
class NamespaceNode;
|
||||
class NameCollisionNode;
|
||||
#if defined(QT_HAVE_MIPS_DSP)
|
||||
|
||||
class PageGenerator : public Generator
|
||||
{
|
||||
public:
|
||||
PageGenerator();
|
||||
~PageGenerator();
|
||||
extern "C" void qt_memfill32_asm_mips_dsp(quint32 *dest, quint32 value, int count);
|
||||
|
||||
virtual void generateTree(const Tree *tree);
|
||||
virtual void generateDisambiguationPages() { }
|
||||
extern "C" void comp_func_SourceOver_asm_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
|
||||
|
||||
protected:
|
||||
virtual QString fileBase(const Node* node) const;
|
||||
virtual QString fileExtension(const Node* node) const = 0;
|
||||
QString fileName(const Node* node) const;
|
||||
QString outFileName();
|
||||
virtual void beginSubPage(const InnerNode* node, const QString& fileName);
|
||||
virtual void endSubPage();
|
||||
virtual void generateInnerNode(const InnerNode *node);
|
||||
QTextStream& out();
|
||||
void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
|
||||
QString naturalLanguage;
|
||||
QString outputEncoding;
|
||||
QTextCodec* outputCodec;
|
||||
bool parseArg(const QString& src,
|
||||
const QString& tag,
|
||||
int* pos,
|
||||
int n,
|
||||
QStringRef* contents,
|
||||
QStringRef* par1 = 0,
|
||||
bool debug = false);
|
||||
void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
|
||||
protected:
|
||||
QStack<QTextStream*> outStreamStack;
|
||||
QList<NameCollisionNode*> collisionNodes;
|
||||
};
|
||||
void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
|
||||
|
||||
uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer,
|
||||
QRasterBuffer *rasterBuffer,
|
||||
int x, int y, int length);
|
||||
|
||||
void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y,
|
||||
const uint *buffer, int length);
|
||||
|
||||
#endif // QT_HAVE_MIPS_DSP
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif
|
||||
#endif // QDRAWHELPER_MIPS_P_H
|
95
src/gui/painting/qdrawhelper_mips_dspr2_asm.S
Normal file
95
src/gui/painting/qdrawhelper_mips_dspr2_asm.S
Normal file
@ -0,0 +1,95 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qt_mips_asm_dsp.h"
|
||||
|
||||
LEAF_MIPS_DSPR2(INTERPOLATE_PIXEL_255_asm_mips_dspr2)
|
||||
/*
|
||||
* a0 - uint x (First value to multiply)
|
||||
* a1 - uint a (Multiplicator byte for first value)
|
||||
* a2 - uint y (Second value to multiply)
|
||||
* a3 - uint b (Multiplicator byte for second value)
|
||||
*/
|
||||
|
||||
.set reorder
|
||||
replv.ph a1, a1
|
||||
replv.ph a3, a3
|
||||
li t8, 8388736
|
||||
muleu_s.ph.qbl t0, a0, a1
|
||||
muleu_s.ph.qbl t1, a2, a3
|
||||
muleu_s.ph.qbr t2, a0, a1
|
||||
muleu_s.ph.qbr t3, a2, a3
|
||||
addu.ph t4, t0, t1
|
||||
addu.ph t5, t2, t3
|
||||
preceu.ph.qbla t0, t4
|
||||
addu t1, t0, t8
|
||||
addu t1, t4, t1
|
||||
preceu.ph.qbla t6, t5
|
||||
addu t7, t6, t8
|
||||
addu t7, t5, t7
|
||||
precrq.qb.ph t2, t1, t7
|
||||
move v0, t2
|
||||
j ra
|
||||
|
||||
END(INTERPOLATE_PIXEL_255_asm_mips_dspr2)
|
||||
|
||||
LEAF_MIPS_DSPR2(BYTE_MUL_asm_mips_dspr2)
|
||||
/*
|
||||
* a0 - uint x (Value to multiply)
|
||||
* a1 - uint a (Multiplicator byte)
|
||||
*/
|
||||
|
||||
.set reorder
|
||||
replv.ph a1, a1 /* a1 = 0x00a00a */
|
||||
li t4, 8388736 /* t4 = 0x800080 */
|
||||
muleu_s.ph.qbl t0, a0, a1
|
||||
muleu_s.ph.qbr t2, a0, a1
|
||||
preceu.ph.qbla t1, t0
|
||||
addu t0, t0, t1
|
||||
addu t0, t0, t4
|
||||
preceu.ph.qbla t3, t2
|
||||
addu t2, t2, t3
|
||||
addu t2, t2, t4
|
||||
precrq.qb.ph t4, t0, t2
|
||||
move v0, t4
|
||||
j ra
|
||||
|
||||
END(BYTE_MUL_asm_mips_dspr2)
|
@ -870,7 +870,7 @@ void QPaintEngineEx::drawPoints(const QPointF *points, int pointCount)
|
||||
}
|
||||
} else {
|
||||
for (int i=0; i<pointCount; ++i) {
|
||||
qreal pts[] = { points[i].x(), points[i].y(), points[i].x() + 1/63., points[i].y() };
|
||||
qreal pts[] = { points[i].x(), points[i].y(), points[i].x() + qreal(1/63.), points[i].y() };
|
||||
QVectorPath path(pts, 2, 0);
|
||||
stroke(path, pen);
|
||||
}
|
||||
|
@ -2399,7 +2399,7 @@ QDataStream &operator>>(QDataStream &s, QPainterPath &p)
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
QPainterPath::Element elm = { x, y, QPainterPath::ElementType(type) };
|
||||
QPainterPath::Element elm = { qreal(x), qreal(y), QPainterPath::ElementType(type) };
|
||||
p.d_func()->elements.append(elm);
|
||||
}
|
||||
s >> p.d_func()->cStart;
|
||||
|
@ -268,7 +268,7 @@ inline void QPainterPathData::maybeMoveTo()
|
||||
}
|
||||
}
|
||||
|
||||
#define KAPPA 0.5522847498
|
||||
#define KAPPA qreal(0.5522847498)
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user