Merge "Merge master into api_changes" into refs/staging/api_changes
commit
425b38ef95
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
|||
Copyright (c) 2000 XFree86, Inc.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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 $
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
@ -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 $
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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